第3章80C51的指令系统p - 副本 (2)_第1页
第3章80C51的指令系统p - 副本 (2)_第2页
第3章80C51的指令系统p - 副本 (2)_第3页
第3章80C51的指令系统p - 副本 (2)_第4页
第3章80C51的指令系统p - 副本 (2)_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、20222022年年4 4月月1414日星期四日星期四 1 1武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件 20222022年年4 4月月1414日星期四日星期四2 2武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件20222022年年4 4月月1414日星期四日星期四 SP 56H 02H SP SP 02H 56H解:解:SBR:MOV SP,#30H ;设栈底;设栈底 PUSH A PUSH B MOV A,#0 MOV B,#01 POP B POP A武汉理工大学机电学院武汉理工大学机电学院单

2、片机应用系统设计单片机应用系统设计教学课件教学课件3 3【例例1414】设设 A=02HA=02H,B=56HB=56H,执行下列指令后,执行下列指令后, SP= SP= ?,?,A= A= ? ,B= ?B= ?A02H00H01H56HB02HSP=30HSP=30H, A=02H A=02H, B=56H B=56H20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4 4【例例1515】MOV SPMOV SP, #18H#18HMOV AMOV A, #30H#30HMOV DPTRMOV

3、DPTR, #1000H#1000HPUSH APUSH APUSH DPHPUSH DPHPUSH DPLPUSH DPLPOP DPLPOP DPLPOP DPHPOP DPHPOP APOP A ;(;(SPSP)=18H=18H;(;(A A)=30H=30H;(;(DPTRDPTR)=1000H=1000H;(;(SPSP)=19H=19H(19H19H)=30H=30H;(;(SPSP)=1AH=1AH(1AH1AH)=10H=10H;(;(SPSP)=1BH=1BH(1BH1BH)=00H=00H;(;(DPLDPL)=00H=00H、(、(SPSP)=1AH=1AH;(;(DP

