ImageVerifierCode 换一换
格式:PPT , 页数:101 ,大小:603KB ,
资源ID:13990542      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13990542.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(第7章.MCS-51指令系统.ppt)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

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

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,概述,寻址方式,分类指令介绍,第,7,章,MCS-51,指令系统,7.1.1,指令分类,MCS-51,的指令系统,使用,42,种助记符,表达,33,种功能,共由,111,条指令构成。,按指令编码的字节数分类:,1,字节,(49,条,),、,2,字节,(45,条,),、,3,字节,(17,条,),。,按指令的机器周期数分类:,1,个机器周期,(64,条,),;,2,个机器周期,(45,条,),;,4,个机器周期,(2,条,

2、乘、除各,1,条),实际应用中最频繁的指令,为单周期指令,故,f,osc,=12MHz,T=1,s,。,速度指标为,1MIPS,7.1,指令系统概述,指令的类别及其要素,数据传送类,30,条,算术运算类,24,条,逻辑运算类,35,条,转移操作类,22,条,布尔指令类,位操作子集,指令的功能,指令的寻址方式,指令对,PSW,的影响,指令的编码字节数,指令的机器周期,在程序中行中,指令语句按如下形式书写:,标号,:,助记符,操作数,1,,,操作数,2,,,操作数,3,;,注释,标号于程序行中,代表指令所在的地址,符号地址;,在指令功能解释阶段不使用标号;,两个操作数的情况比较多,常写成如下:,操

3、作码,目的操作数,源操作数,或,op_code,dst,src,7.1.2,书写格式与缩略语,Rn,-,当前组的通用寄存器,,n=0,7,Ri-0,或,1,,,R0,或,R1,作间接寻址寄存器。,direct-8,位内部单元的地址,即直接寻址。,#data,,,#data16-,分别为,8,位和,16,位立即数。,addr16-16,位目的地址。,addr11-11,位目的地址。,rel-8,位带符号的补码偏移量。,bit-,内部,RAM,可位寻址的位地址。,/,表示取反操作。,(X)-X,单元中的内容。,(X)-,以,X,单元内容为地址的单元的内容。,-,间接寄存器或基址寄存器的前缀。,寻址

4、方式常用符号说明,寻找操作数(数据,指令的处理对象)的方式,寄存器寻址,直接寻址,立即寻址,寄存器间接寻址,变址寻址,寻找目标地址(程序流程控制)的方式,相对寻址,绝对寻址,隐含寻址,位寻址,7.1.3,寻址方式,(Addressing Mode),寄存器操作数,寻址范围:,(,1,),4,组,R0,R7,共,32,个工作寄存器,(,2,)部分特殊功能寄存器,例如,A,、,B,以及数据指针寄存器,DPTR,等。,例:,MOV,A,,,Rn,;(,Rn,),A,,,n=0,7,MOV,B,A,寄存器寻址,(,Registor,Addressing,),存储器操作数,其地址直接编码到指令中,寻址范

5、围:,(1),内部,RAM,的低,128,个单元(,00-7FH,),例,MOV A,,,40H,(2),特殊功能寄存器。,例,MOV A,,,80H,;地址码形式,MOV A,,,P0,;,SFR,符号形式,两者的机器码完全一致,后者便于记忆。,直接寻址,(Direct Addressing),超过,7FH,就到,SFR,范围,88H,累加器,A,88H,3AH,片内,RAM,MOV A,,,3AH,寄存器,A,INC,A,;,寄存器寻址,特殊功能寄存器,Acc,(,E0H,),INC,ACC,;,直接寻址,,名称符号,或,INC,0,E0H,;直接寻址,地址码,指令都使累加器中内容加,1,

6、但是寻址方式不同,指令编码字节数也不同。,累加器的两种寻址方式,常数操作数,编码在指令中,(取指完成,操作数立即得到,因此得名),,立即数有前缀标志,“,#,”,。,例,MOV A,,,#40H,在表示法中,记为,#data,8,位立即数;,#datal6,16,位立即数。,区别:,MOV A,,,#,3AH,;立即寻址,MOV A,,,3AH,;直接寻址,立即寻址,(,Immediate addressing,),存储器操作数,地址在寄存器中,寄存器名加前缀,“,”,标志,例,MOV A,,,R0,65H,3AH,65H,3AH,片内,RAM,00H,R,0,A,寄存器间接寻址,(,Reg

