资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2.3.2,算术运算类指令,MCS-51,的算术运算类指令也相当丰富。与早期,的微型计算机比较,增加了乘法和除法指令,但,MCS-51,指令系统中只有,8,位数而没有,16,位数的运算指,令(但操作数可以是,16,位寄存器)。,这类指令对标志位有影响。,一、加法指令,1,、不带进位的加法指令,ADD A,,,Rn,;,A(A)+(Rn,),ADD A,,,direct,;,A(A)+(direct,),ADD A,,,Ri,;,A(A)+(Ri,),ADD A,,,#data,;,A(A)+data,注意:,两个操作数及结果均为,8,位。,参与运算的两个操作数既可以视为有符号数又可,以视为无符号数。若看做有符号数则通常采用补码,形式。,无符号数运算时,若结果超出,0,255,,可由,CY,位,判断;而带符号数运算时,结果超出,-128,+127,,,则由,OV,位判断。,例如:,(A)=C2H,,,(R0)=A9H,,执行,ADD A,,,R0,指令,1 1 0 0 0 0 1 0,+1 0 1 0 1 0 0 1,10 1 1 0 1 0 1 1,运算结果:,(A)=6BH,,,(AC)=0,,,(CY)=1,,,(OV)=1,。,若,C2H,和,A9H,是两个无符号数,则结果为,16BH,,运,算正确的;反之,若为两个带符号数,则由于有溢,出而表明结果是错误的,因为两个负数相加不可能,得到正数的和。,例,1,:执行下列指令后,确定累加器,A,和,PSW,各标志位,的状态。,MOV A,#0CFH,ADD A,#0A5H,P,OV,RS0,RS1,F0,AC,CY,PSW,0,0,1,0,0,0,1,1,(A)=74H,(PSW)=0C4H,2,、带进位的加法指令,ADDC A,,,Rn,;,A(A)+(Rn)+(CY,),ADDC A,,,direct,;,A(A)+(direct)+(CY,),ADDC A,,,Ri,;,A(A)+(Ri)+(CY,),ADDC A,,,#data,;,A(A)+data+(CY,),带进位加法运算指令常用于多字节数的加法运算。,例,:,两字节无符号数相加,被加数放在内部,RAM20H,、,21H,单元(低位在前),加数放在内部,RAM2AH,、,2BH,单元(低位在前),将和放在,20H,、,21H,单元。,CLR C,MOV A,20H,ADD A,2AH,MOV 20H,A,MOV A,21H,ADDC A,2BH,MOV 21H,A,二,、带借位减法指令组,带借位的减法指令也有四条,:,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。,减法只有带借位减法指令,而没有不带借位的减,法指令。若进行不带借位的减法运算,只需用,CLR C 指令先把进位标志位清0即可。,三、加,1,、减,1,指令组,1,、加,1,指令(增量指令),共有五条加,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,2,、减,1,指令,共有四条减,1,指令:,DEC A,;,A(A)-1,DEC,Rn,;,Rn(Rn)-1,DEC direct,;,direct(direct)-1,DEC ,Ri,;,(Ri)(Ri)-1,注意:,在这些指令中除了,INC A,和,DEC A,影响,P,标志,位,,INC DPTR,影响,CY,标准位外,其它指令都不影,响标志位。,不出现进位、借位。加满归零,减零归整。,例,:(,R0,),=7EH,,内部,RAM7EH,及,7FH,单元的内容为,0FFH,及,38H,,,DPTR,的内容为,10FEH,,则执行下列程序,后各单元的内容为什么?,INC,R0,INC R0,INC,R0,INC DPTR,INC DPTP,INC DPTR,INC,R0;(7EH)=00H,INC R0 ;(R0)=7FH,INC,R0;(7FH)=39H,INC DPTR;(DPL)=FFH,(DPH)=10H,INC DPTP;(DPL)=00H,(DPH)=11H,INC DPTR;(DPL)=01H,(DPH)=11H,四、乘法指令,MUL AB,这条指令把累加器,A,和寄存器,B,中的两个无符号,8,位数相乘,所得,16,位乘积的,低位字节放在,A,中,高,位字节放在,B,中。,五、除法指令,DIV AB,这条指令进行两个8位无符号数的除法运算,其,中,被除数置于累加器A中,除数置于寄存器B中。指,令执行后,商存于A中,余数存于B中。,例:把累加器中的二进制数转换为,3,位,BCD,数。百位,放在内部,RAM20H,单元,十位放在,21H,单元,个位放在,22H,单元。,答案:,MOV B,#100,DIV AB,MOV 20H,A,MOV A,B,MOV B,#10,DIV AB,MOV 21H,A,MOV 22H,B,六、十进制调整指令,十进制调整指令是一条专用指令,用于对,BCD,码十进制数加法运算的结果进行修正。其指令格式,为:,DA A,因为,ADD,和,ADDC,指令适用于二进制的加法运算,而不适用于十进制的加法运算。所以在对,BCD,码十,进制数进行运算后必须进行调整才能得到正确的结,果。,注意:此指令必须紧跟在,BCD,码加法指令之后。,只能对加法进行修正,减法必须转换为加,法运算后才能应用此指令。,例:编写,BCD,码,78,和,93,相加的程序。,MOV A,#78,ADD A,#93,DA A,例:设一个,BCD,数放在内部,RAM30H,31H,单元,另一个,BCD,数放在,32H,和,33H,单元。编程将两个数相加结果放,回到,30H,,,31H,单元。,MOV A,30H,ADD A,32H,DA A,MOV 30H,A,MOV A,31H,ADDC A,33H,DA A,MOV 31H,A,本节小结,算术运算指令,加法指令,减法指令,加,1,、减,1,指令,乘除指令,十进制调整指令,不带进位加法指令,带进位加法指令,注意对标志位的影响,注意存放位置,
展开阅读全文