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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7989872.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。

注意事项

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

第-章指令系统与汇编语言程序设计优秀文档.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机原理及应用,教学课件,指令系统与汇编语言程序设计,第2章 指令系统与汇编语言程序设计,2-1,指令格式,2-2,指令寻址方式,2-3,状态标志,2-4,MCS-51,指令系统,单片机指令系统概述,一、,MCS-51,指令分类,MCS-51,单片机共有11,1,条指令。,1,按指令所占的字节数分类,单字节指令,49,条,双字节指令,46,条,三字节指令,16,条,每条指令的平均字节数:,2,按指令执行时间长短分,单周期指令,65,条,双周期指令,44,条,四周期指令,2,条,每条平均执行时间:,2-1

2、指令格式,一.,汇编语言指令格式,标号:操作码 操作数1,操作数2;注释,换行表示一条指令结束。,例:,LOOP:MOV A,#40H;,取参数,1.,标号:,指令的符号地址,2.,操作码:,指明指令功能。,3.,操作数:,指令操作对象,数据、地址、寄存器名及约定符号。,4.,注释行:,说明指令在程序中的作用。,操作码和操作数,是指令主体。,MOV _move,传送,XCH _exchange,交换,ANL _and logic,与逻辑运算,XRL _exclusive or,异或运算,MUL _Multiply,乘法,RR _rotate right,右循环,SJMP _short jump

3、短跳转,RET _return,子程序返回,二.机器语言指令格式,操作码 操作数1 操作数2,有单字节、双字节和三字节指令。,汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。,举例:,汇编语言:,机器语言:,MOV A,R0E8H,MOV R6,#32H7E 32H,MOV 40H,#10075 40 64H,11101000,01111110,00110010,01110101,01000000,01100100,2-2 指令寻址方式,2-2-1 操作数类型,位,(,b),位寻址区中的一位二进制数据,字节,(,B)8,位二进制数据,字,(,W)16,

4、位双字节数据,2-2-2 寻址方式,一.,立即寻址方式,指令中给出实际操作数据(立即数),一般用于为寄存器或存储器赋常数初值。,举例:,8位立即数:,MOV A,#40H ;A40H,16位立即数:,MOV DPTR,#2100H;DPTR2100H,指令操作数是存储器单元地址,数据在存储器单元中。,MOV A,40H;A(40H),直接寻址方式对数据操作时,地址是固定值,而地址所指定的单元内容为变量形式。,41,H,78H,40,H,56H,56,H,例:,设存储器两个单元的内容如图所示,,执行指令,MOV A,40H,后,A=?,思考题:,直接寻址方式指令和立即寻址方式指令的形式有什么不同

5、三.寄存器寻址方式,指令操作数为寄存器名,数据在寄存器中。,例:,MOV A,R0;AR0,设指令执行前,A=20H,R0=40H,,执行指令后,,A=?,R0=?,指令的操作数为寄存器名,寄存器中为数据地址。,存放地址的寄存器称为间址寄存器或数据指针。,例:,MOV A,R0;A(R0),设指令执行前,A=20H,R0=40H,,地址为40,H,存储器单元内容如图所示,。,执行指令后,,A=?,R0=?,(40H)=?,41,H,67H,40,H,34H,34,H,40,H,34,H,40,H,40,H,0100 0000,A,0010 0000,R0,0100 0000,R0,数据在存

6、储器中,指令给出的寄存器中为数据的基地址和偏移量。数据地址=基地址+偏移量。,例:,MOVC A,A+DPTR;A(A+DPTR),设指令执行前,A=09H,DPTR=2000H,,存储器单元内容如图所示。执行指令后,,A=?DPTR=?,12,H,2000,H,指令给出位地址。一位数据在存储器位寻址区。,例:,MOV C,40H;Cy(,位地址40,H),设指令执行前,Cy=1,,位地址40,H,存储器单元如图,执行指令后,,Cy=?,28,H,01100010,29,H,11010111,位寻址区,0,2008,H,89H,2009,H,12H,2-4,MCS-51,指令系统分析,指令功能