7、istor,Indirect Addressing),间接寻址空间及范围,存储空间,/,助记符,间址寄存器,地址范围,内部,RAM,MOV,Ri,00H-FFH,扩展,RAM,MOVX,Ri,DPTR,00H-FFH,0000-FFFFH,扩展,RAM,页,MOVX,Ri,页地址由,P2,确定,页内地址,00H-FFH,例:,MOVA,R0,例:,MOVX,DPTR,A,需先向间址寄存器写入地址码,基址寄存器,:DPTR,或,PC,(含,16,位地址),变址寄存器,:A,(含,8,位地址),两寄存器内容相加,作为,16,位存储器地址,在代码空间访问操作数(常数)或目标地址(转移),仅有,3,条

8、这样的指令:,MOV,C,A,,,A+DPTR,MOV,C,A,,,A+PC,JMP,A+DPTR,前两条为查表指令,后一条实现散转。,基址变址寻址,(Based Indexed Addressing),相对寻址,相对寻址不用于操作数的寻址,只用于控制转移指令,是程序目标地址的形成方法之一。,目标地址,=,当前指令地址,+,指令字节数,+,rel,例:,JZ 30H,;,若,A=0,,(,PC,)(,PC,),+02H+30H,;,若,A,0,,则程序顺序执行,指令中给出可寻址位的位地址,据此进行位操作。,位寻址,范围包括:,(,1,)内部,RAM,中的可位寻址区,字节地址,20-2FH,,,

9、128,个位,位地址,00-7FH,(,2,),SFR,的可寻址位,字节地址能被,8,整除,位地址,80-FFH,例:,MOV,C,20H,不是直接寻址注意,例:,SETB,F0,位寻址(,Bit Addressing,),直接位地址表示法:如,D5H,,表示,PSW,的,D5,位;,点操作符法:,PSW.520H.1 ACC.7,;,位名称法,:,P C F0 P1.0 P3.5 T0,;,伪指令自定义的字符名称。如,USRF bit F0,以后的程序中就用,USRF,代替,F0,;,问题:在程序行中,大致相同的助记符,其中的地址理解为字节地址还是位地址?是否位操作?,这主要看指令功能、上下

10、文。,位地址表示法,内部数据传送指令(,15,条),外部数据传送指令(,7,条),堆栈操作指令(,2,条),数据交换指令(,4,条),使用最频繁的一类指令,通用格式:,MOV,dst,,,src,执行后,源操作数保持不变,基本不影响标志位,例外的是,奇偶标志位,P,以,PSW,为,dst,7.2,数据传送类指令,MOV A,,,#data,;,(A)#data,MOV direct,,,#data,;,(direct)#data,MOV,Ri,,,#data,;,(,Ri,)#data,MOV,Rn,,,#data,;,(,Rn,)#data,MOV DPTR,,,#datal6,;,(DPT

11、R)#data16,1.,立即数为源操作数的传送指令,MOV A,direct,;,(A)(direct),MOV direct,A,;,(direct)(A),MOV A,Ri,;,(A)(,Ri,),,,i,取,0,或,1,MOV ,Ri,A,;,(,Ri,)(A),,,i,取,0,或,1,MOV A,Rn,;,(A)(,Rn,),,,n,取,0,7,MOV,Rn,A,;,(,Rn,)(A),,,n,取,0,7,2,累加器,A,(,Rn,、,RAM,、,SFR),之间的数据传送,MOV direct,,,direct,;,(direct)(direct),MOV direct,,,Ri,;