4、HDPH)=10H=10H、(、(SPSP)=19H=19H;(;(A A) =30H=30H、(、(SPSP)=18H =18H (重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件5 5【例例1616】设设(A)=7BH; (35H)=11H(A)=7BH; (35H)=11H 并且知道(并且知道(SPSP)60H60H PUSH ACC ;(61H) PUSH ACC ;(61H) #7BH#7BH PUSH 35H ;(62H) PUSH 35H ;(62H) (35H)(35H)

5、 即:即:(62H) (62H) #11H#11H POP ACC POP ACC ;(A) ;(A) (62H) (62H) 即:即:(A)(A) #11H#11H POP 5AH POP 5AH ;(5AH) ;(5AH) (61H) (61H) 即:即:(5AH) (5AH) #7BH#7BH实际上就是利用堆栈传递数据6 6武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件20222022年年4 4月月1414日星期四日星期四7 7武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件20222022年年4

6、4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件8 8片外程序存储器ROMEPROM特殊功能寄存器SFR片内RAM128字节片外数据存储器RAMMOVCMOVXMOV PUSHPOPXCHXCHD数据传送类指令用法小结20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件9 93.3.2 3.3.2 算术运算类指令算术运算类指令加法运算:加法运算: (ADD4(ADD4条条) )带进位加法运算带进位加法运算: (ADDC4: (A

7、DDC4条条) )带借位减法运算带借位减法运算: (SUBB4: (SUBB4条条) )加加1/1/减减1 1操作:操作: (INC(INC,DEC9DEC9条条) )单字节乘单字节乘/ /除法运算除法运算: (: (MULMUL,DIV2DIV2条条) )十进制调整:十进制调整: (DA A1(DA A1条条) )20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1010加法运算:加法运算: (ADDADD4 4条)条)带进位加法运算带进位加法运算: : (ADDCADDC4 4条)条)带借位减法

8、运算:带借位减法运算: (SUBBSUBB4 4条)条)所有的加法所有的加法( (ADDADD) )、带进位加法、带进位加法( (ADDCADDC) )、带借位减、带借位减法法( (SUBBSUBB) )运算都是以运算都是以A A为一个加数或被减数为一个加数或被减数, ,最终最终结果也存进结果也存进A A。加法加法( (ADDADD) )、带进位加法、带进位加法( (ADDCADDC) ) 以及带借位减法以及带借位减法( (SUBBSUBB) )运算中运算中, ,如果产生了进位或借位如果产生了进位或借位, ,将自动对将自动对PSWPSW中的中的CyCy标志位标志位置置“1 1” 。带进位加法带

9、进位加法( (ADDCADDC):(A):(A)(A)+(A)+(Cy)(Cy)+(+(第二操作数第二操作数) )带借位减法带借位减法( (SUBBSUBB):(A):(A)(A)-(A)-(Cy)(Cy)-(-(第二操作数第二操作数) )20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1111加法指令组:(加法指令组:(ADDADD44条)条) ADD A,Rn ;A(A)+(Rn)ADD A,Rn ;A(A)+(Rn) ADD A,direct ;A(A)+(direct)ADD A,dire

10、ct ;A(A)+(direct) ADD A,Ri ;A(A)+(Ri)ADD A,Ri ;A(A)+(Ri) ADD A,#data ;A(A)+dataADD A,#data ;A(A)+data8 8位位2 2进制加法运算指令的一个加数总是进制加法运算指令的一个加数总是A A,另一个可由不同,另一个可由不同寻址方法得到,其结果再送回寻址方法得到,其结果再送回A A。注意对注意对PSWPSW状态字的影响:状态字的影响:如果位如果位3 3有进位,有进位,AC=1AC=1,否则,否则AC=0AC=0;如果位如果位7 7有进位,有进位,CY=1CY=1,否则,否则CY=0CY=0;如果位如果位

11、6 6和位和位7 7中,一个有进位而另一个没有,则中,一个有进位而另一个没有,则OV=1OV=1,溢出,溢出,否则否则OV=0OV=0,无溢出。,无溢出。 20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1212【例例1919】(A)=0C2H(A)=0C2H,(R0)=0A9H(R0)=0A9H,执行,执行 ADD AADD A,R0R0 11000010 11000010 1010100110101001 101101011 101101011运算结果:运算结果:(A)=6BH(A)=6BH,

12、(AC)=0(AC)=0,(CY)=1(CY)=1,(OV)=1(OV)=1。 若若0C2H0C2H和和0A9H0A9H是是2 2个无符号数,则运算结果是正确个无符号数,则运算结果是正确的;反之则是错误的,因为两个负数相加不可能得到的;反之则是错误的,因为两个负数相加不可能得到正数的和。正数的和。20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1313【例例2020】两个两个8 8位无符号数相加的和仍是位无符号数相加的和仍是8 8位。位。 如内部如内部RAMRAM中中40H40H和和41H41H单

13、元分别存放两个计数,单元分别存放两个计数, 相加结果存放相加结果存放42H42H单元。单元。MOV R0, #40H MOV R0, #40H ;设置数据指针;设置数据指针MOV A, R0 MOV A, R0 ;取第一个加数;取第一个加数INC R0 INC R0 ;修改数据指针;修改数据指针ADD A, R0 ADD A, R0 ;两数相加;两数相加INC R0 INC R0 ;修改数据指针;修改数据指针MOV R0, A MOV R0, A ;存结果;存结果20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教

14、学课件教学课件1414带进位加法指令组带进位加法指令组: : (ADDCADDC44条)条) ADDC A, Rn ;A(A)+(Rn)+(CY)ADDC A, Rn ;A(A)+(Rn)+(CY) ADDC A, direct ;A(A)+(direct)+(CY)ADDC A, direct ;A(A)+(direct)+(CY) ADDC A, Ri ;A(A)+(Ri)+(CY)ADDC A, Ri ;A(A)+(Ri)+(CY) ADDC A, #data ;A(A)+data+(CY)ADDC A, #data ;A(A)+data+(CY)它们对标志位的影响同前它们对标志位的影响

15、同前。唯一特点就是进位标志参加运算。唯一特点就是进位标志参加运算。 20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1515【例例2121】双字节无符号数加法双字节无符号数加法(R0 R1)+(R2 R3) (R4 R5)(R0 R1)+(R2 R3) (R4 R5), R0 R0、 R2R2、 R4R4存放存放1616位数的高字节位数的高字节, R1, R1、 R3R3、 R5R5存放存放 低字节。低字节。 由于不存在由于不存在1616位数加法指令位数加法指令, , 所以只能先加所以只能先加 低

16、低8 8位位, , 后加高后加高8 8位位, , 而在加高而在加高8 8位时要连低位时要连低8 8位相加时产生位相加时产生 的进位一起相加。的进位一起相加。 假设其和不超过假设其和不超过1616位位, , 其编程如下其编程如下: :带进位加法指令常用于多字节数的加法运算。带进位加法指令常用于多字节数的加法运算。MOV A, R1 ; MOV A, R1 ; 取被加数低字节取被加数低字节ADD A, R3 ; ADD A, R3 ; 低字节相加低字节相加MOV R5,A ; MOV R5,A ; 保存和低字节保存和低字节MOV A, R0 ; MOV A, R0 ; 取高字节被加数取高字节被加数

17、ADDC A, R2 ; ADDC A, R2 ; 两高字节之和加低位进位两高字节之和加低位进位MOV R4,A ; MOV R4,A ; 保存和高字节保存和高字节(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1616【例例2222】设双字节数设双字节数 X X 存在片内存在片内RAMRAM 41 41H H、40H40H单元,单元,Y Y存存在在4242H H、43H43H单元,编程求单元,编程求 Z=X+YZ=X+Y,并存入片内并存入片内RAMRAM单元单元4444H H、45H

18、45H、46H46H。ADDS:MOV A ,40H ADD A ,42H MOV 44H ,A MOV A ,41H ADDC A ,43H MOV 45H ,A MOV A ,#0 ADDC A ,#0 MOV 46H ,A RET;取被加数低字节;取被加数低字节;加上加数低字节;加上加数低字节;保存和的低字节;保存和的低字节;取被加数高字节;取被加数高字节;加上加数高字节;加上加数高字节;保存和的高字节;保存和的高字节; 求 高 字 节 进 位; 求 高 字 节 进 位;子程序结束;子程序结束20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单

19、片机应用系统设计单片机应用系统设计教学课件教学课件1717【例例2323】三字节无符号数相加,被加数放在内部三字节无符号数相加,被加数放在内部RAM 20HRAM 20H22H22H单单元(低位在前),加数放在内部元(低位在前),加数放在内部RAM 2AHRAM 2AH2CH2CH单元(低位在前)。单元(低位在前)。可编程序如下:可编程序如下: MOV R0, #20H ;MOV R0, #20H ;被加数首地址被加数首地址 MOV R1, #2AH ;MOV R1, #2AH ;加数首地址加数首地址 MOV R7, #03H ;MOV R7, #03H ;字节数字节数 CLR C ;CLR

20、C ;清清CYCYLOOP: MOV A, R0 ;LOOP: MOV A, R0 ;取被加数一个字节取被加数一个字节 ADDC A, R1;ADDC A, R1;与加数的一个字节相加与加数的一个字节相加 MOV R0, A;MOV R0, A;暂存中间结果暂存中间结果(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1818 MOV R0, A ; MOV R0, A ;暂存中间结果暂存中间结果 INC R0 ;INC R0 ;地址增量地址增量 INC R1 INC R1 DJNZ R

21、7, LOOP ; DJNZ R7, LOOP ;次数减次数减1 1,不为,不为0 0转移转移 CLR ACLR A ADDC A, #00H ; ADDC A, #00H ;处理进位处理进位 MOV R0, A ;MOV R0, A ;存进位存进位相加结果占据被加数单元,但因为可能产生进位,所以三字节相加结果占据被加数单元,但因为可能产生进位,所以三字节相加完成后,还要进行进位位的处理,使之也占据一个单元,相加完成后,还要进行进位位的处理,使之也占据一个单元,因此相加和可能在因此相加和可能在4 4个单元中。个单元中。20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武

22、汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1919带借位减法指令组:(带借位减法指令组:(SUBBSUBB44条)条) SUBB A, Rn SUBB A, Rn ;A(A)-(Rn)-(CY);A(A)-(Rn)-(CY) SUBB A, direct SUBB A, direct ;A(A)-(direct)-(CY);A(A)-(direct)-(CY) SUBB A, Ri SUBB A, Ri ;A(A)-(Ri)-(CY);A(A)-(Ri)-(CY) SUBB A, #data SUBB A, #data ;A(A)-data-(CY);A(A)-da

23、ta-(CY)只有带借位的减法运算,没有不带借位的。只有带借位的减法运算,没有不带借位的。对标志位的影响同前。对标志位的影响同前。20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2020【例例2424】双字节无符号数相减双字节无符号数相减(R0 R1)(R0 R1)(R2 R3) (R4 R5)(R2 R3) (R4 R5)。 R0 R0、R2R2、R4R4存放存放1616位数的高字节位数的高字节,R1,R1、R3R3、R5R5存放低字节,存放低字节, 先减低先减低8 8位位, , 后减高后减高8

24、 8位和低位减借位。由于低位开始减时位和低位减借位。由于低位开始减时 没有借位没有借位, , 所以要所以要先清零先清零。 其编程如下其编程如下: :MOV A, R1 ; MOV A, R1 ; 取被减数低字节取被减数低字节CLR C ; CLR C ; 清借位清借位SUBB A, R3 ; SUBB A, R3 ; 低字节相减低字节相减MOV R5, A ; MOV R5, A ; 保存差低字节保存差低字节MOV A, R0 ; MOV A, R0 ; 取被减数高字节取被减数高字节SUBB A, R2 ; SUBB A, R2 ; 两高字节差减低位借位两高字节差减低位借位MOV R4, A

25、; MOV R4, A ; 保存差高字节保存差高字节(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2121加加1 1指令组:指令组: (INCINC,DECDEC99条)条)INC, DECINC, DEC与与用加用加/ /减法指令做减法指令做加加1/1/减减1 1 操作不同之操作不同之处在于处在于INCINC、DECDEC不影响标志位。不影响标志位。加加1 1操作操作共有共有5 5条:条:INC A INC A ; AA(A A)+1+1INC Rn INC Rn ; RnRn(R

26、nRn)+1+1INC direct INC direct ; directdirect(directdirect)+1+1INC Ri INC Ri ;(;(RiRi)(RiRi)+1+1INC DPTR INC DPTR ; DPTRDPTR(DPTRDPTR)+1+1这些操作均不影响程序状态字这些操作均不影响程序状态字PSWPSW。 20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2222【例例2525】设设(R0)=7EH,(7EH)=FFH,(7FH)=38H,(R0)=7EH,(7EH

27、)=FFH,(7FH)=38H, (DPTR)=10FEH, (DPTR)=10FEH, 分析逐条执行下列指令后各单元的内容。分析逐条执行下列指令后各单元的内容。 INC R0INC R0 INC R0 INC R0 INC R0 INC R0 INC DPTR INC DPTR INC DPTRINC DPTR INC DPTR INC DPTR; ; 使使7EH7EH单元内容由单元内容由FFHFFH变为变为00H00H; ; 使使R0R0的内容由的内容由7EH7EH变为变为7FH7FH; ; 使使7FH7FH单元内容由单元内容由38H38H变为变为39H39H; ; 使使DPLDPL为为F

28、FH, DPHFFH, DPH不变不变; ; 使使DPLDPL为为00H, DPH00H, DPH为为11H11H; ; 使使DPLDPL为为01H, DPH01H, DPH不变不变(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2323减减1 1指令组(指令组(共有共有4 4条):条): DEC A DEC A ; AA(A A)-1-1 DEC Rn DEC Rn ; RnRn(RnRn)-1-1 DEC direct DEC direct ; directdirect(direc

29、tdirect)-1-1 DEC Ri DEC Ri ;(;(RiRi)(RiRi)-1-1这些操作均不影响程序状态字这些操作均不影响程序状态字PSWPSW。注意:注意:只有数据指针只有数据指针DPTRDPTR加加1 1操作,没有操作,没有DPTRDPTR减减1 1操作。操作。 20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2424单字节乘单字节乘/ /除运算除运算: (: (MULMUL,DIVDIV22条条) )两个单字节数的乘两个单字节数的乘/ /除法运算只在除法运算只在A A与与B B之

30、间进行。之间进行。MUL ABMUL AB: (: (A A) )与与( (B B) )相乘相乘, , 积为积为1616位位数数, , ( (A A) )积的积的低低8 8位位; (; (B B) )积的积的高高8 8位位DIV ABDIV AB: (: (A A) )除以除以( (B B),),结果用结果用2 2字节表示字节表示, , ( (A A) )商的商的整数整数部分部分;(;(B B) )余数余数20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2525【例例2626】 利用除法指令把累加

31、器利用除法指令把累加器A A中的中的8 8位二进制数转换为位二进制数转换为3 3位位BCDBCD数数, , 并以压缩形式存放在地址并以压缩形式存放在地址M M1 1、 M M2 2单元中。单元中。 解解: :累加器累加器A A中的中的8 8 位二进制数位二进制数, , 先对其除以先对其除以100100(64H64H), , 商数商数 即为十进制的百位数即为十进制的百位数; ; 余数部分再除以余数部分再除以10 (0AH), 10 (0AH), 所得商数所得商数 和余数分别为十进制十位数和个位数和余数分别为十进制十位数和个位数, , 即得到即得到3 3位位BCDBCD数。数。 百位数放在百位数放

32、在M M1 1中中, , 十位、十位、 个位数压缩个位数压缩BCDBCD数放在数放在M M2 2中中, , 十位十位 与个位数的压缩与个位数的压缩BCDBCD数的存放是通过数的存放是通过SWAPSWAP和和ADDADD指令实现的。指令实现的。 参考程序如下参考程序如下: :(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2626MOV B, MOV B, 64H ; 64H ; 除数除数100 100 送送B BDIV AB ; DIV AB ; 得百位数得百位数 MOV MMOV M

33、1 1, A ; , A ; 百位数存于百位数存于M1M1中中MOV A, MOV A, 0AH ; 0AH ; 取除数取除数10 10 XCH A, B ; XCH A, B ; 上述余数与除数交换上述余数与除数交换DIV AB ; DIV AB ; 得十位数和个位数得十位数和个位数SWAP A ; SWAP A ; 十位数存于十位数存于A A的高的高4 4位位ADD A, B ; ADD A, B ; 组成压缩组成压缩BCDBCD数数MOV MMOV M2 2, A ; , A ; 十、十、 个位压缩个位压缩BCDBCD数存数存M M2 2若上述程序执行前若上述程序执行前:(A)=A8H(

34、168),:(A)=A8H(168),则执行后则执行后: (M: (M1 1)=(01)=(01)BCDBCD,(M,(M2 2)=(68)=(68)BCDBCD。(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2727【例例27】 (A)=50H, (B)=0A0H, 执行指令:执行指令:MUL AB结果:结果:(B)=32H, (A)=00H (即乘积为(即乘积为3200H),), CY=0, OV=1。例如:例如: (A)=0FBH, (B)=12H, 执行指令:执行指令:DIV

35、 AB结果:结果: (A)=0DH, (B)=11H, CY=0, OV=0。20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2828BCDBCD码码是指是指“用二进制表达的十进制数用二进制表达的十进制数”。如:。如:十进制数十进制数2020可以用二进制数可以用二进制数00010100B00010100B表示表示; ;也可以用十六进制数也可以用十六进制数14H14H表示;表示;还可以用还可以用BCDBCD码码 00100000B 00100000B 或或20H20H表示。表示。4 4个二进制位就可

36、以表示一个二进制位就可以表示一位位BCDBCD码:码:000000001001 1001 可表示十进制数可表示十进制数(BCD(BCD数数) 0) 09;9;8 8个二进制位就可以表示个二进制位就可以表示两位压缩的两位压缩的BCDBCD码:码:000000000000000010011001 10011001 表示表示 00009999。十进制调整:十进制调整: (DA ADA A11条)条)用于两个用于两个BCDBCD码码之间的相加,这条指令之间的相加,这条指令只能跟在只能跟在 ADD ADD 或或 ADDC ADDC 之后。之后。20222022年年4 4月月1414日星期四日星期四武汉理

37、工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2929若若(A)(A)3 30 0 9 9或或(AC)=1(AC)=1则则(A)(A)3 30 0(A)(A)3 30 06 6;若若(A)(A)7 74 4 9 9或或(CY)=1(CY)=1则则(A)(A)7 74 4(A)(A)7 74 46 6;例:两个十进制数例:两个十进制数“65”65”与与“58”58”相加,根据常相加,根据常识,显然其和应当为识,显然其和应当为“123”123”。MOV A,#65H MOV A,#65H ADD A,#58HADD A,#58HDA ADA A结果结果:(A

38、)= 23H:(A)= 23H (CY)= 1(CY)= 1指令指令“DA A”DA A”完成的操作完成的操作: 6 5 0110 01016 5 0110 0101 5 8 0101 1000 5 8 0101 1000 + +1 13 31818 19192 26 6 0110 01106 6 0110 0110(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3030又如:两个十进制数又如:两个十进制数“3939”与与“5858”相加,根据常相加,根据常识,显然其和应当为识,显然其

39、和应当为“9797”。MOV A,#39H MOV A,#39H ADD A,#58HADD A,#58HDA ADA A结果结果:(A)= 97H:(A)= 97H (CY)= 0(CY)= 0 3 9 0011 1001 3 9 0011 1001 5 8 0101 1000 5 8 0101 1000 +07 723239 9 6 01106 011020222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件31313.3.3 3.3.3 逻辑运算及移位类指令逻辑运算及移位类指令(5 5种种/24/2

40、4条)条)逻辑与运算:逻辑与运算: (ANLANL66条)条)逻辑或运算:逻辑或运算: (ORLORL66条)条)逻辑异或运算:逻辑异或运算: (XRLXRL66条)条)累加器清零累加器清零/ /取反:取反: (CLRCLR,CPLCPL22条)条)累加器移位操作累加器移位操作: : (RL,RLC,RR,RRCRL,RLC,RR,RRC44条)条)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3232逻辑与逻辑与( (ANLANL),),逻辑或逻辑或( (ORLORL),),逻辑异或逻辑异或(

41、 (XRLXRL):):累加器清零累加器清零/ /取反操作取反操作 (CLR,CPLCLR,CPL22条)条)CLR A CLR A 对累加器清零对累加器清零 1 1 ByteByte 1 1 个个Tm Tm CPL A CPL A 对累加器按位取非对累加器按位取非 1 1 Byte Byte 1 1 个个TmTmTmTm:机器周期:机器周期指指 令令 形形 式式ByteByteTmTmANLANL(ORL(ORL,XRL)XRL) direct direct, A A2 21 1ANLANL(ORL(ORL,XRL)XRL) direct direct,#data#data3 32 2ANL

42、ANL(ORL(ORL,XRL)XRL) A A, #data#data2 21 1ANLANL(ORL(ORL,XRL)XRL) A A, directdirect2 21 1ANLANL(ORL(ORL,XRL)XRL) A A, RiRi1 11 1ANLANL(ORL(ORL,XRL)XRL) A A, RnRn1 11 120222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3333【例例2929】设设 Cy=1Cy=1,( (位地址位地址4040H)=1H)=1,执行指执行指令令 ANL C

43、ANL C,/40H /40H 后,后,Cy= Cy= ? , ( (位地址位地址4040H)= H)= ?位地址表示法位地址表示法:位地址位地址 4040H H,位寄存器位寄存器 F0F0,字节加位字节加位 ACC.0ACC.00 0思考题思考题:设累加器:设累加器A A中数据为中数据为 29 29H H,Cy=0Cy=0,执行指令执行指令ORL CORL C,0E3H0E3H 后,后,Cy= ?Cy= ?1 1(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3434例:设例:设P1

44、为输入口,为输入口,P3.0为输出线,执行下列指令:为输出线,执行下列指令: MOV C, P1.0 ANL C, P1.1 ANL C, /P1.2 MOV P3.0, C所实现操作的逻辑运算式为:所实现操作的逻辑运算式为: P3.0=(P1.0) (P1.1) (P1.2)(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3535逻辑运算指令逻辑运算指令的常见用法的常见用法逻辑与逻辑与ANLANL用于用于清清0 0或者或者保留保留某些位:某些位:例例: : ANL A, #0FHAN

45、L A, #0FH; ; 则则(A) = (A) = 0AH0AH( ( 已知累加器已知累加器A A中已存有数:中已存有数:9AH 9AH ) )逻辑或逻辑或ORLORL用于用于置置1 1或者或者保留保留某些位:某些位:例例: : ORL A, #0FHORL A, #0FH; ; 则则(A) = (A) = 9FH9FH逻辑异或逻辑异或XRLXRL用于用于取反取反或者或者保留保留某些位:某些位:例例: : XRL A, #0FHXRL A, #0FH; ; 则则(A) = (A) = 95H95H (A) (A) 1001 1010 1001 1010 #0FH #0FH 0000 1111

46、 0000 1111 95H 95H 1001 0101 1001 0101(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3636【例例】把累加器把累加器A A中的低中的低4 4位数据送外部数据存储器位数据送外部数据存储器的的2580H2580H单元中。单元中。 解:用解:用0FH0FH屏蔽掉高屏蔽掉高4 4位,然后传送,程序设计如位,然后传送,程序设计如下:下: MOV DPTR MOV DPTR ,#2580H#2580H ANL A ANL A ,#0FH#0FH MOVX D

47、PTR MOVX DPTR,A A20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3737当需要只改变字节数据的某几位,而其余位不变时,当需要只改变字节数据的某几位,而其余位不变时,不能使用直不能使用直接传送方法接传送方法,只能通过逻辑运算完成只能通过逻辑运算完成。例如:将累加器例如:将累加器A A的低的低4 4位传送到位传送到P1P1口的低口的低4 4位,但位,但P1P1口的高口的高4 4位需位需保持不变。对此可由以下程序段实现:保持不变。对此可由以下程序段实现: MOV R0, A ;AMOV

48、 R0, A ;A内容暂存内容暂存R0R0 ANL A, #0FH ; ANL A, #0FH ;屏蔽屏蔽A A的高的高4 4位(低位(低4 4位不变)位不变) ANL P1, #0F0H ;ANL P1, #0F0H ;屏蔽屏蔽P1P1口的低口的低4 4位(高位(高4 4位不变)位不变) ORL P1, A ;ORL P1, A ;实现低实现低4 4位传送位传送 MOV A, R0 ;MOV A, R0 ;恢复恢复A A的内容的内容(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件38

49、38思考题思考题1 1:如何将累加器如何将累加器A A中的数据高中的数据高4 4位清位清0 0,低位不变?,低位不变?思考题思考题2 2:如何将寄存器如何将寄存器R2R2中的数据奇数位取反,偶数位不变?中的数据奇数位取反,偶数位不变?例例 A=01A=01B B,表示随机状态,为表示随机状态,为1 1或或0 0,执行下述,执行下述一组指令执行后一组指令执行后A A的值如何的值如何? ? XRL AXRL A,#0C0H#0C0H ORL AORL A,#03H#03HANL AANL A,#0E7H#0E7H 解解 :执行上述指令后,执行上述指令后,A=10A=10000011B11B。(重点

50、重点);将累加器将累加器A A的内容的内容D D7 7、D D6 6取反取反;将累加器将累加器A A的内容的内容D D1 1、D D0 0置置1 1;将累加器将累加器A A的内容的内容D D4 4、D D3 3清清0 020222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3939只能对累加器移位只能对累加器移位: :(RL,RLC,RR,RRCRL,RLC,RR,RRC44条)条)A.0A.7A.0A.7A.0A.7A.0A.7CYCY RL A RR A RLC A RRC A武汉理工大学机电学院武

51、汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4040例:例:设设 A= 11000101 A= 11000101 ,Cy= 0Cy= 0,分别执行分别执行下列单条指令:(下列单条指令:(不是顺序执行不是顺序执行) CPL A CPL A RL A RL A RLC A RLC A求:求:A=A=?,Cy=Cy=?00111010 000111010 010001011 010001011 010001010 110001010 1 用用9 9位循环指令实现多字节移位位循环指令实现多字节移位例:例:编程将寄存器编程将寄存器 R6R5 R6R5 中的双字节数中的双字节数X

52、 X左移一位。左移一位。CLRCLR C CMOVMOV A A, R5 R5RLCRLC A AMOVMOV R5 R5,A AMOVMOV A A, R6 R6RLCRLC A AMOVMOV R6 R6,A A0 0CyCyR R6 6R R5 5CyCy;Cy=0Cy=0, 设设 R6= 55H R6= 55H ,R5= AAHR5= AAH;R6=01010101R6=01010101,R5=10101010R5=10101010,Cy=0Cy=0;R6=01010101R6=01010101,R5=01010100R5=01010100,Cy=1Cy=1;R6=10101011R6

53、=10101011,R5=01010100R5=01010100,Cy=0Cy=0思考题:思考题:如何将寄存器如何将寄存器R6R5R6R5中的双字节数中的双字节数X X右移一位。右移一位。20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4141此类指令此类指令改变程序的执行顺序改变程序的执行顺序改变当前改变当前PCPC值值无条件转移:无条件转移: (LJMP,AJMP,SJMP,JMPLJMP,AJMP,SJMP,JMP44条)条)条件转移(判断跳转):条件转移(判断跳转): (JZ,JNZ,CJ

54、NE,DJNZJZ,JNZ,CJNE,DJNZ88条)条)子程序调用及返回:子程序调用及返回: (LCALL,ACALL,RET,RETILCALL,ACALL,RET,RETI44条)条)空操作空操作: : (NOPNOP11条)条) “耗时耗时”一一个机器周期。个机器周期。 do nothing!do nothing!3.3.4 3.3.4 控制转移类指令控制转移类指令(4 4种种/17/17条)条)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件42421.1.无条件转移:无条件转移: LJ