7、分类:,数据传送、数据操作、布尔处理、程序控制。,2-4-1 数据传送指令,实现寄存器、存储器之间的数据传送。,一.内部传送指令:片内数据存储器数据传送。,二.外部传送指令,:,片外数据存储器数据传送。,三.交换指令:片内数据存储器数据传送。,四.堆栈操作指令:片内数据存储器数据传送。,五.查表指令:程序存储器数据传送。,(一),内部传送指令:,实现片内数据存储器中数据传送。,指令格式:,MOV,目的,操作数,,源,操作数,寻址方式:,立即寻址、直接寻址、寄存器寻址、寄存器间址。,习题1:,找出配对指令,实现反向传送。,指令机器码:,11101,rrr,E8EF,11100101 n,E5,n

8、1110011i,E6、E7,01110100,d,74,d,10101rrr n,1010011i n,85 n1 n2,90,d1 d2,MOV A,Rn ;ARn,Rn=R,0,R,7,MOV A,n ;A(n),MOV A,Ri;A(Ri),Ri=R,0,、R,1,MOV A,#d ;Ad,MOV Rn,n ;Rn(n)MOV Ri,n ;(Ri)(n)MOV n1,n2;(n1)(n2),MOV DPTR,#d1d2;DPTRd1d2,例2-4-1:,顺序执行下列指令序列,求每一步执行结果,。,MOV A,#30H,MOV 4FH,A,MOV R0,#20H,MOV R0,4FH,

9、MOV 21H,20H,例:,用两种寻址方式实现,将片内,RAM,60,H,单元的数据传送给累加器,A。,解1:,MOV A,#60H?,解2:,MOV R0,#60H,MOV A,R0,;,A=30H,;(4FH)=30H,;R0=20H,;(20H)=30H,;(21H)=30H,解2:,MOV R0,60H?,MOV A,R0,解1:,MOV A,60H,(b)=1转移,否则不转移JNB b,e;,3MOVC A,1000H;,一条指令中不能同时出现两个工作寄存器:非法指令:MOV R1,R2MOV R2,R0,0011 1011,2-2 指令寻址方式,SPSP+1,(SP)PCL,SP

10、SP+1,(SP)PCH;,Cy=0则转移,Cy=1不转移,只有指令表中的指令才有对应指令代码,计算机才 能执行。,例:复位后,设置使用工作寄存器2区,其余标志位不变。,0011 1011,作业:BCD码加法编程。,2150HNEXT:MOV A,R2,十进制加1运算:ADD A,#01,例:查表法求Y=X2。,指令格式:MOVX 目的操作数,源操作数,1按指令所占的字节数分类,说明:,只有指令表中的指令才有对应指令代码,计算机才 能执行。编程时,不能随意,“创造发明”,指令。,1.,一条指令中不能同时出现两个工作寄存器:,非法,指令:,MOV R1,R2MOV R2,R0,2.,间址寄存器只

11、能使用,R0、R1。,非法,指令:,MOV A,R2,3.,SFR,区只能直接寻址,不能用寄存器间接寻址。,非法,指令:,MOV R0,#80HMOV A,R0,4.,指令表:,B,:,指令字节数,,M,:,机器周期数,(二)外部传送指令,实现,片外数据存储器,和,A,累加器,之间的数据传送。,指令格式:,MOVX,目的,操作数,,源,操作数,寻址方式:片外数据存储器用寄存器间址方式。,1.,DPTR,作16位数据指针,寻址64,KB,片外,RAM,空间,MOVX A,DPTR,;A(DPTR),MOVX DPTR,A,;(DPTR)A,2.,Ri,作8位数据指针,寻址256,B,片外,RAM

12、空间,MOVXA,Ri,;A(Ri),MOVXRi,A,;(Ri)A,例2-4-2:,实现片外数据存储器数据传送(2000,H)(2100H)。,MOV DPTR,#2000H,MOVX A,DPTR,MOV DPTR,#2100H,MOVX DPTR,A,习题,3,:,将片外,RAM 0000H,单元的数据传送到片内,RAM,的60,H,单元,。,;,DPTR=2000H,;A=X,;DPTR=2100H,;(2100H)=X,片外数据存储器不能直接寻址。下列为,非法,指令:,MOVX A,2000H,MOVX 2100H,2000H,思考题:,为什么对,DPTR,的数据传送使用内部传送指