12、direct)(,Ri,),,,i,取,0,或,1,MOV,Ri,,,direct,;,(,Ri,)(direct),,,i,取,0,或,1,MOV direct,,,Rn,;,(direct)(,Rn,),MOV,Rn,,,direct,;,(,Rn,)(direct),,,n,取,0,7,3.RAM,,,Rn,,,SFR,之间的数据传送,字节交换指令,XCH A,direct,;,(A)(direct),XCH A,,,Ri,;,(A)(,Rt,),,,i,取,0,或,1,XCH A,,,Rn,;,(A)(,Rn,),,,n,取,0,7,半字节交换指令,XCHD A,,,Ri,;,(A

13、3,A,0,)(Ri),3,0,),特点:,围绕,A,设计的指令,,操作数寻址方式有限制,4.,字节、半字节交换指令,设,(R0)=20H,,,(A),4EH,,,(20H)=85H,执行指令:,XCH,A,,,R0,,,结果:,(A),85H,(20H),4EH,,实现,A,与,20H,单元内容互换。,设,(R0),30H,(A)=46H,,,(30H)=85H,执行指令,:,XCHD,A,,,R0,结果:,(30H)=86H,,,(A)=45H,,实现了低,4,位内容互换,而高,4,位内容不变。,例,7-1,,,7-2,MOV,指令数据传送,5,栈操作指令,进栈指令,PUSH direc

14、t,;,(SP)(SP)+1,,,(SP)(direct),功能:堆栈指针,SP,加,1,,然后将直接地址,direct,单元的内容送到,SP,所指向的栈顶。,出栈指令,POP direct,;,(,direct)(SP,),(SP)(SP),1,功能:将,SP,所指向的堆顶的内容送到直接地址,direct,指向的单元中,然后堆栈指针,SP,减,1,。,例,7,3,在中断响应时,,(SP),26H,(DPTR)=0213H,。执行下列指令,PUSH DPL,PUSH DPH,后,RAM,地址,27H,28H,和栈指针,SP,的内容。,DPL,和,DPH,分别是,DPTR,的低,8,位和高,8,

15、位,并可以单独使用。另外,本指令系统的堆栈只支持,8,位操作,因此,16,位的,DPTR,需要保存到堆栈就只能分两次实现。,执行,PUSH DPL,后:,(SP)+1 (SP),27H,,,(DPL)=13H (27H),执行,PUSH DPH,后:,(SP)+1 (SP),28H,,,(DPH),02H (28H),;执行结果:,内部,RAM(27H),13H,,,(28H),02H,,,(SP),28H,正误,PUSH,指令的操作数只能是直接寻址,以下指令是,合法,的:,PUSH ACC POP BPUSH 01H,但下列两条指令是,错误,的:,PUSHAPUSHR1ACC,、,B,、,0

16、1H,都是直接地址,而,A,和,R1,都是寄存器。,例,7,4,设,(SP),62H,,内部,RAM,的,60H,62H,中的内容分别为,20H,,,23H,,,01H,,执行下列指令分别有怎样的结果,?,POP DPH,(SP)=(62H),01H (DPH),(SP)-1=62-1=61H (SP),POP DPL,(SP),(61H),23H DPL,(SP),1,61H,1,60H SP,POP SP,(SP)-1,5FH SP,(SP),(60H),20H SP,结果:,(DPTR),0123H,,,(SP),20H,这里第,3,条指令特殊,其操作为:栈指针,(SP),先减,1,为,

17、5FH,,后装入由栈顶弹出的值,最后,(SP),20H,。,1,外部,RAM,的与累加器,A,之间的数据传送,MOVX A,,,DPTR,MOVX DPTR,,,A,MOVX A,,,Ri,MOVX ,Ri,,,A,前面两条指令可以访问外部,RAM,的整个,64K,空间,地址范围是,0000HFFFFH,;,后两条指令可以访问外部,RAM,任一页中,00HFFH,的,256,个字节,页地址由,P2,口的锁存器决定。,外部数据传送指令,2,外部,ROM,向累加器,A,传送指令,这类指令共有两条变址寻址,单向传输,因专用于查表,又称为查表指令,指令的格式为,:,MOVC A,,,A+PC,MOVC

18、 A,,,A,十,DPTR,把,20H,2FH,单元中的内容转移到,40H,4FH,单元中,MOV R0,#20H,;设定源数据块指针,MOV R1,#40H,;设目的数据块指针,MOV R2,#16,;数据块长度,,10,进制,LOOP,:MOV A,R0,;取数,MOV R1,A,;存数,INC R0,;指针调整,INC R1,;指针调整,DJNZ,R2,LOOP,;循环控制,LOOP,是标号,标记循环的开始地址;,DJNZ,是循环控制指令,后面才讲到。,思考:如果题目要求变一下,把,20H,2FH,单元中的内容转移到,28H,37,H,单元中,应该怎样修改程序?,例,补例,MCS,5l,

