220 likes | 354 Views
§ 3.4 算术运算 类指令. 一、 加法指令. 1. 不带 CY 加法指令 (4条). ; A ( A)+(Rn). ADD. A,Rn. ;A ( A)+(direct). ADD. A,direct. ADD. A,@Ri. ;A ( A)+((Ri)). ADD. A,#data. ; A ( A)+ data. 功能:将源操作数所找到的数与累加器 A 中的值相加 , 其结果存放在累加器 A 中。. 加法运算对标志位的影响:. ( 1 ) CY------- 在加法运算中,如果 D7 位向上有进位, 则 CY=1,
E N D
§ 3.4 算术运算类指令 一、 加法指令 1.不带CY加法指令(4条) ;A(A)+(Rn) ADD A,Rn ;A(A)+(direct) ADD A,direct ADD A,@Ri ;A(A)+((Ri)) ADD A,#data ;A(A)+ data 功能:将源操作数所找到的数与累加器A中的值相加, 其结果存放在累加器A中。
加法运算对标志位的影响: (1)CY-------在加法运算中,如果D7位向上有进位,则CY=1, 否则CY=0。 (2)AC-----在加法运算中,如果D3位向上有进位,则AC=1, 否则 AC=0。 (3)OV-----在加法运算中,如果D7或D6只有一个向上有进位, 则OV=1,否则 OV=0。 (4)P ——奇偶标志;A中1的个数为奇数P = 1;P = 0。
【例】(A)=85H,(R0)=20H,(20H)=0AFH,执行指令:【例】(A)=85H,(R0)=20H,(20H)=0AFH,执行指令: ADD A,@R0 1 0 0 0 0 1 0 1 + 1 0 1 0 1 1 1 1 1 0 0 1 1 0 1 0 0 结果:(A)=34H;CY=1;AC=1;OV=1。 对于加法,在进行带符号数的加法运算时,溢出标志OV=1,则表示计算结果出错。
2.带CY加法指令(4条) A,Rn ;A(A)+(Rn)+(Cy) ADDC A,direct ADDC ;A(A)+(direct)+(Cy) ADDC A,@Ri ;A(A)+((Ri))+(Cy) ADDC A,#data ;A(A)+ data+(Cy) 功能:将源操作数所找到的数与累加器A中的值及进位 标志位相加,其结果存放在累加器A中。
说明: 此处的CY是该指令执行前已经存在的进位标志位值 对标志位的影响同ADD 主要应用在多字节的加法中
【例】(A)=85H,(20H)=0FFH,CY=1执行指令: ADDC A,20H 10000101 11111111 1 10000100 结果:(A)=84H;CY=1;AC=1;OV=0。
【例】书上P45页3-10 设有两个无符号16位二进制数,分别放在30H、31H单元和 40H和41H单元中(低八位先存),写出两个16位数的加法程序,将和存入50H、51H单元中(设和不超过16位)。 解: MOV A,30H ADD A,40H MOV 50H,A MOV A,31H MOV A,41H MOV 51H,A
3.增量指令(加1指令) INC A ;A(A)+1 INC Rn ;Rn (Rn)+1 INC direct ;direct (direct)+1 INC @Ri ;(Ri)((Ri))+1 INC DPTR ;DPTR (DPTR)+1 功能:将操作数所指定的单元的内容加一。 加1指令涉及 A时,会影响P,但不影响其他标志位。
【例】(A)=12H,(R3)=0FH,(35H)=4AH, (R0)=56H,(56H)=00H 执行如下指令: INCA ;执行后(A)=13H INCR3;执行后(R3)=10H INC35H ;执行后(35H)=4BH INC @R0;执行后(56H)=01H
4.十进制调整指令 DA A 应用:执行该指令时,只要将该指令放在加法指令后,其就会自动调整。 具体: 判断A中的低4位是否大于9或CY=1,若满足大于则低4位做加6操作; 同样,A中的高4位大于9,或CY=1,则高4位加6操作。
例如:有两个BCD数36与45相加,结果应为BCD码81,程序如下:例如:有两个BCD数36与45相加,结果应为BCD码81,程序如下: MOV A,#36H ADD A,#45H ;得结果7BH DA A ; 81H 第三条指令对累加器A进行十进制调整,低4位(为0BH)大于9,因此要加6,最后得到调整的BCD码81。
注意: 该指令只能用在加法指令后 减法没有专用的十进制调整指令,可用加 (减数的补数)该指令 例:求80-20的BCD码运算 1.减数的补数:100-20 2.可以用:80+(100-20)=160 3.去掉进位标志来代替
二、 减法指令(4条) 1.带进位减法指令 SUBB A,Rn ;A(A)-(Rn)-(CY) SUBB A,direct ;A(A)-(direct)-(CY) SUBB A,@Ri ;A(A)-((Ri))-(CY) SUBB A,#data ;A(A)-data-(CY) 功能:将累加器A中的值减去源操作数和进位位CY,其结果存放在累加器A中。
注意: CY为该指令执行之前已经存在的标志位; 减法指令只有带进位的减法,不带进位的减法可令CY=0。
加法运算对标志位的影响: CY-------在减法运算中,如果D7位向上须借位,则CY=1, 否则CY=0。 AC-----在减法运算中,如果D3位向上须借位,则AC=1, 否则 AC=0 。 OV-----在减法运算中,如果D7或D6只有一个向上须借则OV=1,否则D7和D6同时无借位 OV=0 P ——奇偶标志;A中1的个数为奇数 P = 1; 否则 P = 0。
2.减1指令 DEC A ;A(A)-1 DEC Rn ;Rn(Rn)-1 DEC direct ;direct(direct)-1 DEC @Ri ;(Ri)((Ri))-1 功能:将操作数所指定的单元的内容减一。 减1指令涉及 A时,会影响P,但不影响其他标志位。
三.乘法指令 乘法指令完成单字节的乘法,只有一条指令: MUL AB; A×B→BA 功能:将累加器A和寄存器B中两个8位的无符号数相乘,所得的16位的积低8位放在A中,高8位放在B中。
乘法指令影响3个标志位: (1)若乘积小于FFH(B的内容为零),则0V=0,否则OV=1 (2)CY总为零 (3)奇偶标志位P仍按类加器A中1的奇偶性来确定
【例】(A)=50H,(B)=31H,执行指令: MUL AB 结果:(B)=0FH,(A)=50H(即乘积为3200H) (CY)=0, (OV)=1。
四、除法指令 除法指令完成单字节的除法,只有一条指令: DIV AB ;功能:(A÷B) 商→A, 余数→B 这条指令的功能是: 对两个8位无符号数进行除法运算,其中被除数放在累加器A中,除数放在B中。执行指令后,商放在累加器A中,余数放在B中。
除法指令影响3个标志位: (1)若除数为零(B=0)时,OV=1,表示除法没有意义;若除数不为零,则OV=0 (2)CY总为零 (3)奇偶标志位P仍按类加器A中1的奇偶性来确定
算术运算类指令包括:ADD、ADDC、SUBB、MUL、DIV、算术运算类指令包括:ADD、ADDC、SUBB、MUL、DIV、 INC、DEC和DA,如图3.9所示。