13、令?,(三)交换指令,实现片内,RAM,区的数据双向传送。,1.字节交换指令,XCH A,Rn,;A Rn,XCH A,Ri,;A(Ri),XCH A,n,;A(n),习题4:,将片内,RAM,60,H,单元与61,H,单元的数据交换。,例:,设,A=29H,,执行指令,XCH A,2AH,后,,A=?(2AH)=?,38,H,29,H,XCH 60H,61H ,对吗?,29,H,2.半字节交换指令,XCHD A,Ri,;A,03,(Ri),03,SWAP A,;A,47,A,03,例2-4-3:,将片内,RAM,2,AH,和2,BH,单元中的,ASCII,码转换成压缩式,BCD,码存入20,

14、H,单元。,交换片内,RAM,40,H,单元和 41,H,单元的低半字节。,(四)堆栈操作指令,入栈指令:,PUSH n ;SPSP+1,(SP)(n),出栈指令:,POP n ;(n)(SP),SPSP-1,例:,设,A=02,B=56H,,执行下列指令后,,SP=?,A=?,B=?,SP,SP,02,SP,56H,02,02,H,A,00,H,02,H,00,H,02,H,02,H,SBR:MOV SP,#30H,;设栈底,PUSH A,PUSH B,MOV A,#0,MOV B,#01,POP B,POP A,SP,56H,02,SP,56H,02,56,H,SP,02,56,H,02H

15、SP,(五)查表指令,实现从,程序存储器,读取数据到,A,累加器,,,只能使用变址间接寻址方式,。,多用于查常数表程序,可直接求取常数表中的函数值。,1,DPTR,为基址寄存器,MOVCA,A+DPTR,;A(A+DPTR),查表范围为 64,KB,程序存储器任意空间,称为远程查表指令。,2,PC,为基址寄存器,MOVCA,A+PC,;A(A+PC),常数表只能在查表指令后256,B,范围内。,28H 01100010,例:用于循环结构程序。,交换指令:片内数据存储器数据传送。,1 1 3区,SPSP+1,(SP)PCL,SPSP+1,(SP)PCH;,A03(Ri)03 SWAP A ;,

16、将累加器A的内容D1、D0置1ANL A,#0E7H;,MOV A,R0,只有指令表中的指令才有对应指令代码,计算机才 能执行。,1004H ;,(b)=1转移,且(b)0,否则不转移,MOV A,#0,ADDC A,源操作数,例:查表法求,Y=X,2,。,设,X(0X15),在片内,RAM,的20,H,单元中,要求将查表求,Y,,存入片内,RAM,21,H,单元。,1),ORG 1000H,SQU:MOV DPTR,#TAB,;确定表首地址(基地址),MOV A,20H;,取,X(,偏移量),MOVC A,A+DPTR,;,查表求,Y=X,2,MOV 21H,A;,保存,Y,RET;,子程序

17、结束,;其它程序段,ORG 3000H;,常数表格首地址,TAB:DB 00,01,04,09,225;,平方表,2),指令地址,源程序,ORG 1000H ;,程序起始地址,1000,H SQU:MOV A,20H;,取,X,1002H ADD A,#3 ;,修正偏移量,1004,H,MOVC A,A+PC,;,查表求,Y=X,2,1005H MOV 21H,A;,存结果,1007,H RET ;,子程序结束,1008,H TAB:DB 00,01,04;,平方表,100,BH DB 09,225,思考题:,当0,X255,时,如何用查表法编程求,Y=X,2,。,例:,查表法求,Y=X,2,