19、有比较丰富的算术运算指令,:,可以分为,加法、减法、十进制调整,和,乘除法,四类。除,加,1,和,减,1,指令,外,其余指令均能影响,PSW,标志特征。,7.3,算术运算类指令,参加运算的两个数必须是,8,位二进制数,结果也是一个,8,位二进制数,且对,PSW,中标志位产生影响。,既可以把参加运算的两个操作数理解为无符号数,(0,255),,也可以把理解为带符号数的补码形式,(,128,127),。,CPU,同时按无符号数运算法则影响,PSW,中的,CY,标志位,;,按带符号数法则影响,PSW,中的,OV,标志位。,加减法指令的特点:,不带进位,ADD A,,,#data,;,(A)(,A)+

20、data,ADD A,,,direct,;,(A)(,A)+(direct,),ADD A,,,Ri,;,(A)(,A)+(Ri,),ADD A,,,Rn,;,(A)(,A)+(Rn,),带进位加法指令,ADDC A,,,#data,;,(A)(,A)+#data+(C,),ADDC A,,,direct,;,(A)(,A)+(dirct)+(C,),ADDC A,,,Ri,;,(A)(,A)+(Ri)+(C,),ADDC A,,,Rn,;,(A)(,A)+(Rn)+(C,),加法指令,带借位减法指令,SUBB A,,,#data,;,(A)(A)data (C),SUBB A,,,data

21、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)+1,INC Direct,;,(direct)(direct)+1,INC,Ri,;,(,Ri,)(Ri)+1,INC,Rn,;,(,Rn,)(Rn)+1,INC DPTR,;,(DPTR)(DPTR)+1,减,1,指令,D

22、EC A,;,(A)(A),1,DEC Direct,;,(direct)(,diret,),1,DEC,Ri,;,(,Ri,)(,Ri,),1,DEC,Rn,;,(,Rn,)(,Rn,),1,例,写出以下一段程序各,条指令执行的结果,MOVA,,,#0B3H,MOV20H,,,#10H,MOVR0,,,#20H,ADDA,,,R0,ADDA,,,R0,ADDA,,,#20H,(A)=0B3H,(20H)=10H,(R0)=20H,(A)+(R0)=0B3H+10H=0C3H,CY=0,OV=0,(A)+(R0)=0C3H+20H=0E3H,CY=0,OV=0,(A)+20H=0E3H+20H

23、03H,CY=1,OV=0,写出以下一段程序各,条指令执行的结果,MOVA,,,#0B3H,MOV20H,,,#10H,MOVR0,,,#20H,ADDA,,,R0,ADDA,,,R0,ADDA,,,#20H,(A)=0B3H,(20H)=10H,(R0)=20H,(A)+(R0)=0B3H+10H=0C3H,CY=0,OV=0,(A)+(R0)=0C3H+20H=0E3H,CY=0,OV=0,(A)+20H=0E3H+20H=03H,CY=1,OV=0,第一数存于,30H,和,31H,地址单元,第二数存于,32H,和,33H,地址单元,和存于,34H,和,35H,地址单元。数据存储时假定高

24、位在前,低位在后。,MOV A,,,31H,;取第,1,数低位,ADD A,,,33H,;加第,2,数低位,MOV 35H,,,A,;存和的低位,MOV A,,,30H,;取第,1,数高位,ADDC A,,,32H,;带进位加第,2,数高位,MOV 34H,,,A,;存和的高位,例 两个,16,位数加法,DA A,没有直接的,BCD,码运算指令,借用二进制加法运算指令实现压缩,BCD,码的运算,两个,BCD,码的加法可能结果不是,BCD,码,该指令对累加器中的结果进行调整。,调整依据:,1 BCD,码的低位,9,或 半进位,AC,1,加,06H,调整;,2 BCD,码的高位,9,或,CY,1,

