已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主要内容寻址方式指令系统传送与交换指令算术运算、逻辑运算指令控制转移指令位操作指令伪指令程序设计举例,第3章MCS-51系列单片机的指令系统及汇编语言程序设计,计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为CPU识别并执行的指令的集合就是该CPU的指令系统。MCS-51单片机汇编语言指令格式:操作符目的操作数,源操作数操作符指明该指令完成什么操作;操作数是指明该指令的操作对象。目的操作数是存放结果的。指令中操作数提供的方式称为寻址方式。,指令中的常用符号Rn:表示当前工作寄存器R0R7中的一个。Ri:代表R0和R1寄存器中的一个,用作间接寻址寄存器。dir:8位直接字节地址(片内RAM和SFR)#data:8位立即数,即8位常数。可以为2进制(B)、10进制、16进制(H)、字符()#data16:表示16位立即数,即16位常数,取值范围为:#0000H#0FFFFHaddr16:表示16位地址addr11:表示11位地址rel:相对偏移量(为一字节补码)用于相对转移指令中bit:位地址,在位地址空间中。$:表示当前指令的地址。,指令中直接给出操作数的寻址方式。在51系列单片机的指令系统中,立即数用一个前面加“#”号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。立即寻址中的数,称为立即数。例如指令:MOVA,#58H;58HA,3.1寻址方式3.1.1立即寻址,操作数的地址直接出现在指令中。寻址对象:内部数据存贮器:使用它的地址。特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。位地址空间程序存储器空间例:MOVA,40H;(40H)AMOV40H,41H;(41H)(40H)MOVP0,#45H;45HP0MOV80H,#45H;45HP0MOVC,18H;位地址18HC,3.1.2直接寻址,操作数存放在寄存器中。寻址对象:A,B,C,DPTR,R0R7。B仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。A可以寄存器寻址又可以直接寻址,直接寻址时写作ACC例如:MOVA,R0;R0AMULAB;A*BBAADDA,ACC;A+AA,3.1.3寄存器寻址,操作数存放在以寄存器内容为地址的单元中,用做间址的寄存器为Ri(i=0,1)、DPTR。对片内的间接寻址用Ri(i=0,1)如:MOVR0,#20HMOVR0,A;A(20H)对片外的间接寻址可用Ri(i=0,1)或DPTR如:MOVXDPTR,A;A以DPTR的内容为地址的外部RAM中MOVXA,R1;A以P2R1内容为地址的外部RAM中PUSH和POP指令的源操作数是以SP间接寻址注意:寄存器间接寻址不能访问SFRMOVR1,#81HMOVA,R1;不能访问SP,只能用MOVA,SP,3.1.4寄存器间址,变址寻址只能访问程序存储器。操作数所在位置的地址由DPTR或PC寄存器与A的内容相加后形成。其中累加器A内容是可变的。变址寻址只有三条指令。MOVCA,A+DPTR;(A+DPTR)AMOVCA,A+PC;(A+PC)AJMPA+DPTR;A+DPTRPC注意:A的内容是无符号数。PC值是指令的当前PC值,即下条指令的PC值,3.1.5变址寻址,3.1.6相对寻址,变址寻址只能访问程序存储器。相对寻址是将程序计数器PC的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标地址。如:JZ61H注意:相对偏移量是一字节有符号数,用补码表示,偏移范围是:-128+127。PC值是指令的当前PC值,即下条指令的PC值。源程序中偏移量常用符号地址表示。,对可位寻址的位地址寻址。包括片内RAM的位地址空间和可位寻址的SFR(地址能被8整除)如:MOVC,20H;位寻址MOVA,20H;字节寻址以上两条指令究竟是位寻址还是字节寻址,根据两操作数类型一致的原则,由另一个操作数决定。,3.1.7位寻址,寻址方式与存储空间的对应关系,内部RAM、SFR之间的传送MOV指令,3.2指令系统3.2.1数据传送与交换指令,例R1=20H,(20H)=55H,MOVA,R1执行后,A=55H。例(40H)=30H,MOVR7,40H执行后,R7=30H。例MOVR7,40H执行后,R7=40H。,注意:寄存器之间无传送;寄存器间址和寄存器之间无传送;立即数不能做目标地址;,2.外部存储器和A累加器之间的传送,MOVX,MOVC,利用MOVX实现片外数据存储器数据传送(2000H)(2100H),MOVDPTR,#2000HMOVXA,DPTRMOVDPTR,#2100HMOVXDPTR,A,;DPTR=2000H,;DPTR=2100H,;AX,;(2100H)X,x,片外数据存储器不能直接寻址。下列为非法指令:MOVXA,2000HMOVX2100H,2000H,利用Ri间址来实现将(2000H)(2100H)MOVP2,#20H;高位地址MOVR0,#00;低位地址MOVXA,R0;读片外RAMMOVP2,#21H;改变高位地址MOVXR0,A;写片外RAM,利用MOVC指令实现查表功能注:只能从程序存储器读取数据到A累加器。只能使用变址间接寻址方式,1)DPTR为基址寄存器MOVCA,A+DPTR;A(A+DPTR)查表范围为64KB程序存储器任意空间。,2)PC为基址寄存器MOVCA,A+PC;A(A+PC)常数表只能在查表指令后256B范围内。,例查表法求Y=X2。设X(0X15)在片内RAM20H单元,要求将查表求Y,存入片内RAM21H单元,1)用DPTR作基址寄存器ORG0100HSQU:MOVDPTR,#TAB;确定表首地址MOVA,20H;取XMOVCA,A+DPTR;查表求Y=X2MOV21H,A;保存YRET;子程序结束;其它程序段,ORG0200H;常数表格首地址TAB:DB00,01,04,09,225;平方表,指令地址源程序ORG0100H;程序起始地址0100HSQU:MOVA,20H;取X0102HADDA,#3;修正偏移量0104HMOVCA,A+PC;查表求Y=X20105HMOV21H,A;存结果0107HRET;子程序结束0108HTAB:DB00,01,04;平方表010BHDB09,225,思考题:当0X255时,如何用查表法编程求Y=X2,2)用PC作基址寄存器,3.交换指令实现片内RAM区的数据双向传送1)字节交换指令XCHA,Rn;ARnXCHA,Ri;A(Ri)XCHA,dir;A(dir)2)半字节交换指令XCHDA,Ri;A03(Ri)03SWAPA;A47A03,4.堆栈操作指令入栈指令:PUSHdir;SPSP+1,(SP)(dir)出栈指令:POPdir;(dir)(SP),SPSP-1,1.以A为目的操作数的算术、逻辑运算指令(24条),3.2.2算术运算和逻辑运算指令,2.以dir为目的操作数逻辑运算指令(6条),与ANL或ORL异或XRL,3.加1、减1指令,4.十进制调整指令DAA;仅对存于A中的加法结果进行十进制调整,若需完成十进制减法运算,则应变减法运算为补码的加法运算即可,其减数X的补码通过(99-X)+1再DAA后得到。,原则:和低4位大于9或有半进位,则低4位加6和高4位大于9或有进位,则高4位加6,例:(DATA)-(DATA+1)=(DATA+2)Y-X=Y-X+100-有效位为2位十进制,模为100=Y+(99-X)+1,5.乘、除法指令,MULAB,;ABBA,DIVAB,;AB商在A中,余数在B中,6.专对A的指令,CPLA,CLRA,;0A,MOVA,#99HDAACLRCADDA,DATASUBBA,DATA+1DAAADDA,#1MOVDATA+2,A,RRA,RLA,RLCA,RRCA,移位指令(仅对A),1.调用程序和返回类指令1)长调用LCALLaddr16;addr16PC015指令功能同80X86中的CALL,调用范围64KB全部空间,指令的机器码为三字节。2)短调用ACALLaddr11;addr11PC010指令的功能同前,主要区别为:addr11PC010,而PC1115保持原值不变,故其调用范围为2KB,即子程序入口距当前PC不得超过2KB地址范围。本指令的机器码为二字节。,3.2.3控制转移类指令,3)子程序返回指令(从栈顶弹出断点到PC)RET;从调用子程序返回。RETI;从中断服务程序返回并恢复中断优先级状态触发器。2.转移指令1)无条件转移指令(1)短转移AJMPaddr11;addr11PC010转移范围:2KB机器码为2字节,(2)长转移LJMPaddr16;addr16PC015转移范围:64KB机器码为3字节。(3)间接转移JMPA+DPTR;A+DPTRPC分析下列程序段,说出当A分别为0和2时,程序转置何处?该程序段的功能是什么?MOVDPTR,#TABLEJMPA+DPTRTABLE:AJMPPROC0AJMPPROC1AJMPPROC2AJMPPROC3,(4)无条件相对转移SJMPrel;PC+relPC,即As2relPC,机器码为2字节As为源地址(本指令的首地址),执行本指令时当前PCAs+2,rel为转移的偏移量,转移可以向前转(目的地址小于源地址),也可以向后转(目的地址大于源地址),因此偏移量rel是1字节有符号数,用补码表示(128127),所以指令转移范围在离源地址As的126129字节之间。,2)条件转移指令(1)累加器为零(非零)转移JZ/JNZrel;A=0/(A0)则转移,否则顺序执行程序(2)减1不等于零转移DJNZRn/dir,rel功能为:Rn(dir)-1Rn(dir)相减结果0转,否则顺序执行程序,(3)比较转移指令CJNEA,dir,relCJNEA,#data,relCJNERn,#data,relCJNERi,#data,rel,操作数1不等于操作数2则转,否则顺序执行。,1,MOVDATA+2,#0FFHMOVA,DATACJNEA,DATA+1,NEXTNEXT:JCNEXT1MOVDATA+2,#1NEXT1:RET,1.位传送指令MOVC,bit;(bit)CYMOVbit,C;CYbit2.位状态控制指令CLRC;0CYCLRbit;0bitSETBC;1CYSETBbit;1bitCPLC;CYCYCPLbit;bitbit,3.2.4位操作指令,4.位转移位转移根据位的值决定转移,均为相对转移指令。JCrel;CY=1,则转移,否则顺序执行程序JNCrel;CY=0,则转移,否则顺序执行程序JBbit,rel;(bit)=1,则转移,否则顺序执行程序JNBbit,rel;(bit)=0,则转移,否则顺序执行程序JBCbit,rel;(bit)=1,则转移,且该位清零,否则顺序执行程序,1.定义:汇编控制指令,没有指令代码,不能被CPU执行,只用于汇编过程,为汇编程序提供汇编信息。2.常用伪指令(1)ORGORG是设置起始地址伪指令,其格式是:ORG16位地址或标号(2)ENDEND是结束汇编伪指令,其格式是:END(3)DBDB是定义字节伪指令,其格式是:标号:DB字节型数表(4)DWDW是定义字伪指令,其格式是:标号:DW字型数表,3.3伪指令,(5)DSDS是定义存储空间伪指令,其格式是:标号:DS表达式(6)EQUEQU是赋值伪指令,其格式是:字符名称EQU数据或汇编符号(7)DATADATA是数据地址赋值伪指令,其格式是:字符名称DATA表达式(8)BITBIT是位地址赋值伪指令,其格式是:字符名称BIT位地址详见表3.3MCS-51中的伪指令,进制间的转换,1.十进制二进制(整数),任何十进制数有:dn-110n-1dn-210n-2d1101d0100(dn-110dn-2)10d1)10d0,规律:di10di-1(i=1,2,n-1),按二进制运算规则运算则得二进制数,3.4程序设计举例,例:将位十进制数D3D2D1D0转换成二进制数,设位十进制数D3D2D1D0按分离BCD码形式存放,要求结果的高位存放在R3中,结果的低位存放在R2中。,方法:D3D2D1D0=(010+D3)10+D2)10D1)10+D0结果:16位二进制数,流程:,MOVA,R2MOVB,#0AHMULABMOVR2,AMOVA,BXCHA,R3MOVB,#0AHMULABADDA,R3MOVR3,ARET,MUL10:,结果单元乘10子程序,由于4位10进制(9999)小于16位2进制(65535),所以转换结果不会大于16位,MOVR0,#DATAMOVR7,#03HMOVA,R0MOVR2,AMOVR3,#0ACALLMUL10INCR0MOVA,R0ADDA,R2MOVR2,A,MOVA,R3ADDCA,#0MOVR3,ADJNZR7,BCDB1RET,BCDB:,BCDB1:,2.十进制二进制(小数),10进制乘2取整(取溢出),例:0.625=2-1+2-3=0.10100000B,a.小数点位数由乘2次数定,结果单元字节数也由此定,b.第一次的整数权最高=2-1,c.乘2是10进制的乘2,自身相加再DAA调整,D=b-12-1+b-22-2b-m2-m,例:设入口时10进制数在A中,要求结果放在R2中(8位二进制小数),BCDBP:MOVR2,#0MOVR6,#8BCDBP1:ADDA,ACCDAAXCHA,R2RLCAXCHA,R2DJNZR6,BCDBP1RET,;结果单元清0,;次数初始,;102,;将整数移入结果单元,溢出在进位位中,3.二进制十进制(整数),按权展开,以8位为例:b7b6b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 3 Lesson 13 How Old Are You(教学设计)-2023-2024学年冀教版(三起)英语四年级下册
- 阀门配件采购合同范本
- 美国加州工厂合同范本
- 牛棚围栏安装合同范本
- 续订劳动合同补充协议
- 社区小额贷款合同范本
- 美甲店合开合同协议书
- 物业车库买卖合同范本
- 美睫美甲店合伙协议书
- 2025年城市设计基础考试题及答案
- 抚顺顺特化工有限公司2000吨-年原甲酸三甲酯、1000吨-年DL-泛解酸内酯、200吨-年S-氰醇项目环境影响报告
- 2023年江苏省环保集团招聘笔试题库及答案解析
- (2.11.1)-2.10分布的其他特征
- 网约车巡游出租车专题培训课件
- 微笑的力量课件
- 2023年西南大学辅导员招聘考试笔试题库及答案解析
- 幼儿园音乐活动的设计与组织课件
- 江苏省社会组织网上办事系统-操作手册
- CNC机加工作业指导书
- GB∕T 4423-2020 铜及铜合金拉制棒
- 集装箱码头管理系统操作手册
评论
0/150
提交评论