18、设,X(0X15),在片内,RAM,的20,H,单元中,要求将查表求,Y,,存入片内,RAM,21,H,单元。,习题:,找出指令错误并改正:,1,MOV A,#1000H;A1000H,2,MOVX A,1000H;A(1000H),片外,RAM,3,MOVC A,1000H;A(1000H),片外,ROM,4,MOVX 60H,A;,片外,RAM(60H)A,5,MOV R0,60H;,片内,RAM:(61H)(60H),MOV 61H,R0,6.,XCH R1,R2;R1R2,7.,MOVX DPTR,#2000H;DPTR2000H,8.,MOVX 60H,DPTR;,片内RAM,片

19、外,RAM,例:设 A=02,B=56H,执行下列指令后,SP=?,A=?,B=?,MOV A,R0,习题:设累加器A中数据为 29H,Cy=0,执行指令 ORL C,0E3H 后,Cy=?,若A00H,PC不变(不转移),ADDC A,R2 ;,解:MOV PSW,#,KEY:MOV DPTR,#KTAB,JNC e;,2)带进位加法:ADDC A,源操作数,将累加器A的内容D1、D0置1ANL A,#0E7H;,执行指令后,A=?DPTR=?,01110100 d 74 d,SP,SFR区只能直接寻址,不能用寄存器间接寻址。,若A(n),则PCPC+e ;,MOV A,20H;,MOVX

20、DPTR,A,2-4-2算术运算指令,与数据传送指令不同,多数算术运算指令会影响标志位的状态,即,CPU,执行算术运算指令后,根据数据操作情况自动设置标志位的状态。,2-3 状态标志,MCS-51,的程序状态字寄存器,PSW,为标志寄存器。其格式如下:,1标志位(自动设置状态),1),Cy,:进位标志位,保存运算后最高位的进位/借位状态,当有进位/借位,,Cy=1,,否则,Cy=0。,2),AC,:辅助进位标志位,保存低半字节的进位/借位状态,当,D,3,产生进位/借位,,AC=1,,否则,AC=0。,用于十进制调整。,3),OV,:溢出标志位,OV=Cy,7,Cy,6,,,补码运算产生溢出,

21、OV=1,,否则,OV=0。,4),P,:奇偶标志位,反映累加器,A,中数据的奇偶性。当1的个数为奇数,,P=1,,否则,P=0。,2用户选择位,(编程设置状态),1),F0,:用户自定义标志位。,2),RS1、RS0,:,工作寄存器区选择位。复位时,,PSW=00H,RS1 RS0,工作寄存器,0 0 0区,0 1 1区,1 0 2区,1 1 3区,例:,复位后,设置使用工作寄存器2区,其余标志位不变。,解:,MOV PSW,#,18,H,2-4-2 算术运算指令,完成片内,RAM,和,A,中数据的加减乘除运算,。,一,加减指令,1.,加法指令,0011 1011,+,0011 1011,0

22、111 0110,76,H 0 0 1 1,1)不带进位加法:,ADD,A,,,源,操作数,ADD A,R2 ;AA+R2,,影响,Cy、OV、AC、P,例1:,A=3BH,PSW=0,,执行指令,ADD A,#3BH,求:,A=,Cy=,OV=,AC=,P=,,PSW=?,01000001=41,H,1001 1010,1110 0011,+0,1 0111 1101,2),带进位加法:,ADDC A,,,源,操作数,ADDC A,R2 ;AA+R2+Cy,,影响,Cy、OV、AC、P,7,DH 1 1 0 0,例2:,A=9AH,R2=E3H,PSW=0,,执行指令,ADDC A,R2,后

23、求:,A=,Cy=,OV=,AC=,P=,,PSW=?,10000100=84,H,带进位加法指令,ADDC,用于多字节运算,例:,设双字节数,X,存在片内,RAM,41,H、40H,单元,,Y,存在42,H、43H,单元,编程求,Z=X+Y,,并存入片内,RAM,单元44,H、45H、46H,。,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,;,取被加数低字节,;加上加数低字节,;保存和的低字节,;取被加数高字节,;加上加数高字节,;保存和的