25、加,60H,调整;,3,如果以上两条都符合,则加,66H,调整,指令仅对进位标志,CY,产生影响。,十进制调整指令,例,7-5,多字节加法运算问题:两个,8,字节无符号数分别存放在内部,RAM,的,30h,和,38h,开始的连续地址单元,且低位在前,高位在后。假定计算结果仍不超过,8,字节的范围,并要求将结果放在,30h,开始的连续,8,个存储单元。试编写该程序段。,MOVB,#8,;计数初值,MOVR0,,,#30H,;第一操作数起始地址,MOVR1,,,#38H,;第一操作数和结果起始地址,CLRC,;清除进位位,REPEAT,:,MOVA,,,R0,;取加数到,A,ADDCA,,,R1,

26、带进位加法,MOVR1,,,A,;存结果,INC,R0,;地址调整,INC,R1,;地址调整,DJNZB,,,REPEAT,;,B,内容减,1,,若不等于,0,则跳转,思考:,1,为什么要有,CLR C,语句?,2,如果是,8,字节,BCD,码运算,应该如何修改?作业,7-12,类似,3,为什么,INC,指令不影响,CY?,MUL,AB,乘法,(,B),(,A),(B),15,8,(,A),(,A),(B),7,0,除法,DIV,AB,(A)=(A)/(B),(B)=(A)%(B),无符号整数,乘法和除法指令,(,16,位部分积),(,R7,),(,R5,),(,16,位部分积),(,30H

27、31H),(,32H,),24,位乘积,+,(,R6,),(,R5,),(,R6),(,R7,),(,R5,),例,16X8,位乘法程序,仿照十进位数竖式乘法,编程如下:,MOV A,,,R7,MOV B,,,R5,MUL AB,;(,R7,)*(,R5,),MOV 32H,,,A,;部分积的低,8,位直接保存,32H,单元,MOV R7,B,;部分积高位暂存在,R7,中,MOV A,,,R6,MOV B,,,R5,MUL AB,;(,R6,),(,R5,),ADD A,,,R7,;部分积低,8,位与上次部分积高,8,位相加,MOV 31H,,,A,;存中,8,位字节,CLR A,AD

28、DC A,,,B,;部分积高,8,位与中,8,位的进位位相加,MOV 30H,,,A,;存中,8,位字节,双操作数逻辑运算,与,ANL,或,ORL,异,XRL,单操作数逻辑运算,累加器其清零,CLRA,累加器取反指令,CPL,A,累加器移位指令,RR A,7.4,逻辑操作类指令,以直接地址为目的操作数,与累加器内容或立即数,数按位与运算,结果送回直接地址;,以累加器,A,为目的操作数,把累加器,A,和源地址中操作,数按位与运算,结果送回累加器,A,;,逻辑与指令,ANL,A,Rn,ANL,A,direct,ANL,A,Ri,ANLA,#data8,ANL,direct,A,ANLdirect,

29、data8,7.4.2,逻辑或指令、逻辑异或指令,ORL,A,Rn,ORL,A,direct,ORL,A,Ri,ORL A,#data8,ORL,direct,A,ORL direct,#data8,XRL,A,Rn,XRL,A,direct,XRL,A,Ri,XRL A,#data8,XRL,direct,A,XRL direct,#data8,例,7-6,设,(A),36H,,,(R4),0FH,。,求执行指令,ANL A,,,R4,后的结果,执行结果,(A),00110110B,(R4),00001111B,(A),00000110B,怎样在内存中将,az,的,ASCII,码变换为,A

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

31、7,设:一个以,ASCII,码形式表示的两位数,其十位和个位分别存放在内部的,20H,21H,地址,试将其转换成一字节表示的,BCD,码数,并发送到,P1,端口。,MOV R0,#20H,MOV A,R0,;,取十位,ASCII,码,ANL A,#0FH,;,保留低,4,位,高,4,位清,0,INC R0,MOV B,#10H,;,个位移到高,4,位上,MUL AB,XCHD A,R0,;,将个位的低,4,位交换过来,MOV P1,,,A,如果是将这两个,ASCII,码转成二进制数,要作怎样的修改?,例,数字,52,的,ASCII,码,35H,32H,20H,21H,5 2,BCD,码,SWA

