单片机原理及应用系统设计
上QQ阅读APP看书,第一时间看更新

3.3.2 算术运算指令

算术运算指令共有24条,包括:加、减、乘、除、加1、减1和BCD运算调整指令,执行结果将影响PSW中的标志位。其操作助记符有ADD,ADDC,SUBB,DA,INC,DEC,MUL,DIV共8种。

1.加法指令8条

加法指令分为不带进位加和带进位加,运算结果将影响PSW中的Cy、AC、OV、P标志位。加法指令格式见表3-6。

表3-6 加法指令

要注意进位标志Cy和溢出标志OV的区别:对于无符号数加法,当相加结果大于255,会使Cy=1;对有符号数加法,当相加结果超出(-128~+127)范围,会使OV=C8⊕C7=1,C8、C7分别为最高位和次高位的进位。

例3-6】设A=76H,R3=66H,执行ADD A,R3指令对PSW有何影响?

指令执行后Cy=0,AC=0,OV=C8⊕C7=0⊕1=1,P=1。

如果以上作为无符号数相加,由Cy判断无进位,结果是正确的。

如果以上作为有符号数相加,2个正数相加结果是负数,结果是错误的,OV=1,所以,进行带符号数的加法运算时,溢出标志OV是一个重要的编程标志,利用它可以判断两个带符号数相加的和数是否溢出。

2.减法指令4条

MCS-51单片机的减法指令只有带借位减法指令,其格式见表3-7。

表3-7 减法指令

例3-7】设A=C9H、((R2))=54H、CY=1,分析执行SUBB A,R2指令的情况。

执行结果:A=74H,Cy=0,AC=0,OV=C8⊕C7=0⊕1=1,P=0。OV=1,说明是有符号数运算,结果发生溢出。

3.乘除法指令2条

乘、除法指令各有1条,其格式见表3-8。

表3-8 乘、除法指令

乘、除法指令完成两个单字节的乘、除运算,执行指令前,要注意在累加器A和寄存器B中放入运算数据。运算对标志位的影响是:如果乘积超过0FFH,则溢出标志OV置“1”,否则清0,进位标志Cy总是被清0;除法运算Cy、OV均为0,但除数B为0则OV=1。

4.加1减1指令9条

MCS-51单片机有5条加1指令,4条减1指令,执行不影响标志位。指令格式见表3-9。

表3-9 加1、减1指令

5.十进制调整指令1条

该指令是对累加器A中十进制数运算的结果进行BCD码调整,指令格式见表3-10。

表3-10 十进制调整指令

例3-8】求十进制数26+56运算的结果。