《单片机汇编程序(算术逻辑运算).ppt》由会员分享,可在线阅读,更多相关《单片机汇编程序(算术逻辑运算).ppt(23页珍藏版)》请在金锄头文库上搜索。
1、 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术第5讲:指令系统知识目标:掌握算术逻辑运算技能目标:对P1口LED灯操作8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术3.3.2 3.3.2 算术运算指令算术运算指令1 .1 .不带进位加法指令不带进位加法指令( (四条四条) )2 .2 .带进位加法指令(四条)带进位加法指令(四条)3 .3 .带借位减法指令(四条)带借位减法指令(四条)4 .4 .乘法指令(乘法指令(1 1条)条)5 5、除法指令(、除法指令(1 1条)条)6 6、加、加1 1指令(指令(5
2、 5条)条)7 7、减、减1 1指令指令(4(4条条) )8 8、十进制调整指令、十进制调整指令(1(1条条) )Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术1 1 、 不带进位加法指令不带进位加法指令( (四条四条) )汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释ADD A, Rn; 0010 1rrr (A)+(Rn) A 将工作寄存器内容和将工作寄存器内容和 累加器累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADD A,direct; 0010 0101 (A)+(direct
3、) A 将内部将内部RAM单元内容和单元内容和 direct 累加器累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADD A,Ri; 0010 011i (A)+(Ri) A 将间接寻址将间接寻址(Ri为为R0或或R1) 所得的片内所得的片内RAM单元中内容单元中内容 和累加器和累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADD A, #data; 0010 0100 (A)+#data A 将立即数的将立即数的8位无符号二进制位无符号二进制 data 数和累加器数和累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中8
4、/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术说说明明:上上述述指指令令的的执行行将将影影响响标志志位位ACAC,CyCy,OVOV,P P。当当“和和”的的第第3 3位位或或第第7 7位位有有进位位时,分分别将将ACAC,CYCY标志志位位置置1 1,否否则为0 0。溢溢出出标志志位位OV=C7 OV=C7 + + C6C6(异异或或),该标志志位只有位只有带符号数运算符号数运算时才有用。才有用。例:若:(例:若:(A A)=78H =78H ,(,(R0R0)=64H=64H执行执行ADD AADD A,R0 R0 后,结果及后,结果及PS
5、W=PSW=? (A A):):78H= 0111 1000 B78H= 0111 1000 B + +(R0R0):):64H= 0110 0100 B64H= 0110 0100 B (A A):):DCH= 1101 1100 BDCH= 1101 1100 B标志位:标志位:CY=0CY=0, AC=0AC=0, OV=1OV=1, P=1P=1, 即即: PSW=05H: PSW=05H 结果:结果: (A A)=DCH =DCH (R0R0)=64H=64HBack8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术2 2 、带进位加法
6、指令(四条)、带进位加法指令(四条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释ADDC A, Rn; 0011 1rrr (A)+CY+(Rn) A 将工作寄存器内容将工作寄存器内容与与CY及及 累加器累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADDC A,direct;0011 0101 (A) +CY +(direct) A 将内部将内部RAM单元内容单元内容与与 direct CY及累加器及累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADDC A,Ri; 0011 011i (A) +CY+(Ri) A 将
7、间接寻址将间接寻址(Ri为为R0或或R1) 所得的片内所得的片内RAM单元中内单元中内 容与容与CY及累加器及累加器A中的数中的数 相加,相加, “和和”存放于累加器存放于累加器 A中中ADDC A, #data; 0011 0100 (A) +CY + #data A 将立即数的将立即数的8位无符号二进位无符号二进 data 制数与制数与CY及累加器及累加器A中的数中的数 相加,相加, “和和”存放于累加器存放于累加器A中中8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术说明:说明:本组指令的功能是同时把源操作数所指出的内容和进位标本组指令的
8、功能是同时把源操作数所指出的内容和进位标志未志未CY都加到累加器都加到累加器A中,结果存放到中,结果存放到A中,其余的功能和上面的中,其余的功能和上面的ADD指令相同。本组指令常用于多字节加法。指令相同。本组指令常用于多字节加法。 例:设(A)=0C3H,(R0)=0AAH, (CY)=1。执行指令“ADDC A,R0”后的结果及标志位如何?解: (A): C3H=1100 0011+ (CY): 1=0000 0001 1100 0100+ (R0): AAH=1010 1010 (A): 6EH=0110 1110标志位:标志位:CY=1CY=1,OV=1OV=1,AC=0AC=0,结果:
9、(结果:(A A)=6EH=6EH,(,(R0R0)=0AAH=0AAH。 8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术例:编程,将(30H),(31H)单元中的数与(40H),(41H)单元中的数相加,结果存于(30H),(31H)单元中。解:解:MOV AMOV A, 30H30HADD AADD A, 40H40HMOV 30HMOV 30H, A AMOV AMOV A, 31H31HADDC AADDC A, 41H41HMOV 31HMOV 31H, A ABack8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机
10、原理及接口技术单片机原理及接口技术3 3 、带借位减法指令(四条)、带借位减法指令(四条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释SUBB A, Rn; 1001 1rrr (A)-CY -(Rn) A 将工作寄存器内容将工作寄存器内容与与CY及及 累加器累加器A中的数相减,中的数相减, “差差”存放于累加器存放于累加器A中中SUBB A,direct;1001 0101 (A) -CY -(direct) A 将内部将内部RAM单元内容单元内容与与 direct CY及累加器及累加器A中的数相减,中的数相减, “差差”存放于累加器存放于累加器A中中SUBB A,Ri
11、; 1001 011i (A) -CY -(Ri) A 将间接寻址将间接寻址(Ri为为R0或或R1) 所得的片内所得的片内RAM单元中内单元中内 容与容与CY及累加器及累加器A中的数中的数 相减,相减, “差差”存放于累加器存放于累加器 A中中SUBB A, #data; 1001 0100 (A) -CY -#data A 将立即数的将立即数的8位无符号二进位无符号二进 data 制数与制数与CY及累加器及累加器A中的数相中的数相 减,减, “差差”存放于累加器存放于累加器A中中8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术 说明:这这组组
12、指指令令的的功功能能是是从从累累加加器器A A中中减减去去源源操操作作数数所所指指出出的的数数及进位位及进位位CYCY的值的值, ,差保留在累加器差保留在累加器A A中。中。由由于于89C5189C51指指令令系系统统中中没没有有不不带带借借位位的的减减法法指指令令,如如需需要要的的话话,可可以在以在“SUBBSUBB”指令前用指令前用“CLR CCLR C”指令将指令将CyCy清清0 0,这一点必须注意,这一点必须注意。8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术例:设(例:设(A A)=0C9H,=0C9H,(R2R2)=54H,Cy=
13、1=54H,Cy=1。 执行指令执行指令“SUBB ASUBB A, R2R2”的结果如何?的结果如何? 解:解:(A A)=0C9H= 11001001 B=0C9H= 11001001 B- - ) Cy= 1 = 00000001 BCy= 1 = 00000001 B 11001000 B 11001000 B - -) (R2R2)=54H = 01010100 B=54H = 01010100 B (A A)=74H = 01110100 B=74H = 01110100 B结果为:(结果为:(A A)=74H=74H标志位为:标志位为:Cy=0 AC=0 OV=1 P=0Cy=0
14、 AC=0 OV=1 P=0Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术 4 4、 乘法指令(乘法指令(1 1条)条)该指令若乘积大于0FFH,则OV置1,否则OV清0。Cy位总是被清0。汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 MUL AB ; 1010 0100 (A)(B)B15-8A7-0该指令将累加器该指令将累加器A和寄存器和寄存器B中两个无符号数相乘,所得中两个无符号数相乘,所得16位积的低字位积的低字节存放在节存放在A中,高字节存放中中,高字节存放中B中。中。例:(A)=4EH,(B)=5DH,执行指令
15、“MUL AB”后结果如何? 解: 结果为:(结果为:(B B)=1CH, =1CH, (A A)=56H=56H, 表示积(表示积(BABA)=1C56H=1C56H,OV=1OV=1。 Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术5 5、 除法指令(除法指令(1 1条)条)例:(例:(A A)=BFH=BFH,(,(B B)=32H=32H。执行指令执行指令“DIV ABDIV AB”后后: : 结果为(结果为(A A)=03H=03H,(,(B B)=29H=29H; 标志位标志位 CY=0CY=0,OV=0OV=0。汇编指令
16、格式汇编指令格式 机器码格式机器码格式 操作操作 DIV AB ; 1000 0100 (A)/(B)的商的商 A,(A)/(B)的余数的余数 BA A中内容除以中内容除以B B中内容,整数商存于中内容,整数商存于A A中,余数存于中,余数存于B B中。中。该指令执行后,CY和OV均被清0。若原(B)=00H,则结果无法确定,用OV=1表示,CY仍为0。Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术 6 6、 加加1 1指令(指令(5 5条)条) 该组指令的操作不影响PSW。若原单元内容为FFH,加1后溢出为00H,也不影响PSW标志
17、。汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释INC A INC A ; 0000 0100 (A)+1 0000 0100 (A)+1 A A A A中内容加中内容加1 1。INC INC RnRn; 0000 1rrr (Rn)+1 0000 1rrr (Rn)+1 RnRn RnRn中内容加中内容加1 1。INC directINC direct; 0000 0101 (direct)+10000 0101 (direct)+1direct directdirect direct单元中内容加单元中内容加1 1。 directdirectINC INC RiRi; 0
18、000 011i (Ri)+10000 011i (Ri)+1(Ri) (Ri) RiRi间接寻址所得的片内间接寻址所得的片内RAMRAM 单元中内容加单元中内容加1 1。INC DPTRINC DPTR; 1010 0011 (DPTR)+1 1010 0011 (DPTR)+1 DPTR DPTR DPTR DPTR中内容加中内容加1 1例:比较指令“INC A”和“ADD A,#01H”的结果。解:“INC A”指令只将A的内容加1,标志位没有变化。而“ADD A,#01H”指令不仅将A的内容加1,还影响标志位变化。8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接
19、口技术单片机原理及接口技术例:例: 若:(若:(R1R1)=30H =30H ,(,(30H30H)=11H=11H 求执行下面指令后的结果。求执行下面指令后的结果。INC R1INC R1; (30H)=12H(30H)=12HINC R1 INC R1 ; (R1)=31H(R1)=31H解:结果为:(解:结果为:(30H30H)=12H=12H,(,(R1R1)=31H=31H。 不影响不影响PWS.PWS.Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术7 7、 减减1 1指令指令(4(4条条) )汇编指令格式汇编指令格式 机器
20、码格式机器码格式 操作操作 注释注释DEC A DEC A ; 0001 0100 (A)-1 0001 0100 (A)-1 A A A A中内容减中内容减1 1。DEC DEC RnRn; 0001 1rrr (Rn)-1 0001 1rrr (Rn)-1 RnRn RnRn中内容减中内容减1 1。DEC directDEC direct; 0001 0101 (direct)-10001 0101 (direct)-1direct directdirect direct单元中内容减单元中内容减1 1。 directdirectDEC DEC RiRi; 0001 011i (Ri)-10
21、001 011i (Ri)-1(Ri) (Ri) RiRi间接寻址所得的片内间接寻址所得的片内RAMRAM 单元中内容减单元中内容减1 1。 该组指令的操作不影响PSW。Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术8、 十进制调整指令(1条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 DA ADA A; 1101 01001101 0100若若 (A(A0-30-3)9)9或或AC=1AC=1,则(A(A0-30-3)+6A)+6A0-30-3同同时,若,若(A(A4-74-7)9)9或或CY=1CY=1,则(A(A4
22、-74-7)+6A)+6A4-74-7 该指令该指令调整累加器内容整累加器内容为BCDBCD码。 这条条指指令令跟跟在在ADDADD或或ADDCADDC指指令令后后, ,将将相相加加后后存存放放在在累累加加器器中中的的结果果进行十行十进制制调整整, ,完成十完成十进制加法运算功能。制加法运算功能。 必须注意,本指令不能简单地把累加器必须注意,本指令不能简单地把累加器A的的16进制数变换进制数变换成成BCD码,也不能用于十进制减法的调整。码,也不能用于十进制减法的调整。 8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术例例: : 设累加器设累加器
23、A A内容为:内容为:01010110B01010110B(即为即为5656的的BCDBCD码),寄存码),寄存器器R3R3的的内容为内容为01100111B01100111B(即即6767的的BCDBCD码),码),CYCY内容为内容为1 1。求执行下列指令后的结。求执行下列指令后的结果。果。 ADDC AADDC A,R3R3;DA ADA A;解:先执行解:先执行ADDC AADDC A,R3R3; (A A):): 0101 0110 BCD0101 0110 BCD:5656 (R3R3):): 0110 0111 BCD0110 0111 BCD:6767 (+ +)()(CYCY
24、):): 0000 0001 BCD0000 0001 BCD:01 01 和和 : 1011 11101011 1110即(即(A A)=1011 1110 =1011 1110 且影响标志位且影响标志位 CY=0CY=0,AC=0AC=0; 再执行再执行DA ADA A; 因为因为A A中的高四位值为中的高四位值为1111,大于,大于9 9,低四位值为,低四位值为1414,也大于,也大于9 9,所以内部调整自动进行加所以内部调整自动进行加66H66H的操作:的操作: 1011 11101011 1110 调整调整+ +) 0110 0110 01100110 1 0010 0100 BCD
25、 1 0010 0100 BCD:124124即(即(A A)=0010 0100=24BCD=0010 0100=24BCD,CY=1CY=1;AC=1AC=1。Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术3.3.3 3.3.3 逻辑操作指令逻辑操作指令 逻辑操作指令包括:与、或、异或、清除、求反、移位等操作。该逻辑操作指令包括:与、或、异或、清除、求反、移位等操作。该指令组全部操作数都是指令组全部操作数都是8位位25条指令。条指令。 1.1.简单操作指令(简单操作指令(2 2条)条) 2.2.移位指令(移位指令(4 4条)条)
26、3 3. .逻辑逻辑“与与”指令(指令(6 6条)条) 4 4. 逻辑逻辑“或或”指令(指令(6条)条) 5 5. .逻辑逻辑“异或异或”指令(指令(6 6条)条)Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术1 .1 .简单操作指令(简单操作指令(2 2条)条)Back汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释CLR A CLR A ; 1110 0100 0 1110 0100 0 A A 累加器累加器A A清清0 0指令,只影响标志位指令,只影响标志位P P。CPL A CPL A ; 1111 0100
27、 (A) ) A 累加器累加器A A取反取反指令指令,不影响,不影响标志位志位8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术2 .2 .移位指令(移位指令(4 4条)条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释RL A RL A ; 0010 0011 A0010 0011 A中内容循环左移一位。中内容循环左移一位。 a7 a7 a0 RR A RR A ; 0000 0011 A0000 0011 A中内容循环右移一位。中内容循环右移一位。 a7 a0 a7 a0 RLC A RLC A ; 0011 0011 A
28、0011 0011 A中内容连同进位位中内容连同进位位CYCY一起循一起循 CY a7 a0 CY a7 a0 环左移一位。环左移一位。 RRC A RRC A ; 0001 0011 A0001 0011 A中内容连同进位位中内容连同进位位CYCY一起循一起循 CY a7 a0 CY a7 a0 环右移一位。环右移一位。 我们通常用我们通常用RLC A指令将累加器指令将累加器A的内容做乘的内容做乘2运算。运算。 例如:无符号例如:无符号8位二进制数位二进制数 (A)=10111101B=BDH,(,(CY)=0。 将(将(A)乘乘2,执行指令,执行指令 “RLC A”后后结果:(结果:(A)
29、=0111 1010B=7AH,(,(CY)=1,而而17AH正是正是BDH的的2倍。倍。Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术3. 3. 逻辑逻辑“与与”指令(指令(6 6条)条)汇编指令格式汇编指令格式机器码格式机器码格式 操作操作ANL AANL A, RnRn;0101 1rrr(A)(Rn) AANL AANL A,directdirect;0101 0101 (A)(direct)AdirectANL A, ANL A, RiRi;0101 011i(A)(Ri) AANL A, #dataANL A, #data
30、;0101 0100 (A)dataAdataANL direct, AANL direct, A;0101 0010(direct)(A) directdirectANL direct,#dataANL direct,#data;0101 0011(direct)#datadirectdirectdata这组指令中前四条指令是将累加器这组指令中前四条指令是将累加器A A的内容和操作数所指出的内容按位进行逻辑的内容和操作数所指出的内容按位进行逻辑“与与”,结果存放在,结果存放在A A中。中。后两条指令是将直接地址单元中的内容和操作数所指出的单元的内容按位进行逻辑后两条指令是将直接地址单元中的内
31、容和操作数所指出的单元的内容按位进行逻辑“与与”,结果存入直接地址单元中。若直接地址正好是,结果存入直接地址单元中。若直接地址正好是I/OI/O端口,则为端口,则为“读读改改写写”操作。操作。Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术4. 逻辑逻辑“或或”指令(指令(6条)条)汇编指令格式汇编指令格式机器码格式机器码格式 操作操作ORL AORL A, RnRn;0100 1rrr(A)(Rn) AORL AORL A,directdirect;0100 0101 (A)(direct)AdirectORL A, ORL A, R
32、iRi;0100 011i(A)(Ri) AORL A, #dataORL A, #data;0100 0100 (A)dataAdataORL direct, AORL direct, A;0100 0010(direct)(A) directdirectORL direct,#dataORL direct,#data;0100 0011(direct)#datadirectdirectdata这这组组指指令令的的功功能能是是将将两两个个指指定定的的操操作作数数按按位位进进行行逻逻辑辑“或或”,前前四四条条指指令令的的操操作结果存放在累加器作结果存放在累加器A A中,后两条指令的操作结果存放
33、在直接地址单元中。中,后两条指令的操作结果存放在直接地址单元中。Back8/1/2024 单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术单片机原理及接口技术5 .5 .逻辑逻辑“异或异或”指令(指令(6 6条)条)汇编指令格式汇编指令格式机器码格式机器码格式 操作操作XRL AXRL A, RnRn;0110 1rrr(A)(Rn) AXRL AXRL A,directdirect;0110 0101 (A)(direct)AdirectXRL A, XRL A, RiRi;0110 011i(A)(Ri) AXRL A, #dataXRL A, #data;0110 0100
34、(A)dataAdataXRL direct, AXRL direct, A;0110 0010(direct)(A) directdirectXRL direct,#dataXRL direct,#data;0110 0011(direct)#datadirectdirectdata这这组组指指令令的的功功能能是是将将两两个个指指定定的的操操作作数数按按位位进进行行“异异或或”,前前四四条条指指令令的的结结果果存存放放在在累累加加器器A A中中,后后两两条条指指令令的的操操作作结结果果存存放放在在直直接接地地址址单单元元中中这类指令的操作均只影响标志位这类指令的操作均只影响标志位P P。Back8/1/2024