24、高字节,;求高字节进位,;子程序结束,;低字节相加,;高字节相加,;计算高字节进位,;子程序结束,十进制加法指令,:,ADD A,,源操作数,DA A,带进位十进制加法指令,:,ADDC A,,源操作数,DA A,十进制加,1,运算,:,ADD A,#01,DA A,作业,:,BCD,码加法编程。,设,X、Y,为4位压缩,BCD,码,求,Z=X+Y。,BCD,调整指令:,DAA,;,对,A,中加法结果进行调整,2减法指令,SUBB A,,,源,操作数;带借位减法指令,SUBB A,R2;AA-R2-Cy,,;,影响,Cy、OV、AC、P,00 0 0 0 0,习题:,编程求双字节减法,。,设,

25、X、Y,存在片内,RAM 60H,起始单元,计算,Z=X-Y,。,例:,A=5AH,R2=5AH,Cy=0,,执行下列指令,SUBB A,R2,求:,A=,Cy=,OV=,P=,AC=?,3.,增量、减量指令,INC,单操作数,如:,INC R2;R2R2+1,DEC,单操作数,如:,DEC R2;R2R2-1,INC,DPTR;DPTRDPTR+1,不影响标志位状态。,注意:,没有指令 DEC DPTR,可用指令 DEC DPL 代替,企图十进制加:,INC A,DA,;,非法,十进制加:,ADD A,,,#01,;合法,DA A,MUL AB,;BAAB,Cy0,,;,当积高字节,B=0,

26、OV0;B0,,则,OV1,例:,A=96(60H),B=192(C0H),,执行指令,MUL AB,后,,求:,A=,B=,Cy=,OV=,P=?,解:,96 192=18432(4800,H),00,H 48H 0 1 0,思考题:,如何实现多字节数据的乘除运算。,DIV AB,;AB,A,商,,B,余数,,Cy0,,;,当除数,B=0,OV1;B0,,则,OV0,例:,A=156(F6H),B=13(0DH),,执行指令,DIV AB,后,求:,A=,B=,Cy=,OV=,P=?,解:,156 13=18(12,H),,余数=,12(,0,CH)。,12,H 0CH 0 0 0,2-4-

27、2,逻辑运算指令,一.单操作数指令(,A,累加器为操作数),1.,A,清0指令:,CLR A,;A0,2.,A,取反指令:,CPL A,;A/A,3.,循环移位指令:,1),8位循环指令:,RL A,;A,循环左移一位,RR A,;A,循环右移一位,2),9位循环指令:,RLC A,;,带,Cy,循环左移一位,RRC A,;,带,Cy,循环右移一位,例2-4-7:,设,A=11000101,Cy=0,,分别执行下列单条指令:,CPL A,求:,A=,Cy=,RL A,RLC A,00111010 0,10001011 0,10001010 1,用9位循环指令实现多字节移位,例:,编程将寄存器,

28、R6R5,中的双字节数,X,左移一位。,CLR C,MOV A,R5,RLC A,MOV R5,A,MOV A,R6,RLC A,MOV R6,A,0,Cy,R,6,R,5,Cy,;,Cy=0,,设,R6=55H,R5=AAH,;,R6=01010101,R5=10101010,Cy=0,;,R6=01010101,R5=01010100,Cy=1,;,R6=10101011,R5=01010100,Cy=0,思考题:,如何将寄存器,R6R5,中的双字节数,X,右移一位。,(二)双操作数逻辑运算指令,(对位逻辑运算):,ANL、ORL、XRL,习题1:,如何将累加器,A,中的数据高4位清0,低

29、位不变?,习题2:,如何将寄存器,R2,中的数据奇数位取反,偶数位不变?,例3-5-8,A=01B,,表示随机状态,为1或0,执行下述一组指令执行后,A,的值如何?,XRL A,#0C0H;,将累加器,A,的内容,D,7,、D,6,取反,ORL A,#03H;,将累加器,A,的内容,D,1,、D,0,置1,ANL A,#0E7H;,将累加器,A,的内容,D,4,、D,3,清0,解:,执行上述指令后,,A=100011B。,2,-4-4 布尔变量操作指令,对片内,RAM,中位寻址区操作。位累加器,Cy,和位地址,b。,一,位传送,MOV,C,b ;Cy(b),MOV,b,C ;(b)Cy,例:将