32、P A,即实验二,8-7,0-9,减,30H A-F,减,37H,已知:内部,RAM 30H,中有一数(如,AAH,)现欲令它高,4,位不变低,4,位取反,试写出相应指令组。,MOV A,,,#0FH,;,XRL 30H,A,例,CLR A,;清,0,CPL A,;取反,为单字节单周期指令。试比较下列两组指令:,累加器清零和取反指令,MOV R0,#0,MOV R1,#0,MOV R2,#0,MOV R3,#0,CLR A,MOV R1,A,MOV R2,A,MOV R3,A,MOV R4,A,RL A,;累加器左环移一位,;,RLC A,;累加器通过,C,左环移一位,;,RR A,累加器右环

33、移一位,;,RRC A,;累加器通过,C,右环移一位,SWAP A,;半字节交换,累加器,A,移位指令,(1,字节,1,周期,),1,)无条件转移指令,2,)条件转移指令,3,)子程序调用和返回指令,7.5,控制转移类指令,LJMP,addr16,;长转移指令,AJMP,addr11,;绝对转移指令,SJMP,rel,;相对转移指令,,JMP,A+DPTR,;变址寻址转移指令,无条件转移指令,长转移指令,(64KB,范围内转移指令,),LJMPaddr16,执行时,,addrl6,送入程序计数器,PC,,下条指令取指令时,转移自然发生。,本指令为,3,字节,2,周期指令,例 已知某型号,MCU

34、在出厂时自带一段有用的程序代码,,ROM,区的地址是,F100H,,怎样转移到该处执行?,用指令,LJMP 0F100H,绝对转移指令,(2K,地址内的转移指令,),AJMP addr11,执行时,,addrl1,送入程序计数器,PC,的低,11,位,,PC,的高,5,位不变,即在一定范围内转移,本指令为,2,字节,2,周期指令,功能:,(PC)(PC)+2,,,(PC)(,PC)+rel,转移范围,Rel,=-128,+127,目标地址,=,源地址,+,rel,或,Rel,=,目标地址,源地址。,关于源地址的解释:,指令微操作期间,,(PC),实际在取指的同时递增,取指毕但尚未执行时,,(

35、PC),已递增到其下一条指令的地址,这就是源地址。,这就是,(PC)(PC)+2,。,rel,由汇编器计算,为,1,字节补码,带符号扩展后与,16,位,(PC),相加,实现跳转。,从现行指令的首地址算起,该范围就是,126+129,。,相对转移指令,SJMP,rel,程序存储器,0000H,54H,20H,02H,ALU,A,PC,2056H,2002H,2001H,2000H,80H,54H,2000H 80 54H,SJMP,rel,间接转移指今,JMP A+DPTR,;,(PC),(,(DPTR)+(A),1,字节,2,周期转移指令;,目标地址由基址,+,变址获得,习惯上称为间接转移。该

36、指令实现散转,支持类似于,C,语言中的,switch/case,选择。如图,实现散转的程序安排,MOV DPTR,,,#TABLE,ADD A,,,A,;,A,内容乘,2,,因散转表每一项为,2,字节,JMP A+DPTR,TABLE:AJMP K0,;散转表,第,0,项,转,K0,执行,AJMP K1,;散转表,第,1,项,转,K0,执行,AJMP K5,;散转表,第,5,项,转,K5,执行,K0,:,;,K0,分支实际入口,AJMPDONE,;,K0,分支结束,转出,K1,:,;,K1,分支实际入口,AJMPDONE,;,K1,分支结束,转出,K5:,;,K5,分支实际入口,AJMPDON

37、E,;,K5,分支结束,转出(此为最后一项),DONE:,(1),累加器,A,判零转移指令,JZ,rel,若,(A)=0 PCPC+2+REL,若,(A)0 PCPC+2,JNZ,rel,若,(A)0 PCPC+2+REL,若,(A)=0 PCPC+2,许多,MPU,都具有用于判断运算结果是否为零的标志位;但是,,MCS-51,省略了该标志。它仅凭,(A),的内容,不需要运算,就直接用于判别。,条件转移指令,(2),根据进位标志位转移,JC,rel,;,Cy=1,时转移:,PC PC+2+rel,,,;,Cy=0,时顺序执行:,PCPC+2,JNC,rel,;,C=0,时转移:,PC PC+2

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

39、A),(,direct,),,CY=0;,(A),(,direct,),,CY=1,类似的指令还有三条:,CJNE,A,#data8,rel,CJNE,Rn,#data8,rel,CJNE,Ri,#data8,rel,都是,3,字节指令,源地址为指令存储地址,+3,,偏移量,rel,为,-128,+127,。,相对于其存储地址来说,转移范围为,-125,+130,。,比较相当于减法,但不保存结果,只影响,Cy,标志。,若参加比较的操作数,X,和,Y,是无符号数,若,cy=0,,则,X,Y,;若,Cy,l,,则,X,Y,。,若是补码,则仅根据,Cy,无法判断它们的大小的。,建议先将待比较的两

