欢迎来到天天文库
浏览记录
ID:52250982
大小:223.47 KB
页数:13页
时间:2020-03-25
《微机原理教案4.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章8086/8088指令系统难点和重点:寻址方式寻址方式是学习微型计算机原理的一个重要概念,要想使汇编语言程序编得好(既简短又灵活),必须掌握好微处理器指令系统中的各种寻址方式。要弄清每种寻址方式的寻址过程,并学会灵活、巧妙地应用这些寻址方式。8086/8088CPU的寻址方式十分丰富,为编程者提供了良好的条件。寻址方式十分重要,一定要以引起学生重视。并希望学生在学习8086/8088CPU指令系统之前,对寻址方式有个初步的认识和了解。1.堆栈及堆栈操作堆栈是用来存放断点地址和其它器存器内容的一组寄存器或存储单元。堆栈分硬件堆栈和软件堆栈两种。硬件堆栈
2、由CPU内部一组寄存器组成,速度快,但数量有限;软件堆栈是在RAM中开辟一个区域作堆找,速度稍慢,但堆栈的深度不受限制。目前微处理器几乎都采用软件堆栈。堆栈操作有两种:压入和弹出。堆栈操作必须遵循后进先出的规则。这一功能是借助于堆栈指示器SP来实现的。SP用来存放栈顶地址,并具有自动步进加1和减1的功能。当堆栈采用向下生成方式时,找底占用较高地址,栈顶占月较低地址。这时,对压入栈操作,首先使SP减1指向栈顶空单元,然后压入信息。对弹出栈操作,首先将SP所指栈顶单元内容弹出,再使SP加l指向新的栈顶地址。与此相反,堆找操作还有向上生成方式。2.溢出问题如果进
3、行加减运算的结果超出了数据范围,对无符号数则以CF=1来表示,而对带符号数则以OF=1来表示。在编程中应严格区分有符号数和无符号数的运算。3.各种算术运算操作对标志位的影响加法运算对于CF标志位的影响是:在相加时如果最高位有进位,则CF=1,否则CF=0,而对于减法却是相减时有借位则CF=1。这是因为在8086微机中加减法运算时的操作数均采用补码的形式表示,所有的减法运算都转化为加法运算来完成,所以减法的借位运算在补码相加过程表现为:若相加时无进位,则表示相减有借位,此时CF=1;若相加时有进位,则表示相减时无借位,此时CF=0。如执行指令SBB[BP],
4、A034H(其中[BP]=F4A2H,CF=l)过程如下:1F4A2H=1111010010100010[-A034H]补=0101111111001100[-1]补=11111111111111110101010001101101因为最高1+0+1向前有进位,所以C=0。在使用INCDEC指令时应注意它们的运算结果不影响CF标志位,对其它标志位有影响多字节(或字)的加减法8086指令系统不仅为实现8位或16位的加、减法提供相应的指令,而且为实现16位以上的多字节(或字)数相加减也提供了方便的指令。带进位加指令ADC和带借位减指令SBB就是专为实现多字节(
5、或字)数加减而提供的指令。如:若有两个4字节的无符号数相加,这两个数分别存放在2000H和3000H开始的存储单元中,得到的和存放在2000H开始的内存单元中。MOVDX,[3000H]ADD[2000H],DXMOVDX,[3002H]ADC[2002H],DXXORAX,AXDC[2004H],AX上面程序中的第一条ADD加法语句实现的就是低字相加,而第二条ADC加法语句实现的则是高字相加并加上第一个低字相加所产生的进位。按这种方法就可以完成任意多个字相加了。另外在加减运算产生溢出时,该语句还可以扩展加减运算结果范围。如:从内存的2000H单元开始存放
6、了500H个学生的成绩,要求出这些成绩的和,并将该和存放在500H开始的单元处(低位字节在先)。MOVBX,2000HXORAX,AXMOVDX,AXCLCMOVCX,500HLl:ADCAX,[BX]ADCDX,0INCBXINCBX2L00PLIMOV[500H],AXMOV[502H],Dx因500H名学生的成绩之和最大为128000,超出了一个字所能表示的最大范围,所以要用两个字来表示该累加和,每次相加都是从最低位(AX)加起,有进位才向高位(DX)进位。所以利用该指令可以将一条指令所能操作的数据的范围任意加以扩大,从而提高了运算精度。4.BCD码
7、调整指令BCD码是用二进制表示的十进制数,而加、减、乘、除指令都是完成二进制的相应运算的,利用这些指令来完成BCD码的运算结果一定是错的,因此要对该结果进行一定的修正才能得到正确的运算值。在8086指令系统中设立了专门的这类指令。对于加法的修正指令分为DAA(适用于组合BCD码)和AAA(适用非压缩BCD码或ASCⅡ码),这些指令完成的主要功能是对每一位进行加6修正,这是因为BCD码应该在每4位的相加结果>9时就产生进位,而ADD指令却是在相加结果>OFH时才产生进位。只有在每4位的和>9时才对该位进行修正,即在下面两种情况下才进行加6修正:(l)AF或C
8、F的值为1。(2)4位之和大于1001。以BCD码98+83为例:
此文档下载收益归作者所有