首页 MCS-51指令系统概述

MCS-51指令系统概述

举报
开通vip

MCS-51指令系统概述第三章MCS-51指令系统第一节指令系统概述一、指令类型MCS-51指令系统:数据传送指令算术运算指令逻辑运算指令位操作指令控制转移指令二、指令格式操作码[操作数1],[操作数2],[操作数3]操作码:表示指令进行何种操作。操作数:指出了参加操作的数据或数据存放的地址。操作数和操作码之间用一个或几个空格隔开,操作数之间以逗号“,”分开。三、伪指令不产生机器语言指令,仅提供汇编控制信息。1.定位伪指令ORGmm:代表16位地址。功能:指出汇编语言程序通过编译,得到的机器语言程序的起始地址。2.定义字节伪指令DBX1,...

MCS-51指令系统概述
第三章MCS-51指令系统第一节指令系统概述一、指令类型MCS-51指令系统:数据传送指令算术运算指令逻辑运算指令位操作指令控制转移指令二、指令格式操作码[操作数1],[操作数2],[操作数3]操作码:表示指令进行何种操作。操作数:指出了参加操作的数据或数据存放的地址。操作数和操作码之间用一个或几个空格隔开,操作数之间以逗号“,”分开。三、伪指令不产生机器语言指令,仅提供汇编控制信息。1.定位伪指令ORGmm:代表16位地址。功能:指出汇编语言程序通过编译,得到的机器语言程序的起始地址。2.定义字节伪指令DBX1,X2,···,XnXi:单字节数据。它为十进制或十六进制数,也可以为一个表达式。Xi也可以为由两个单引号“ˊ”所括起来的一个字符串,每一个字符为一个ASCII码。功能:X1,X2,…,Xn送目标程序存储器,通常用于定义一个常数表。3.字定义伪指令DWY1,Y2,···,YnYi:双字节数据。它可以为十进制或十六进制的数,也可以为一个表达式。功能:Y1,Y2,…,Yn送目标程序存储器,经常用于定义一个地址表。4.汇编结束伪指令END功能:汇编结束标志。5.标号和注释标号:操作码[操作数1],[操作数2],[操作数3];注释标号:加在指令之前,必须以字母开始,后跟1~8个字母或数字,并以冒号“:”结尾。标号的值是它后面的指令存储地址。注释:对某一条指令或某一段程序的功能说明,它必须以分号“;”开始。四、常用的缩写符号A累加器ACC。AB累加器ACC和寄存器B组成的寄存器对。C进位标志位CY,也是位操作指令中的位累加器。Rn表示当前选中的通用寄存器R0~R7(n=0~7)。Ri表示通用寄存器中可用作8位地址指针的R0和R1(i=0,1)。direct直接地址,取值为0~0FFH。#data立即数,表示一个常数。@间接寻址。addr表示外部数据存储器的地址。bit表示内部RAM或特殊功能寄存器中的直接位地址。×寄存器。(×)寄存器内容。((×))由X寄存器寻址的存储器单元内容。(×)寄存器的内容取反。rrr指令编码中rrr三位值由工作寄存器Rn确定,R0~R7对应rrr为000~111。﹩指本条指令起始地址。rel相对偏移量,其值为-128~+127。第二节寻址方式寻址方式:指令给出参与运算的数据的方式。一、寄存器寻址指令指出某一个寄存器的内容作为操作数。寻址空间:R0~R7A、B、C、AB、DPTR二、直接寻址在指令中含有操作数的直接地址,该地址指出了参与运算或传送的数据所在的字节单元或位的地址。直接寻址方式访问以下三种存储空间:特殊功能寄存器(特殊功能寄存器只能用直接寻址方式访问)。内部数据存储器的低128字节。位地址空间。三、寄存器间接寻址指令指出某一个寄存器的内容作为操作数的地址。寻址空间:内部RAM(@R0、@R1、SP)外部数据存储器(@R0、@R1、@DPTR)四、立即寻址立即寻址方式中操作数包含在指令字节中,即操作数以指令字节的形式存放于程序存储器中。五、基寄存器加变址寄存器间接寻址以16位的程序计数器PC或数据指针DPTR作为基寄存器,以8位的累加器A作为变址寄存器,基寄存器和变址寄存器的内容相加形成16位的地址,该地址即为操作数的地址。寻址空间:程序存储器(@A+PC、@A+DPTR)六、相对寻址相对寻址方式是为实现程序的相对转移而 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 的,为相对转移指令所采用。目的地址:PC值+转移指令字节数+relPC值:执行完该转移指令后的PC值。rel:带符号的8位二进制补码数,所能表示的数的范围是-128~+127。第三节数据传送指令MOV<目的操作数>,<源操作数>数据传送指令是指把源操作数传送到目的操作数。指令执行后,源操作数的值不改变,目的操作数的值改为源操作数赋给的相应值。除以累加器A为目的操作数寄存器指令会对奇偶标志位P有影响外,其余指令执行时均不会影响任何PSW的标志位。一、内部数据传送指令1.以累加器A为目的操作数的指令MOVA,Rn;n=0~7MOVA,directMOVA,@Ri;i=0,1MOVA,#data功能:把源操作数的内容送入累加器A。2.以Rn为目的操作数的指令MOVRn,A;n=0~7MOVRn,directMOVRn,#data功能:把源操作数的内容送入当前工作寄存器区的R0~R7中的某一个寄存器。3.以直接寻址的单元为目的操作数指令MOVdirect,AMOVdirect,Rn;n=0~7MOVdirect,directMOVdirect,@Ri;i=0、1MOVdirect,#data功能:把源操作数送入由直接地址指出的存储单元。4.以寄存器间接寻址的单元为目的操作数指令MOV@Ri,A;i=0、1MOV@Ri,directMOV@Ri,#data功能:把源操作数内容送入R0或R1指出的内部RAM存贮单元中。5.16位数据传送指令MOVDPTR,#datal6功能:把16位常数送入DPTR。6.堆栈操作指令内部RAM中可以设定一个后进先出(LIFO)的堆栈。(1)进栈指令PUSHdirect功能:首先将堆栈指针SP加1,然后把直接地址指出的内容传送到堆栈指针SP寻址的内部RAM单元中。(2)退栈指令POPdirect功能:堆栈指针SP寻址的内部RAM单元内容送入直接地址指出的字节单元中,堆栈指针SP减1。7.字节交换指令XCHA,Rn;n=0~7XCHA,directXCHA,@Ri;i=0、1功能:将累加器A的内容和源操作数内容相互交换。8.半字节交换指令XCHDA,@Ri;i=0、1功能:将A的低4位和R0或R1指出的RAM单元低4位相互交换,各自的高4位保持不变。二、累加器A与外部数据存储器传送指令MOVXA,@DPTRMOVXA,@Ri;i=0,1MOVX@DPTR,AMOVX@Ri,A功能:将累加器A和外部扩展的RAM/IO口的数据传送。三、查表指令1.MOVCA,@A+PC功能:以PC作为基址寄存器,A的内容作为无符号数和PC内容(下一条指令的始地址)相加后得到一个16位的地址,由该地址指出的程序存储器单元内容送到累加器A。2.MOVCA,@A十DPTR功能:以DPTR作为基址寄存器,A的内容作为无符号数和DPTR的内容相加得到一个16位的地址,由该地址指出的程序存储器单元的内容送到累加器A。第四节算术运算指令算术运算指令有加、减、乘、除法指令,增量和减量指令。一、加法指令1.不带进位的加法指令ADDA,Rn;n=0~7ADDA,directADDA,@Ri;i=0、1ADDA,#data功能:把所指出的第二操作数和累加器A的内容相加,其结果放在累加器中。指令执行后,影响PSW标志位。2.带进位加法指令ADDCA,Rn;n=0~7ADDCA,directADDCA,@Ri;i=0、1ADDCA,#data功能:同时把所指出的第二操作数、进位标志与累加器A内容相加,结果放在累加器中。指令执行后,影响PSW标志位。3.增量指令INCAINCRn;n=0~7INCdirectINC@Ri;i=0、1INCDPTR功能:把指令所指出的操作数加1。除对A作影响P外不影响任何PSW标志。4.十进制调整指令DAA功能:对累加器A中由上一条加法指令(加数和被加数均为压缩的BCD码)所获得8位结果进行调整,使它调整为压缩BCD码的数。二、减法指令1.带进位减法指令SUBBA,Rn;n=0~7SUBBA,directSUBBA,@Ri;i=0、1SUBBA,#data功能:从累加器中减去第二操作数和进位标志,结果在累加器中。指令执行后,影响PSW标志位。2.减1指令DECADECRn;n=0~7DECdirectDEC@Ri;i=0、1功能:将指定的操作数减1。除对A作影响P外不影响任何PSW标志。三、乘法指令MULAB功能:把累加器A和寄存器B中的8位无符号整数相乘,其16位积的低位字节在累加器A中,高位字节在B中。如果积大于255(0FFH),则置位溢出标志OV;否则清“0”OV。进位标志CY总是清“0”。四、除法指令DIVAB功能:把累加器A中的8位无符号整数除以寄存器B中的8位无符号整数,所得商的整数部分存放在累加器A中,余数在寄存器B中。如果原来B中的内容为0,即除数为0,则结果A和B中内容不定,并置位溢出标志OV。在任何情况下,都清“0”CY。第五节逻辑运算指令一、累加器A的逻辑操作指令1.CLRA功能:将累加器A清“0”,不影响CY、AC、OV等标志。2.CPLA功能:将累加器ACC的每一位逻辑取反。不影响标志。3.左环移指令RLA4.带进位左环移指令RLCA5.右环移指令RRA6.带进位右环移指令RRCA7.累加器ACC半字节交换指令SWAPA功能:将累加器ACC的高半字节(ACC.7~ACC.4)和低半字节(ACC.3~ACC.0)互换。二、两个操作数的逻辑操作指令1.逻辑与指令ANLA,Rn;n=0~7ANLA,directANLA,@Ri;i=0、1ANLA,#dataANLdirect,AANLdirect,#data功能:操作数之间执行按位的逻辑与操作,结果存放在目的操作数中。2.逻辑或指令ORLA,Rn;n=0~7ORLA,directORLA,@Ri;i=0、1ORLA,#dataORLdirect,AORLdirect,#data功能:操作数之间执行按位的逻辑或操作,结果存到目的操作数中去。3.逻辑异或指令XRLA,Rn;n=0~7XRLA,directXRLA,@Ri;i=0、1XRLA,#dataXRLdirect,AXRLdirect,#data功能:操作数之间执行按位的逻辑异或操作,结果存放到目的操作数中去。第六节位操作指令进位位CY(程序状态字PSW.7)作为累加器C,以RAM和SFR内的位寻址区的位单元作为操作数,进行位变量的传送、修改和逻辑等操作。一、位变量传送指令MOVC,bitMOVbit,C二、位变量修改指令CLRCCLRbitCPLCCPLbitSETBCSETBbit三、位变量逻辑操作指令1.位变量逻辑与指令ANLC,bitANLC,/bit功能:如果源位的布尔值是逻辑0,则进位标志清“0”,否则进位标志保持不变。操作数前斜线“/”表示用寻址位的逻辑非作源值,但不影响源位本身值,不影响别的标志。2.位变量逻辑或指令ORLC,bitORLC,/bit功能:如果源位的布尔值为1,则置位进位标志,否则进位标志CY保持原来状态。同样,斜线“/”表示逻辑非。第七节控制转移指令一、无条件转移指令1.短跳转指令AJMPaddr11指令编码:a10a9a800001a7a6a5a4a3a2a1a0功能:2KB字节范围内的无条件转跳指令,程序转移到指定的地址。该指令在运行时先将PC+2,然后通过把PC的高5位和指令第一字节高3位以及指令第二字节相连(PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0)而得到转跳目的地址送入PC。2.相对转移指令SJMPrel功能:无条件转跳指令,执行时在PC加2后,把指令的有符号的偏移量rel加到PC上,并计算出转向地址。因此,转向的目标地址可以在这条指令前128字节到后127字节之间。3.长跳转指令LJMPaddrl6功能:把指令提供的16位目标地址送入PC,无条件地转向指定地址。转移的目标地址可以在64K字节程序存储器地址空间的任何地方,不影响任何标志。4.基寄存器加变址寄存器间接转移指令(散转指令)JMP@A+DPTR功能:把累加器A中8位无符号数与数据指针DPTR中的16位数相加(模216),结果作为下条指令地址送入PC,不改变累加器和数据指针内容,也不影响标志。实现程序的散转。二、条件转移指令条件满足才转移(相当于执行一条相对转移指令),条件不满足时则顺序执行下面的指令。转移目的地址=下一条指令的第一个字节地址PC+相对偏移量rel1.测试条件符合转移指令JZrel;(A)=0JNZrel;(A)≠0JCrel;CY=1JNCrel;CY=0JBbit,rel;(bit)=1JNBbit,rel;(bit)=0JBCbit,rel;(bit)=1(转移后清洗直接寻址位)2.比较不相等转移指令CJNEA,direct,relCJNEA,#data,relCJNERn,#data,rel;n=1~7CJNE@Ri,#data,rel;i=0、1功能:比较两个操作数的大小。如果它们的值不相等,则转移。转移目的地址=下一条指令的第一个字节地址PC+相对偏移量rel如果第一操作数(无符号整数)小于第二操作数,则置位进位标志CY;否则,CY清0。不影响任何一个操作数的内容。3.减1不为0转移指令DJNZRn,rel;n=1~7DJNZdirect,rel功能:源操作数减1,结果回送到源操作数中去。如果结果不为0,则转移。转移目的地址=下一条指令的第一个字节地址PC+相对偏移量rel利用内部RAM单元作程序循环计数器。三、调用和返回指令主程序和子程序结构主程序二次调用子程序示意图二级子程序嵌套示意图调用和返回子程序是独立于主程序的具有特定功能的程序段,单独编写,能被主程序调用,又能返回主程序。堆栈和PC值的保留调用子程序时,CPU自动将当前PC值保留在堆栈中,子程序返回时,自动弹出,送入PC。现场保护和恢复现场现场保护:子程序开始时,保护现场。恢复现场:在子程序返回前,恢复现场。1.短调用指令ACALLaddr11指令编码:a10a9a810001a7a6a5a4a3a2a1a0功能:(PC)+2→PC,并压入堆栈,先PCL,后PCH,(SP)+2→SP。子程序入口地址=PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0→PC2.长调用指令LCALLaddrl6功能:(PC)+3→PC,并压入堆栈,先PCL,后PCH,(SP)+2→SP。addr16→PC,获得子程序起始地址3.返回指令(1)从子程序返回指令RET功能:从堆栈中退出PC的高位和低位字节,把栈指针SP减2,并从产生的PC值开始执行程序。(2)从中断返回指令RETI功能:从堆栈中退出PC的高位和低位字节,栈指针减2,同时清除中断优先,开放低级中断。4.空操作指令NOP功能:CPU不做任何操作,只作时间上的消耗。常用于程序的等待或时间的延迟。第八节汇编语言程序设计举例一、汇编语言程序的结构1、程序设计的基本步骤(1)分析题意,明确要求;(2)建立思路,确定算法;(3)编制框图,绘出流程;(4)编写程序,上机调试。2、画流程图二、延时程序例1延时程序。DEL:MOVR7,#200;1TDELl:MOVR6,#125;1TDEL2:DJNZR6,DEL2;2TDJNZR7,DEL1;2TRET;2Tfosc=12MHz晶振时,T=1μs。这段程序的延迟时间为:(250+1+2)×200+1+2=50.303ms。三、查表程序例2设a、b为小于10的正整数。试编程计算C=a2+b2的函数值,存入30H中。a、b的值已存放在40H、41H单元中。MOVA,40HACALLSUB3;查表得a2的值MOVR2,AMOVA,41HACALLSUB3;查表得b2的值ADDA,R2MOV30H,ASJMP$SUB3:INCAMOVCA,@A+PCRETDB00H,01H,04H,09H,10H,19H,24H,31H,40H,51H四、数制转换一个整数的十进制表示式为:A=an×10n+…+a1×101+a0例如:5731=5×103+7×102+3×101+1=[(5×10+7)×10+3]×10+1编写程序形式:初值:Yn=an,i=n-1Y=Y×X+aii=i-1结束条件:i<0例34位十进制整数转换为二进制整数程序。设单字节BCD码a3,a2,a1,a0依次存放于内部RAM中的50H~53H单元,转换成的二进制整数存放于R3R4。IDTB:MOVR0,#50HMOVR2,#3MOVR3,#0MOVA,@R0MOVR4,AL00P:MOVA,R4MOVB,#10MULABMOVR4,A;R4×10低8位MOVA,BXCHA,R3MOVB#10MULABADDA,R3MOVR3,AINCR0MOVA,R4ADDA,@R0MOVR4,AMOVA,R3ADDCA,#0MOVR3,ADJNZR2,L00PRET五、并行口操作程序例4步进马达驱动子程序。P1.0~P1.2通过驱动电路控制步进马达A,B,C三相的通电,从而控制步进马达的转动。设输出线(P1.0~P1.2)为高电平时,相应的一相通电,如果步进马达按三相六拍方式正转,即设计一个子程序,其功能是使步进马达正转一步,主程序每隔一定时间调用该子程序时,马达即以一定的速率转动。步进马达有如下所示六个状态:状态CBA状态转换操作0001状态5转0:0→C1011状态0转1;1→B2010状态1转2;0→A3110状态2转3;1→C4100状态3转4;0→B5101状态4转5:1→A主程序:MAIN:MOVSP,#60H;初始化MOV30H,#0SETBP1.0CLRP1.1CLRP1.2MLOP:ACALLDL20;fosc=12MHzACALLQM36SJMPMLOP;每20ms正转一步DL20:MOVR7,#40DL1:MOVR6,#250DL0:DJNZR6,DL0DJNZR7,DL1RET驱动子程序:QM36:MOVA,30HCJNEA,#5,QML1MOVA,#0QML0:MOV30H,AMOVB,#3MULABMOVDPTR,#QMTBJMP@A十DPTRQML1:INCASJMPQML0QMTB:CLRP1.2;5转0RETSETBP1.1;0转1RETCLRP1.0;1转2RETSETBP1.2;2转3RETCLRP1.1;3转4RETSETBP1.0;4转5RET演讲完毕,谢谢观看!
本文档为【MCS-51指令系统概述】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
言言无悔一生
暂无简介~
格式:ppt
大小:520KB
软件:PowerPoint
页数:50
分类:
上传时间:2022-01-21
浏览量:3