40、个数都加,80H,,转为无符号比较和判断,比较完毕,根据需要在把两数恢复成原来的数。,例,7-14,内部,RAM 30H,单元开始存放,8,个无符号字节型数据,试找出其中的最大数,并将其存放在,R7,中。,程序段,MOV R0,,,#30H,;数据区首地址,MOV R6,,,#08H,;数据区长度,MOV A,,,R0,;读第一个数,DEC R6,LOOP,:,INC R0,MOV B,,,R0,;读下一个数,CJNE A,,,B,,,NE,;数值比较,不相等转移,Normal,:,DJNZ R6,LOOP,;相等,继续循环到计数为,0,SJMP DONE,;最大数在,A,,转结束处理,,NE

41、JNC Normal,;不等且大于,不交换,XCH A,,,B,;不等且小于,交换,最大值送,A,SJMP Normal,;交换过,转正常处理,DONE:MOV R7,,,A,;最大值送,R7,(3),循环控制条件转移指令,DJNZ,Rn,rel,若,Rn-10 PCPC+2+rel,Rn-1=0 PCPC+2,DJNZ,direct,rel,direct-10 PCPC+,3,+rel,direct-1=0 PCPC+,3,通常条件转移指令都比较丰富,,MCS-51,因为有位操作指令,于是将本属于条件转移的指令归类到位操作指令了。,例:设单片机主频为,12MHz,,设计一延时程序实现,

42、50ms,延时。,DEL:MOV R7,#200,DEL1:MOV R6,#125,DEL2:,DJNZ,R6,DEL2,DJNZ,R7,DEL1,RET,延时计算:,粗略,125*2*200=50000uS=50mS,在调试环境下,能显示所执行程序行、子程序等所费时间。,ACALL,addr11 ;,子程序绝对调用,2/2,LCALL,addr16 ;,子程序长调用,3/2,RET ;,子程序返回指令,1/2,RETI ;,中断返回,1/2,NOP ;,空操作,1/1,在程序语言中,,子程序调用写,CALL,即可,,汇编器可以智能地选择,LCALL,或,ACALL,,以得到紧凑的代码。,子程

43、序嵌套,嵌套深度仅受制于堆栈的深度;,汇编语言设计中,子程序可以调用其本身(递归)。,子程序调用和返回指令,长调用指令,指令格式,LCALL addr16,指令功能,PC PC+3,SP SP+1,,,(SP)(PC),0,7,SP SP+1,,,(SP)(PC),8,15,PC addr16,断点地址保存到堆栈,以便返回。,指令格式,ACALL addr11,指令功能,(PC)(PC)+2,SP SP+1,,,(SP)(PC),0,7,SP SP+1,,,(SP)(PC),8,15,(PC),0,10,addr11,,,(PC),11,15,保持不变,绝对调用指令,返回指令,RET,RET,

44、PC8,15)(SP),,,(SP)(SP)-1,;(PC0,7)(SP),,,(SP)(SP),1,子程序至少有一个,RET,语句,,置于子程序的末尾;,为简化程序,可以设置多个返回点;,执行到任一个,RET,语句,立即返回断点;,断点在堆栈中。堆栈栈及内容与刚进入子程序时一致,则可以正确返回,例,7-15,在内部,RAM,的,10H,字节单元中存有,2,位十六进制数,试将其转换为,ASCII,码,并存放于,11h,和,12h,两个单元中。试以主程序和子程序结构编写程序。,数字,5A,的,ASCII,码,10H,5 A,Hex,35H,41H,11H,12H,主程序部分,MOV SP,,