55、MP,AJMP,SJMP,JMPLJMP,AJMP,SJMP,JMP44条条LJMP addr16 LJMP addr16 长跳转指令长跳转指令 可在可在64K64K范围内跳转范围内跳转,PC,PCaddr16addr16,3 3字节字节AJMP addr11 AJMP addr11 绝对跳转指令绝对跳转指令 可在可在指令所在的指令所在的2K2K范围内跳转范围内跳转, , PCPC(PC)+2(PC)+2,PCPC10100 0addr11 addr11 例例: :2070H AJMP 16AH2070H AJMP 16AH 其其1111位绝对转移地址为:位绝对转移地址为:0010110101

56、000101101010B(16AH)B(16AH) (PC)=2070H, PC(PC)+2=2072H(PC)=2070H, PC(PC)+2=2072H 即:即:00100001000000111001000001110010B(2072H)B(2072H) 以绝对转移地址替换以绝对转移地址替换PCPC低低1111位,得位,得 00100001000010110101000101101010B B(216AH)(216AH)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4343 PC高高5

57、位位 PC低低11位位高高3位位8位位 第一字节第一字节 第二字节第二字节操作码操作码地址域地址域装入装入11转移地址转移地址 双字节直接寻址的无条件转移指令,指令操作数域给出双字节直接寻址的无条件转移指令,指令操作数域给出1111位的位的跳转地址。它把跳转地址。它把PCPC高高5 5位与操作码的高位与操作码的高3 3位以及指令第二字节并在一位以及指令第二字节并在一起,构成起,构成1616位的转移址址,如下图所示,常称为绝对转移指令。位的转移址址,如下图所示,常称为绝对转移指令。寻址范围为该指令地址加寻址范围为该指令地址加2 2后,向下的后,向下的2K2K区域,其指令码如下:区域,其指令码如下

