第7章.MCS-51指系统.ppt

上传人:s****8 文档编号:69256176 上传时间:2023-01-01 格式:PPT 页数:101 大小:603KB
返回 下载 相关 举报
第7章.MCS-51指系统.ppt_第1页
第1页 / 共101页
第7章.MCS-51指系统.ppt_第2页
第2页 / 共101页
点击查看更多>>
资源描述

《第7章.MCS-51指系统.ppt》由会员分享,可在线阅读,更多相关《第7章.MCS-51指系统.ppt(101页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、概述概述寻址方式寻址方式分类指令介绍分类指令介绍第7章 MCS-51指令系统7.1.17.1.1指令分类指令分类l MCS-51MCS-51的的指指令令系系统统使使用用4242种种助助记记符符,表表达达3333种种功能,共由功能,共由111111条指令构成。条指令构成。l 按指令编码的字节数分类:按指令编码的字节数分类:1 1字节字节(49(49条条)、2 2字节字节(45(45条条)、3 3字节字节(17(17条条)。l 按指令的机器周期数分类:按指令的机器周期数分类:1 1个机器周期个机器周期(64(64条条);2 2个机器周期个机器周期(45(45条条);4 4个机器周期个机器周期(2(

2、2条条,乘、除各乘、除各1 1条)条)实实际际应应用用中中最最频频繁繁的的指指令令,为为单单周周期期指指令令,故故f foscosc=12MHz,T=1=12MHz,T=1 s s。速度指标为速度指标为1MIPS1MIPS7.1 7.1 指令系统概述指令系统概述指令的类别及其要素指令的类别及其要素l数据传送类30条条l算术运算类24条条l逻辑运算类35条条l转移操作类22条条l布尔指令类位操作子集位操作子集l指令的功能l指令的寻址方式l指令对PSW的影响l指令的编码字节数l指令的机器周期在程序中行中,指令语句按如下形式书写:在程序中行中,指令语句按如下形式书写:标号标号:助记符助记符 操作数操

3、作数11,操作数操作数22,操作数操作数33;注释注释 l标号于程序行中,代表指令所在的地址标号于程序行中,代表指令所在的地址符号地址;符号地址;l在指令功能解释阶段不使用标号;在指令功能解释阶段不使用标号;l两个操作数的情况比较多,常写成如下:两个操作数的情况比较多,常写成如下:操作码操作码 目的操作数,源操作数目的操作数,源操作数或或op_code dst,src7.1.2 7.1.2 书写格式与缩略语书写格式与缩略语RnRn-当前组的通用寄存器,当前组的通用寄存器,n=0n=07 7Ri-0Ri-0或或1 1,R0R0或或R1R1作间接寻址寄存器。作间接寻址寄存器。direct-8dir

4、ect-8位内部单元的地址,即直接寻址。位内部单元的地址,即直接寻址。#data#data,#data16-#data16-分别为分别为8 8位和位和1616位立即数。位立即数。addr16-16addr16-16位目的地址。位目的地址。addr11-11addr11-11位目的地址。位目的地址。rel-8rel-8位带符号的补码偏移量。位带符号的补码偏移量。bit-bit-内部内部RAMRAM可位寻址的位地址。可位寻址的位地址。/表示取反操作。表示取反操作。(X)-X(X)-X单元中的内容。单元中的内容。(X)-(X)-以以X X单元内容为地址的单元的内容。单元内容为地址的单元的内容。-间接

5、寄存器或基址寄存器的前缀。间接寄存器或基址寄存器的前缀。寻址方式常用符号说明寻址方式常用符号说明l寻找操作数(数据,指令的处理对象)的方式寻找操作数(数据,指令的处理对象)的方式寄存器寻址寄存器寻址直接寻址直接寻址立即寻址立即寻址寄存器间接寻址寄存器间接寻址变址寻址变址寻址l寻找目标地址(程序流程控制)的方式寻找目标地址(程序流程控制)的方式相对寻址相对寻址绝对寻址绝对寻址隐含寻址隐含寻址l位寻址位寻址7.1.3 7.1.3 寻址方式寻址方式(Addressing Mode)(Addressing Mode)寄存器操作数,寻址范围:寄存器操作数,寻址范围:(1 1)4 4组组R0 R0 R7R

6、7共共3232个工作寄存器个工作寄存器(2 2)部分特殊功能寄存器,例如)部分特殊功能寄存器,例如A A、B B 以及数据以及数据指针寄存器指针寄存器DPTRDPTR等。等。例:例:MOVMOVA A,RnRn ;(;(RnRn)A A,n=0n=07 7MOVMOVB B,A A寄存器寻址寄存器寻址(RegistorRegistor Addressing Addressing)存储器操作数,其地址直接编码到指令中存储器操作数,其地址直接编码到指令中 寻址范围:寻址范围:(1)(1)内部内部RAMRAM的低的低128128个单元(个单元(00-7FH00-7FH)例例MOV AMOV A,40

7、H40H (2)(2)特殊功能寄存器。特殊功能寄存器。例例MOV AMOV A,80H80H ;地址码形式;地址码形式 MOV AMOV A,P0P0;SFRSFR符号形式符号形式两者的机器码完全一致,后者便于记忆。两者的机器码完全一致,后者便于记忆。直接寻址直接寻址(Direct Addressing)(Direct Addressing)超过7FH就到SFR范围88H88H88H88H 累加器累加器累加器累加器A A A A88H88H88H88H3AH3AH3AH3AH片内片内片内片内RAMRAMRAMRAMMOVA,3AH寄存器寄存器 A AINC INC A A;寄存器寻址寄存器寻址

8、特殊功能寄存器特殊功能寄存器AccAcc(E0HE0H)INC INC ACCACC;直接寻址直接寻址,名称符号,名称符号或或INC INC 0 0E0HE0H;直接寻址,地址码;直接寻址,地址码指指令令都都使使累累加加器器中中内内容容加加1 1。但但是是寻寻址址方方式式不不同同,指令编码字节数也不同。指令编码字节数也不同。累加器的两种寻址方式累加器的两种寻址方式 常数操作数,编码在指令中常数操作数,编码在指令中(取指完成,操(取指完成,操作数立即得到,因此得名)作数立即得到,因此得名),立即数有前缀标,立即数有前缀标志志“#”。例例MOV AMOV A,#40H#40H 在表示法中,记为在表

9、示法中,记为#data#data8 8位立即数;位立即数;#datal6#datal61616位立即数。位立即数。区别:区别:MOV AMOV A,#3AH3AH;立即寻址;立即寻址 MOV AMOV A,3AH3AH;直接寻址;直接寻址立即寻址立即寻址(Immediate addressingImmediate addressing)存储器操作数,地址在寄存器中存储器操作数,地址在寄存器中寄存器名加前缀寄存器名加前缀 “”标志标志例例MOVA,R065H65H65H65H3AH3AH3AH3AH65H65H65H65H3AH3AH3AH3AH片内片内片内片内RAMRAMRAMRAM00H00

10、H00H00HR R R R0 0 0 0A A A A寄存器间接寻址寄存器间接寻址(RegistorRegistor Indirect Addressing)Indirect Addressing)间接寻址空间及范围间接寻址空间及范围存储空间存储空间/助记符助记符间址寄存器地址范围地址范围内部内部RAM RAM MOVMOV RiRi00H-FFH00H-FFH扩展RAM MOVX RiRiDPTRDPTR00H-FFH00H-FFH0000-FFFFH扩展RAM页MOVX RiRi页地址由P2确定页内地址00H-FFH例:MOVA,R0例:MOVXDPTR,A需先向间址寄存器写入地址码基址

11、寄存器基址寄存器:DPTR:DPTR或或PCPC(含(含1616位地址)位地址)变址寄存器变址寄存器:A:A(含(含8 8位地址)位地址)两两寄寄存存器器内内容容相相加加,作作为为1616位位存存储储器器地地址址,在在代代码码空空间间访问操作数(常数)或目标地址(转移)访问操作数(常数)或目标地址(转移)仅有仅有3 3条这样的指令:条这样的指令:MOVMOVC C A A,A+DPTRA+DPTRMOVMOVC C A A,A+PCA+PCJMP JMP A+DPTRA+DPTR前两条为查表指令,后一条实现散转。前两条为查表指令,后一条实现散转。基址变址寻址基址变址寻址(Based Index

12、ed Addressing)(Based Indexed Addressing)相对寻址相对寻址l相对寻址不用于操作数的寻址,只用于控制转移指令,相对寻址不用于操作数的寻址,只用于控制转移指令,是程序目标地址的形成方法之一。是程序目标地址的形成方法之一。l目标地址目标地址=当前指令地址当前指令地址+指令字节数指令字节数+rell例:例:JZ30H;若若A=0,(,(PC)(PC)+02H+30H ;若若A0,则程序程序顺序序执行行 指令中给出可寻址位的位地址,据此进行位操作。指令中给出可寻址位的位地址,据此进行位操作。位寻址位寻址范围包括:范围包括:(1 1)内部)内部RAMRAM中的可位寻址

13、区中的可位寻址区字节地址字节地址20-2FH20-2FH,128128个位,位地址个位,位地址00-7FH00-7FH(2 2)SFRSFR的可寻址位的可寻址位字节地址能被字节地址能被8 8整除整除,位地址位地址80-FFH80-FFH例:例:MOVMOVC C,20H 20H 不是直接寻址注意不是直接寻址注意例:例:SETBSETB F0F0位寻址(位寻址(Bit AddressingBit Addressing)l直接位地址表示法:如直接位地址表示法:如D5HD5H,表示,表示PSWPSW的的D5D5位;位;l点操作符法:点操作符法:PSW.520H.1 ACC.7;l位名称法位名称法:P

14、 C F0 P1.0 P3.5 T0;l伪指令自定义的字符名称。如伪指令自定义的字符名称。如USRF bit F0USRF bit F0以后的程序中就用以后的程序中就用USRFUSRF代替代替F0F0;问问题题:在在程程序序行行中中,大大致致相相同同的的助助记记符符,其其中中的的地地址址理理解为字节地址还是位地址?是否位操作?解为字节地址还是位地址?是否位操作?这主要看指令功能、上下文。这主要看指令功能、上下文。位地址表示法位地址表示法l内部数据传送指令(内部数据传送指令(15条)条)l外部数据传送指令(外部数据传送指令(7条)条)l堆栈操作指令(堆栈操作指令(2条)条)l数据交换指令(数据交

15、换指令(4条)条)使用最频繁的一类指令使用最频繁的一类指令,通用格式:通用格式:MOV MOV dstdst,srcsrc 执行后,源操作数保持不变执行后,源操作数保持不变 基本不影响标志位,例外的是基本不影响标志位,例外的是奇偶标志位奇偶标志位P P以以PSW为为dst7.2 数据传送类指令MOVA,#data;(A)#dataMOVdirect,#data;(direct)#dataMOVRi,#data;(Ri)#dataMOVRn,#data;(Rn)#dataMOVDPTR,#datal6;(DPTR)#data161.立即数为源操作数的传送指令MOVA,direct;(A)(dir

16、ect)MOVdirect,A;(direct)(A)MOVA,Ri;(A)(Ri),i取取0或或1MOVRi,A;(Ri)(A),i取取0或或1MOVA,Rn;(A)(Rn),n取取07MOVRn,A;(Rn)(A),n取取072 累加器A(Rn、RAM、SFR)之间的数据传送MOVdirect,direct;(direct)(direct)MOVdirect,Ri;(direct)(Ri),i取取0或或1MOVRi,direct;(Ri)(direct),i取取0或或1MOVdirect,Rn;(direct)(Rn)MOVRn,direct;(Rn)(direct),n取取073.RAM

17、,Rn,SFR之间的数据传送字节交换指令字节交换指令XCHA,direct;(A)(direct)XCHA,Ri;(A)(Rt),i取取0或或1XCHA,Rn;(A)(Rn),n取取07半字节交换指令半字节交换指令XCHDA,Ri;(A3A0)(Ri)30)特点:特点:围绕围绕A设计的指令,设计的指令,操作数寻址方式有限制操作数寻址方式有限制4.字节、半字节交换指令设设(R0)=20H,(A)4EH,(20H)=85H执行指令:执行指令:XCHA,R0,结果:结果:(A)85H,(20H)4EH,实现,实现A与与20H单单元内容互换。元内容互换。设设(R0)30H,(A)=46H,(30H)=

18、85H执行指令执行指令:XCHDA,R0结果:结果:(30H)=86H,(A)=45H,实现了低,实现了低4位内容位内容互换,而高互换,而高4位内容不变。位内容不变。例7-1,7-2MOV指令数据传送指令数据传送5 栈操作指令l进栈指令 PUSH direct ;(SP)(SP)+1,(SP)(direct)功能:堆栈指针SP加1,然后将直接地址direct单元的内容送到SP所指向的栈顶。l出栈指令 POP direct ;(direct)(SP),(SP)(SP)1 功能:将SP所指向的堆顶的内容送到直接地址direct指向的单元中,然后堆栈指针SP减1。例73在中断响应时,在中断响应时,(

19、SP)26H,(DPTR)=0213H。执行下列指令。执行下列指令PUSHDPLPUSHDPH后后RAM地址地址27H,28H和栈指针和栈指针SP的内容。的内容。DPL和和DPH分别是分别是DPTR的低的低8位和高位和高8位,并可以单独使用。另外,位,并可以单独使用。另外,本指令系统的堆栈只支持本指令系统的堆栈只支持8位操作,因此位操作,因此16位的位的DPTR需要保存到堆栈需要保存到堆栈就只能分两次实现。就只能分两次实现。执行执行PUSHDPL后:后:(SP)+1(SP)27H,(DPL)=13H(27H)执行执行PUSHDPH后:后:(SP)+1(SP)28H,(DPH)02H(28H);

20、执行结果:执行结果:内部内部RAM(27H)13H,(28H)02H,(SP)28H正误正误PUSH指令的操作数只能是直接寻址,以下指令是合法的:PUSH ACC POP BPUSH 01H但下列两条指令是错误的:PUSHAPUSHR1ACC、B、01H都是直接地址,而A和R1都是寄存器。例74设(SP)62H,内部RAM的60H62H中的内容分别为20H,23H,01H,执行下列指令分别有怎样的结果?POP DPH (SP)=(62H)01H (DPH)(SP)-1=62-1=61H (SP)POP DPL(SP)(61H)23H DPL(SP)161H160H SP POP SP(SP)-

21、15FH SP(SP)(60H)20H SP结果:(DPTR)0123H,(SP)20H这里第3条指令特殊,其操作为:栈指针(SP)先减1为5FH,后装入由栈顶弹出的值,最后(SP)20H。1外部外部RAM的与累加器的与累加器A之间的数据传送之间的数据传送MOVXA,DPTRMOVXDPTR,A MOVXA,RiMOVXRi,Al前面两条指令可以访问外部前面两条指令可以访问外部RAM的整个的整个64K空空间,地址范围是间,地址范围是0000HFFFFH;l后两条指令可以访问外部后两条指令可以访问外部RAM任一页中任一页中00HFFH的的256个字节,页地址由个字节,页地址由P2口的锁存器决定。

22、口的锁存器决定。外部数据传送指令2 2外部外部ROM向累加器向累加器A传送指令传送指令 这这类类指指令令共共有有两两条条变变址址寻寻址址,单单向向传传输输,因专用于查表,又称为查表指令,指令的格式为因专用于查表,又称为查表指令,指令的格式为:MOVCA,A+PCMOVCA,A十十DPTR把把20H20H2FH2FH单元中的内容转移到单元中的内容转移到40H40H4FH4FH单元中单元中 MOV R0,#20H MOV R0,#20H ;设定源数据块指针;设定源数据块指针 MOV R1,#40H MOV R1,#40H ;设目的数据块指针;设目的数据块指针 MOV R2,#16 MOV R2,#

23、16 ;数据块长度,;数据块长度,1010进制进制LOOPLOOP:MOV A,R0 MOV A,R0 ;取数;取数 MOV R1,AMOV R1,A ;存数;存数 INC R0 INC R0 ;指针调整;指针调整 INC R1 INC R1 ;指针调整;指针调整 DJNZDJNZ R2,LOOP R2,LOOP ;循环控制;循环控制LOOPLOOP是标号,标记循环的开始地址;是标号,标记循环的开始地址;DJNZDJNZ是循环控制指令,后面才讲到。是循环控制指令,后面才讲到。思考:如果题目要求变一下,把思考:如果题目要求变一下,把20H20H2FH2FH单元中的内单元中的内容转移到容转移到28

24、H28H37H H单元中,应该怎样修改程序?单元中,应该怎样修改程序?例补例 MCSMCS5l5l有比较丰富的算术运算指令有比较丰富的算术运算指令:可可以以分分为为加加法法、减减法法、十十进进制制调调整整和和乘乘除除法法四四类类。除除加加1 1和和减减1 1指指令令外外,其其余余指指令令均均能能影影响响PSWPSW标标志志特特征。征。7.3算术运算类指令l参加运算的两个数必须是参加运算的两个数必须是8位二进制数,结果也是位二进制数,结果也是一个一个8位二进制数,且对位二进制数,且对PSW中标志位产生影响。中标志位产生影响。l既可以把参加运算的两个操作数理解为无符号数既可以把参加运算的两个操作数

25、理解为无符号数(0255),也可以把理解为带符号数的补码形式,也可以把理解为带符号数的补码形式(128127)。lCPU同时按无符号数运算法则影响同时按无符号数运算法则影响PSW中的中的CY标标志位志位;按带符号数法则影响按带符号数法则影响PSW中的中的OV标志位。标志位。加减法指令的特点:加减法指令的特点:不带进位不带进位lADDA,#data;(A)(A)+#datalADDA,direct;(A)(A)+(direct)lADDA,Ri;(A)(A)+(Ri)lADDA,Rn;(A)(A)+(Rn)带进位加法指令带进位加法指令lADDCA,#data;(A)(A)+#data+(C)lA

26、DDCA,direct;(A)(A)+(dirct)+(C)lADDCA,Ri;(A)(A)+(Ri)+(C)lADDCA,Rn;(A)(A)+(Rn)+(C)加法指令带借位减法指令带借位减法指令SUBB A,#data ;(A)(A)data (C)SUBB A,data ;(A)(A)(data)(C)SUBB A,Ri ;(A)(A)(Ri)(C)SUBB A,Rn ;(A)(A)(Rn)(C)MCS-51的减法指令只有带借位的一种选择,如果不需要带借位的减法运算,减法指令前增加一条CLR C指令,这条指令的功能是清除进位标志。加加1减减1指令指令加1指令INC A ;(A)(A)+1I

27、NC Direct ;(direct)(direct)+1INC Ri ;(Ri)(Ri)+1INC Rn ;(Rn)(Rn)+1INC DPTR ;(DPTR)(DPTR)+1减1指令DEC A ;(A)(A)1DEC Direct ;(direct)(diret)1DEC Ri ;(Ri)(Ri)1DEC Rn ;(Rn)(Rn)1例写出以下一段程序各写出以下一段程序各条指令执行的结果条指令执行的结果 MOVMOVA A,#0B3H#0B3H MOV MOV20H20H,#10H#10H MOV MOVR0R0,#20H#20H ADD ADDA A,R0R0 ADD ADDA A,R0R

28、0 ADD ADDA A,#20H#20H(A)=0B3H(20H)=10H(R0)=20H(A)+(R0)=0B3H+10H=0C3HCY=0,OV=0(A)+(R0)=0C3H+20H=0E3HCY=0,OV=0(A)+20H=0E3H+20H=03HCY=1,OV=0写出以下一段程序各写出以下一段程序各条指令执行的结果条指令执行的结果 MOVMOVA A,#0B3H#0B3H MOV MOV20H20H,#10H#10H MOV MOVR0R0,#20H#20H ADD ADDA A,R0R0 ADD ADDA A,R0R0 ADD ADDA A,#20H#20H(A)=0B3H(20H

29、)=10H(R0)=20H(A)+(R0)=0B3H+10H=0C3HCY=0,OV=0(A)+(R0)=0C3H+20H=0E3HCY=0,OV=0(A)+20H=0E3H+20H=03HCY=1,OV=0第第一一数数存存于于30H30H和和31H31H地地址址单单元元,第第二二数数存存于于32H32H和和33H33H地地址址单单元元,和和存存于于34H34H和和35H35H地地址址单单元元。数数据据存存储储时时假假定定高高位在前,低位在后。位在前,低位在后。MOV AMOV A,31H31H;取第;取第1 1数低位数低位 ADD AADD A,33H33H;加第;加第2 2数低位数低位 M

30、OV 35HMOV 35H,A A;存和的低位;存和的低位 MOV AMOV A,30H30H;取第;取第1 1数高位数高位 ADDC AADDC A,32H32H;带进位加第;带进位加第2 2数高位数高位 MOV 34HMOV 34H,A A;存和的高位;存和的高位例 两个16位数加法DA ADA A没有直接的没有直接的BCDBCD码运算指令码运算指令借用二进制加法运算指令实现压缩借用二进制加法运算指令实现压缩BCDBCD码的运算码的运算两个两个BCDBCD码的加法可能结果不是码的加法可能结果不是BCDBCD码码该指令对累加器中的结果进行调整。该指令对累加器中的结果进行调整。调整依据:调整依

31、据:1 BCD1 BCD码的低位码的低位9 9 或或 半进位半进位ACAC1 1 加加06H06H调整;调整;2 BCD2 BCD码的高位码的高位9 9 或或 CYCY1 1 加加60H60H调整;调整;3 3 如果以上两条都符合,则加如果以上两条都符合,则加66H66H调整调整指令仅对进位标志指令仅对进位标志CYCY产生影响。产生影响。十进制调整指令例7-5l多字节加法运算问题:两个8字节无符号数分别存放在内部RAM的30h和38h开始的连续地址单元,且低位在前,高位在后。假定计算结果仍不超过8字节的范围,并要求将结果放在30h开始的连续8个存储单元。试编写该程序段。MOVB,#8;计数初值

32、MOVR0,#30H;第一操作数起始地址MOVR1,#38H;第一操作数和结果起始地址CLRC ;清除进位位REPEAT:MOVA,R0;取加数到AADDC A,R1;带进位加法MOVR1,A;存结果INCR0;地址调整INCR1;地址调整DJNZB,REPEAT;B内容减1,若不等于0则跳转思考:1 为什么要有CLR C 语句?2 如果是8字节BCD码运算,应该如何修改?作业7-12类似3 为什么INC指令不影响CY?l MULMULAB AB 乘法乘法 l(B)B)(A)A)(B)(B)15158 8l(A)A)(A)A)(B)(B)7 70 0l除法除法 DIVDIV AB ABl(A)

33、=(A)/(B)(A)=(A)/(B)l(B)=(A)%(B)(B)=(A)%(B)无符号整数乘法和除法指令(1616位部分积)位部分积)(R7R7)(R5R5)(1616位部分积)位部分积)(30H30H)(31H)31H)(32H32H)2424位乘积位乘积+(R6R6)(R5R5)(R6)R6)(R7R7)(R5R5)例 16X8位乘法程序l仿照十进位数竖式乘法,编程如下:仿照十进位数竖式乘法,编程如下:MOV AMOV A,R7R7 MOV B MOV B,R5R5 MUL AB MUL AB;(;(R7R7)*(R5R5)MOV 32HMOV 32H,A A;部分积的低;部分积的低8

34、 8位直接保存位直接保存32H32H单元单元 MOV R7,BMOV R7,B;部分积高位暂存在;部分积高位暂存在R7R7中中 MOV AMOV A,R6R6 MOV B MOV B,R5R5 MUL AB MUL AB;(;(R6R6)(R5R5)ADD AADD A,R7R7;部分积低;部分积低8 8位与上次部分积高位与上次部分积高8 8位相加位相加 MOV 31HMOV 31H,A A;存中;存中8 8位字节位字节 CLR ACLR A ADDC A ADDC A,B B;部分积高;部分积高8 8位与中位与中8 8位的进位位相加位的进位位相加 MOV 30HMOV 30H,A A;存中;

35、存中8 8位字节位字节l双操作数逻辑运算双操作数逻辑运算l与与 ANLANLl或或 ORLORLl异异 XRLXRLl单操作数逻辑运算单操作数逻辑运算l累加器其清零累加器其清零 CLRCLRA Al累加器取反指令累加器取反指令 CPLCPL A Al累加器移位指令累加器移位指令 RR RR A A7.4 逻辑操作类指令以直接地址为目的操作数以直接地址为目的操作数与累加器内容或立即数与累加器内容或立即数数按位与运算数按位与运算结果送回直接地址;结果送回直接地址;以累加器以累加器A为目的操作数为目的操作数把累加器把累加器A和源地址中操作和源地址中操作数按位与运算数按位与运算结果送回累加器结果送回累

36、加器A;逻辑与指令ANL A,RnANL A,directANL A,RiANL A,#data8ANL direct,AANL direct,#data87.4.2逻辑或指令、逻辑异或指令lORLA,RnlORLA,directlORLA,RilORLA,#data8lORLdirect,AlORLdirect,#data8lXRLA,RnlXRLA,directlXRLA,RilXRLA,#data8lXRLdirect,AlXRLdirect,#data8例例7-6设(A)36H,(R4)0FH。求执行指令 ANL A,R4 后的结果执行结果 (A)00110110B (R4)00001

37、111B (A)00000110B怎样在内存中将az的ASCII码变换为AZ的ASCII码?已知a和A的ASCII分别为61h和41h,其余字母的ASCII按16进制数规律顺序递增。小写字母的ASCII码与上11011111B,得到相应的大写字母的ASCII码。设(A)0A8H ,data0FH。执行指令 ORL A,#data执行结果 (A)10101000B data 00001111B (A)10101111B 怎样在内存中将AZ 的ASCII码变换为az的ASCII码?大写字母的ASCII码或上00100000B,得到相应的小写字母的ASCII码。例例7-7设:一个以设:一个以ASCI

38、IASCII码形式表示的两位数,其十位和个位码形式表示的两位数,其十位和个位分别存放在内部的分别存放在内部的20H,21H20H,21H地址,试将其转换成一字节地址,试将其转换成一字节表示的表示的BCDBCD码数,并发送到码数,并发送到P1P1端口。端口。MOV R0,#20HMOV R0,#20H MOV A,R0 MOV A,R0 ;取十位ASCII码 ANL A,#0FHANL A,#0FH ;保留低4位,高4位清0 INC R0 INC R0 MOV B,#10H MOV B,#10H ;个位移到高4位上 MUL ABMUL AB XCHD A,R0 XCHD A,R0 ;将个位的低4

39、位交换过来 MOV P1MOV P1,A A如果是将这两个如果是将这两个ASCIIASCII码转成二进制数,要作怎样的修改?码转成二进制数,要作怎样的修改?例数字数字52的的ASCII码码35H32H20H21H5 2BCD码码SWAP A即实验二 8-70-9减30H A-F减37H已已知知:内内部部RAM RAM 30H30H中中有有一一数数(如如AAHAAH)现现欲欲令令它高它高4 4位不变低位不变低4 4位取反,试写出相应指令组。位取反,试写出相应指令组。MOV AMOV A,#0FH#0FH;XRL 30H,AXRL 30H,A例CLR ACLR A;清;清0 0 CPL ACPL

40、A;取反;取反 为单字节单周期指令。试比较下列两组指令:为单字节单周期指令。试比较下列两组指令:累加器清零和取反指令MOV R0,#0MOV R1,#0MOV R2,#0MOV R3,#0CLRAMOVR1,AMOVR2,AMOVR3,AMOVR4,A RL ARL A;累加器左环移一位累加器左环移一位;RLC A RLC A;累加器通过累加器通过C C左环移一位左环移一位;RR A RR A 累加器右环移一位累加器右环移一位;RRC A RRC A;累加器通过累加器通过C C 右环移一位右环移一位 SWAP ASWAP A;半字节交换半字节交换累加器A移位指令(1字节1周期)l1 1)无条件

41、转移指令)无条件转移指令l2 2)条件转移指令)条件转移指令l3 3)子程序调用和返回指令)子程序调用和返回指令7.5 控制转移类指令 LJMPLJMP addr16 addr16;长转移指令;长转移指令 AJMPAJMP addr11 addr11;绝对转移指令;绝对转移指令 SJMPSJMP relrel ;相对转移指令,;相对转移指令,JMPJMP A+DPTR A+DPTR;变址寻址转移指令;变址寻址转移指令无条件转移指令l长转移指令长转移指令(64KB(64KB范围内转移指令范围内转移指令)LJMP LJMPaddr16addr16 执执行行时时,addrl6addrl6送送入入程程

42、序序计计数数器器PCPC,下下条条指指令令取取指指令令时,转移自然发生。时,转移自然发生。本指令为本指令为3 3字节字节2 2周期指令周期指令例例 已已知知某某型型号号MCUMCU在在出出厂厂时时自自带带一一段段有有用用的的程程序序代代码码,ROMROM区的地址是区的地址是F100HF100H,怎样转移到该处执行?,怎样转移到该处执行?用指令用指令LJMP 0F100HLJMP 0F100Hl绝对转移指令绝对转移指令(2K(2K地址内的转移指令地址内的转移指令)AJMP addr11AJMP addr11执执行行时时,addrl1addrl1送送入入程程序序计计数数器器PCPC的的低低1111

43、位位,PCPC的的高高5 5位位不不变,即在一定范围内转移变,即在一定范围内转移本指令为本指令为2 2字节字节2 2周期指令周期指令功能:功能:(PC)(PC)+2,(PC)(PC)+rel转移范围转移范围RelRel=-128=-128+127+127目标地址目标地址=源地址源地址+rel或或Rel=目标地址目标地址源地址。源地址。l关于源地址的解释:关于源地址的解释:l指令微操作期间,指令微操作期间,(PC)实际在取指的同时递增实际在取指的同时递增l取指毕但尚未执行时,取指毕但尚未执行时,(PC)已递增到其下一条指令的地址,已递增到其下一条指令的地址,这就是源地址。这就是源地址。l这就是这

44、就是(PC)(PC)+2。lrel由汇编器计算,为由汇编器计算,为1字节补码,带符号扩展后与字节补码,带符号扩展后与16位位(PC)相加,实现跳转。相加,实现跳转。l从现行指令的首地址算起,该范围就是从现行指令的首地址算起,该范围就是126+129。相对转移指令 SJMP rel 程序存储器程序存储器程序存储器程序存储器0000H0000H0000H0000H54H54H54H54H20H20H20H20H02H02H02H02HALUALUALUALUA A A APCPCPCPC2056H2056H2056H2056H2002H2002H2002H2002H2001H2001H2001H2

45、001H2000H2000H2000H2000H 80H80H80H80H54H54H54H54H 2000H8054HSJMPrell间接转移指今间接转移指今 JMP A+DPTRJMP A+DPTR;(PC)(PC)(DPTR)+(A)(DPTR)+(A)1 1字节字节2 2周期转移指令;周期转移指令;目目标标地地址址由由基基址址+变变址址获获得得,习习惯惯上上称称为为间间接接转转移移。该该指指令令实现散转,支持类似于实现散转,支持类似于C C语言中的语言中的switch/caseswitch/case选择。如图选择。如图实现散转的程序安排实现散转的程序安排MOVDPTR,#TABLEAD

46、DA,A ;A内容乘2,因散转表每一项为2字节JMPA+DPTRTABLE:AJMPK0;散转表,第0项,转K0执行 AJMPK1 ;散转表,第1项,转K0执行 AJMPK5 ;散转表,第5项,转K5执行 K0:;K0分支实际入口AJMPDONE;K0分支结束,转出K1:;K1分支实际入口AJMPDONE;K1分支结束,转出 K5:;K5分支实际入口AJMPDONE;K5分支结束,转出(此为最后一项)DONE:(1)(1)累加器累加器A A判零转移指令判零转移指令 JZJZ relrel 若若(A)=0 PCPC+2+REL(A)=0 PCPC+2+REL 若若(A)0 PCPC+2(A)0

47、PCPC+2 JNZ JNZ relrel 若若(A)0 PCPC+2+REL(A)0 PCPC+2+REL 若若(A)=0 PCPC+2(A)=0 PCPC+2 许许多多MPUMPU都都具具有有用用于于判判断断运运算算结结果果是是否否为为零零的的标标志志位位;但但是是,MCS-51MCS-51省省略略了了该该标标志志。它它仅仅凭凭(A)(A)的内容,不需要运算,就直接用于判别。的内容,不需要运算,就直接用于判别。条件转移指令(2)根据进位标志位转移根据进位标志位转移lJCrel;Cy=1时转移:PC PC+2+rel,;Cy=0时顺序执行:PCPC+2lJNCrel;C=0时转移:PC PC

48、+2+rel,;Cy=1时顺序执行:PCPC+2例例 MOVA,20H;A XJZDONE;若;若X=0转转DONEJNBACC.7,POSI;X0转转POSIMOVA,#0FFH;若;若X0,则则Y=1DONE:MOV21H,A;存函数;存函数值值如下函数,如下函数,变量X存放在20H单元内,函数值Y存放在21H单元中,试按下式的要求给Y赋值。(3)(3)比较条件转移指令比较条件转移指令 CJNECJNE A,direct,relA,direct,rel 若若(A)directA)direct,PCPC+3+rel,PCPC+3+rel相对转移;相对转移;(A)=(A)=(directdir

49、ect),),PCPC+3PCPC+3顺序执行;顺序执行;且若且若(A)(A)(directdirect),),CY=0;CY=0;(A)(A)(directdirect),),CY=1CY=1类似的指令还有三条:类似的指令还有三条:CJNECJNE A,#data8,rel A,#data8,rel CJNE CJNE Rn,#data8,rel Rn,#data8,rel CJNE CJNE Ri,#data8,rel Ri,#data8,rel都都是是3 3字字节节指指令令,源源地地址址为为指指令令存存储储地地址址+3+3,偏偏移移量量relrel为为-128-128+127+127。相

50、对于其存储地址来说,转移范围为相对于其存储地址来说,转移范围为-125-125+130+130。比较相当于减法,但不保存结果,只影响比较相当于减法,但不保存结果,只影响CyCy标志。标志。若若参参加加比比较较的的操操作作数数X X和和Y Y是是无无符符号号数数,若若cy=0cy=0,则则X XY Y;若;若CyCyl l,则,则X XY Y。若是补码,则仅根据若是补码,则仅根据CyCy无法判断它们的大小的。无法判断它们的大小的。建建议议先先将将待待比比较较的的两两个个数数都都加加80H80H,转转为为无无符符号号比比较较和和判判断,比较完毕,根据需要在把两数恢复成原来的数。断,比较完毕,根据需

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