45、3FH,;初试化堆栈,MAIN,:,MOV A,,,10h,;取十六进制数,SWAP A,;高低半字节交换,ANL A,,,#0Fh,;屏蔽无关位,得,Hex,高位,ACALL HEX2ASC,;调用转换子程序,MOV 11h,,,R7,;保存,HEX,高位的,ASCII,码,MOV A,,,10h,;再取原十六进制数,ANL A,,,#0Fh,;屏蔽无关位,得,HEX,低位,ACALL HEX2ASC,;调用转换子程序,MOV 12h,,,R7,;保存,HEX,低位的,ASCII,DONE,:,子程序部分,HEX2ASC,:;输入参数在,A,ADDA,,,#2,;变址加,2,MOVCA,

46、A+PC,;查表指令,MOV R7,,,A,;输出参数在,R7,RET,ASCTAB,:,DB 30h,31h,32h,33h,34h,35h,36h,37h DB 38h,39h,41h,42h,43h,44h,45h,46h,;,0-9,A-F,的,ASCII,码,思考:,MOVC,指令中如果用,A+DPTR,,如何写?,HEX2ASC,:,;输入参数在,A,MOV DPTR,#ASCTAB,;表格首地址,MOVC A,A+DPTR,;查表指令,MOV R7,,,A,;输出参数在,R7,RET,ASCTAB,:,DB 30h,31h,32h,33h,34h,35h,36h,37h,DB

47、 38h,39h,41h,42h,43h,44h,45h,46h,;0-9,A-F,的,ASCII,码,思考:,16,进制数变成,ASCII,码,不查表还有什么方法?,0-9,加,30H A-F,加,37H 10D+37H=41H,练习:,7-11,以,RET,实现转移的示例,如果要转移到,2000H,地址执行,通常使用,LJMP 2000H,,或,AJMP 2000H,以下用,RET,指令,实现转移:,MOVDPTR,#2000H,PUSHDPL,PUSHDPH,RET,这种转移方法可以有相当大的灵活性,因为其目标地址可以动态确定。,中断返回指令,指令格式,RETI,该指令的功能描述与,RE

48、T,指令相同;,但具有不同的机器码和不同的功能;,但是该指令涉及,CPU,的中断记忆部件,这些对编程者是不透明的,因此两者虽然功能描述相同,可见的行为也相似,但有本质的不同,不能互相替代。,RETI,用在中断服务程序,(ISR),末尾,。执行,RETI,指令除了,返回断点,地址外,还,清除,相应,中断优级状态位,。,RETI,的非常规应用,以下是中断服务程序中的一段代码:,CLRA,PUSHACC,PUSHACC,RETI,问返回何处?,它清除了中断状态,并且下一条指令从,0000H,取指令执行,相当于复位,因此称为热启动。,空操作指令,指令格式,NOP,功能,(PC)(PC)+1,执行本指令

49、使,(PC),正常递增,以便访问下一条指令。除此以外,机器不做其他任何操作,也不影响任何标志位。,单周期指令,该指令的价值在于,产生,1,个机器周期的延时,,通常是微控制器与扩展的外围芯片之间的配合所要求的。,7.6,位操作指令,位传送指令,格式:,MOV,C,bit,;,CY(bit,),MOVbit,,,C,;,(,bit)CY,位状态操作指令,位逻辑运算指令,例,试以软件实现,Z=XY,,其中,X,,,Y,,,Z,分别为,P1,口的,P1.0,,,P1.1,和,P1.2,。,X,Y,为输入,,Z,为输出。,XBITP1.0,YBITP1.1,ZBITP1.2,LOOP:,MOV C,X,

50、1,ANL C,/Y,;,2,MOV F0,C,;,1,MOV C,Y,;,1,ANL C,/X,;,2,ORL C,F0,;,2,MOV Z,C,;,1,SJMP LOOP,;,2,软件可实现硬件功能,硬件可实现软件功能,优缺点?电气工程师的选择。,例,7-16,基于位测试的控制转移指令,格式:,JBbit,,,rel,bit=1 PCPC+3+rel,bit=0 PCPC+3,JNB bit,,,rel,bit=0 PCPC+3+rel,bit=1 PCPC+3,JBCbit,,,rel,bit=1 PCPC+3+rel,bit,0,bit=0 PCPC+3,24,2,进位位和直接地址

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服