58、:A10 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a020222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4444 PC高高5位位(保持不变保持不变) PC低低11位位A10A9A800 001A7A6A5A4A3A2A1A0操作码操作码(第一字节第一字节)操作数操作数(第二字节第二字节)程序计程序计数器数器PC20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4545例如

59、例如: : 在程序存储器在程序存储器0000H0000H单元存放一条指令单元存放一条指令: : LJMP 3000H ; (PC) 3000H, 02 30 00 LJMP 3000H ; (PC) 3000H, 02 30 00则上电复位后程序将跳到则上电复位后程序将跳到3000H 3000H 单元去执行用户程序。单元去执行用户程序。(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4646例如:根据累加器例如:根据累加器A A中命令键键值,设计命令键操作程序入口中命令键键值,设计命令

60、键操作程序入口 跳转表:跳转表:解:解: CLR C CLR C ;清进位;清进位 RLC A RLC A ;键值乘;键值乘2 2 MOV DPTR MOV DPTR,#JPTAB #JPTAB ;指向命令键跳转表首址;指向命令键跳转表首址 JMP JMP A+DPTR A+DPTR ;散转命令键入口;散转命令键入口JPTABJPTAB: AJMP CCS0 AJMP CCS0 ;双字节指令;双字节指令 AJMP CCS1 AJMP CCS1 AJMP CCS2 AJMP CCS2(重点重点)20222022年年4 4月月1414日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论