30、位地址20,H,的一位数传送到位地址30,H,中:,MOV C,20H MOV 30H,C,二位清0、置1、取反:,CLR,、,SETB,、,CPL,:,CLR C;Cy0,,CLR 40H;(,位地址40,H)0,三逻辑运算:,ANL、ORL,:ANL C,40H ;CC(40H)ANL C,/40H ;CC/(40H),例:设,Cy=1,(,位地址40,H)=1,,执行指令,ANL C,/40H,后,,Cy=?,(,位地址40,H)=?,位地址表示法,:位地址,40,H,,,位寄存器,F0,,,字节加位,0,习题,:设累加器,A,中数据为 29,H,Cy=0,,执行指令,ORL C,0E3

31、H,后,,Cy=?,1,2,-4-5,转移指令,转移指令通过改写,PC,的当前值,从而改变,CPU,执行程序的顺序,使程序发生跳转。,按转移条件分类:,1),无条件转移,:,执行无条件转移指令,程序无条件转移到指定处。,2),条件转移,:,指令中给出转移条件,执行指令时,先测试条件,若满足条件,则程序发生转移,否则,仍顺序执行程序。,按转移方式分类:,1,),绝对转移,:指令给出转移目的的绝对地址,nn,,执行指令后,,PCnn。,2),相对转移,:指令给出转移目的与转移指令的相对偏移量,e,,执行指令后,,PCPC,+,e。,例:,地址源程序,1000,H LJMP 2000H,1003H

32、2000H ;,转移目的指令,例:,地址 源程序,1000,H SJMP 02,1004H ;,转移目的指令,1.长转移指令:,LJMP nn,;,PC nn,指令机器码:,02,nn,H,nn,L,指令转移范围:64,KB,2.绝对转移指令:,AJMP,pn,;PCPC+2;PC,100,pn,100,;PC,1511,不变,指令机器码:,pn,108,00001,pn,70,指令转移范围:2,KB(,祥见,P65),转移时要求转移前后保持,PC,1511,不变。,相对偏移量,e,的计算式,:,e=,目的指令地址-(转移指令地址+指令字节数)=目的地址-,PC,当前值,3.短转移指令:,S

33、JMP,e,;PCPC+2,PCPC+e,指令机器码:,80,H,,e,相对偏移量,e,为8位补码。,指令转移范围:向前128向后127字节,编程时,用标号代替转移目的地址,转移指令的操作数交给汇编程序计算。,LJMP NEXT,;也可,AJMP NEXT,;或,SJMP NEXT,NEXT:NOP,例1:,计算转移指令的相对偏移量,e,,并判断是否超,出转移范围。,例2:,求原地踏步指令的指令代码,HERE:SJMP HERE,求出指令代码为:,80,FE H,相对偏移量=2150,H-(2130H+2)=001EH,,只取低8位:,e=1EH,指令机器码:,80 1,E H,指令地址源程序

34、2130,H SJMP NEXT,2150,HNEXT:MOV A,R2,习题:,计算程序中转移指令的相对偏移量,e,,并判断是否超出转移范围。地址 源程序2130,H LOOP:,21,B0H SJMP LOOP,4,间接转移指令(多分支转移指令-,散转,),JMP A+DPTR.,;PCA+DPTR,指令机器码,73,H,,,指令转移范围64,KB。,KEY:MOV DPTR,#KTAB,MOV A,40H,ADD A,A,JMP A+DPTR,KTAB:AJMP FUNC0,AJMP FUNC1,FUNC0:,FUNC1:,应用:,处理功能键。,要求不同功能键执行不同程序段。设每个功能键

