微型计算机原理与接口技术:算术运算指令.ppt
*2.3.5算术运算指令(P69)算术指令中有双操作数指令,也有单操作数指令。双操作数指令的两个操作数中除源操作数可为立即数外,必须有一个操作数在寄存器中。单操作数指令不允许使用立即数方式。算术运算指令涉及两种数据类型,即无符号数和有符号数。无符号二进制数将所有的数位都看成数据位,只有正数没有负数。8位无符号二进制数表示的无符号十进制数的范围为0~255,16位无符号二进制数表示的无符号十进制数的范围为0~65535。有符号二进制数将最高位定义为符号位,而数据本身用补码表示,因此,有符号数既可以表示正数,也可以表示负数。8位有符号二进制数表示的有符号十进制数的范围为-128~+127,16位有符号二进制数表示的有符号十进制数的范围为-32768~+32767。加减法运算要求两个操作数必须同为无符号数或有符号数。CF位用来表示无符号数的溢出,OF位用来表示有符号数的溢出。OF位取值的判断方法如下:OF=Cn?Cn-1对于无符号数和有符号数的加减法运算可以采用同一套指令完成,但对乘法或除法运算,则使用的不是同一套指令。2.3.6加法指令一、不带进位位的加法指令ADD指令格式为:ADDDST,SRC执行的操作:DST←SRC+DST例如:ADDAL,50H;AL中的内容和50H相加,结果放在ALADDCX,100;CX中的内容和100相加,结果在CX。ADDSI,AX;AX和SI中的内容相加,结果在SI中ADDAX,TAB[BX];(BX)+TAB偏移量为首地址的两个单元的内容和AX的内容相加,结果放在AX中。二、带进位位的加法指令ADC(AddwithCarry)指令格式为:ADCDST,SRC执行的操作:DST←SRC+DST+CF功能:将源操作数、目的操作数与进位标志CF的值相加,和送入目的操作数,其余同ADD指令。ADC指令为实现多字节的加法运算提供了方便。例如:ADCAX,SI;AX和SI中的内容以及CF的值相加,结果放在AX中。ADCDX,[SI];SI和SI+1所指的存储单元的内容和DX的内容以及CF的值相加,结果在DX中。ADCBX,300H;BX和立即数300H及CF的值相加,结果放在BX中。ADCAL,5;AL中的内容和立即数5以及CF的值相加,结果送AL中。三、操作数加1指令INC指令格式为:INCOPR执行的操作:OPR←OPR+1功能:将指令后的一个字节或一个字的操作数的值加1,再送回到该操作数。其中OPR可以是寄存器,也可以是内存单元。这条指令多用于循环程序中修改指针和循环次数。INC指令影响标志位AF、OF、PF、SF和ZF,但要特别注意它不影响进位标志CF。例如:INCAL ;将AL中的内容加1INCBYTEPTR[BX];将BX指向的内存(字节)单元内容加1INCBUF ;将内存BUF中的内容加12.3.7减法指令一、不考虑借位的减法指令SUB(subtract)指令格式为:SUBDST,SRC执行的操作:DST←DST-SRC功能:将同为一个字节或一个字的两个操作数相减,用目的操作数减去源操作数,其差存放在目的操作数中。该指令的执行影响标志位。两个无符号数相减,若CF=1说明有