35、对应一个键值,X(0XFH)。,设,X,已存入片内,RAM,的40,H,单元中。,若,X=0,,则执行程序段,FUNC0,若,X=1,,则执行程序段,FUNC1,。,二条件转移指令,1.判零转移指令,JZ e,;PCPC+2,,;,若,A=00H,PCPC+e(,转移,),;若,A00H,PC,不变(不转移),条件转移指令形成程序的分支,赋予计算机判断决策能力转移条件:1)标志位的状态 2)位地址中的状态,JNZ e,;PCPC+2,,若,A00H,,;PCPC+e(,转移),;若,A=00H,PC,不变(不转移),Cy,转移指令,JC e,;Cy=1,则转移,,Cy=0,不转移,JNC e,

36、Cy=0,则转移,,Cy=1,不转移,3.判位转移指令,JB b,e,;(b)=1,转移,否则不转移,JNB b,e,;(b)=0,转移,否则不转移,4.判位清0转移指令:,JBC b,e,;(b)=1,转移,且(,b)0,,否则不转移,5.比较不相等转移指令:,CJNE,操作数1,操作数2,,e,CJNE A,n,e,;PCPC+3,;,若,A(n),,则,PCPC+e,;且当,A(n),Cy=0,,当,A(n),Cy=1;,;若,A=(n),PC,不变,且,Cy=0。,相当于两个操作数相减,仅影响标志状态,不保存结果,6,循环转移指令:,DJNZ,操作数,,e,DJNZ R2,e,;PC

37、PC+2,R2R2-1,;若,R20,PCPC+e,,;,若,R2=0,,顺序执行。,例:用于循环结构程序。设要求程序循环执行100次,MOV R2,#100;,设循环计数器初值,LOOP:;,多次循环程序段,DJNZ R2,LOOP;,循环控制 ;循环结束,思考,:,当循环计数器初值为0,循环次数是多少?,2-4-6 子程序,定义:,具有完整功能的程序片段,供主程序调用。,功能:,供主程序在需要时调用。子程序可以在程序中,反复多次使用,以简化源程序的书写。,特点:,子程序可以嵌套,有利于模块化程序设计。,2-4-6,一长调用指令(,3字节,),LCALL nn,;PCPC+3,;,SPSP+

38、1,(SP)PC,L,,SPSP+1,(SP)PC,H,;,PCnn,nn,为子程序起始地址,编程时可用标号代替。,指令机器码:,12,nn,H,nn,L,指令调用范围:64,KB,子程序调用过程:,与转移指令不同:转移时,先用堆栈自动保存当前地址(断点),二绝对调用指令,(2字节),ACALL pn,;PCPC+2,;,SPSP+1,(SP)PC,L,,SPSP+1,(SP)PC,H,;,PC,10,0,pn,100,;PC,1511,不变,pn,为,子程序首地址,指令机器码:,pn,108,10001,pn,70,指令调用范围 2,KB。,三子程序返回指令,RET,;PC,H,(SP),S

39、PSP-1,PC,L,(SP),PSP-1,指令机器码:,22,H,RET,指令从堆栈中自动弹出原先保存的,PC,断点地址,,实现子程序返回。,20,H 92H,21,H 53H,SP,PC,2000,H,208,FH,2092,H,2100,H,2150,H,2153,H,2200,H,2250,H,2251,H,2153,H,2092,H,21,FFH,2200,H,SP,SP,SP,SP,SP,SP,MAIN:MOV SP,#30H;,设置栈底,LCALL SUB ;,调用子程序,SUB:;,子程序段,RET ;,返回主程序,例:子程序嵌套,SP,SP,SP,注意:,1.子程序起始指令要使用标号,用作子程序名。2.执行返回指令,RET,之前,保证栈顶内容为主程序返回地址,以便正确返回主程序。,常用格式,:,MAIN:;,主程序,LCALL SUBR;,调用,SUBR,SUBR:;,子程序首地址,RET;,子程序返回,注意:,1.子程序起始指令要使用标号,用作子程序名。2.执行返回指令,RET,之前,保证栈顶内容为主程序返回地址,以便正确返回主程序。,常用格式,:,MAIN:;,主程序,LCALL SUBR;,调用,SUBR,SUBR:;,子程序首地址,RET;,子程序返回,

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服