您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > MCS51指令系统1汇编语言
第三章MCS-51指令系统§1汇编语言一.指令和程序设计语言㈠.机器语言:用二进制编码来表示每条指令(机器码)。由机器语言编写的程序称为机器语言程序(目标程序、机器码程序)例:计算10+20740A;A←102014;A←A+20优点:CPU可直接识别执行,速度快。缺点:难以阅读、交流、记忆、修改。机器语言-----汇编语言------高级语言㈡.汇编语言:用助记符、文字符号、数字表示指令地址和数据。用汇编语言编制的程序称为汇编语言程序(源程序)例:计算10+20MOVA,#10;10→AADDA,#20;20+A→A优点:每个汇编语言指令对应一条机器码。执行速度快,容易阅读记忆。缺点:运算功能不强,依赖于CPU型号结构,不易移植。*汇编语言程序不能被CPU直接识别执行,需要“翻译”成目标程序。这个“翻译”的过程称为“汇编”。完成“汇编”的程序称为“汇编程序”。㈢.高级语言:用一条语句代表多条指令的组合;引入了变量概念。(如C语言、BASIC语言等)优点:运算功能强;不依赖CPU型号结构,便于移植;不必考虑实际地址分配。缺点:低层处理功能差,占用资源多,速度较慢。*高级语言编制的程序(源程序)需通过“编译程序”翻译成目标程序,(编译)方能被CPU识别执行。二.指令格式:MCS-51汇编语言指令由操作码助记符和操作数两大部分组成,指令格式如下:操作码[操作数1][,操作数2][;注释]*操作码是必备的,操作数个数视指令情况而定,可以是一个、两个,也可以没有。(格式中[]表示选项)例1:MOVA,Rn机器码:(单字节)11101rrr高5位表示操作方式(某寄存器内容传送到A)rrr指明R0—R7中的某一个寄存器例2:MOVA,#10机器码:(双字节)01110100……向A传数,00001010……操作数10*MCS-51指令系统中共有111条不同的指令,其机器码可能为单字节(49条)、双字节(45条)三字节(17条)单字节指令1、指令码中隐含着对某一种寄存器的操作如:指令“INCDPTR”的指令代码格式为:A3H=101000112、由指令中的rrr三位的不同编码指定某一寄存器如:指令“MOVA,Rn”的指令代码格式为:11101rrr双字节指令用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。格式为:操作码立即数或地址三字节指令一个字节操作码,两个字节操作数。格式为:操作码立即数或地址,立即数或地址§2寻址方式一.寄存器寻址:以寄存器内容为操作数寻址空间:R0-R7Rn(n=0-7);ACCA、B、CYC、DPTR例:MOVA,R0;(R0)→A二.直接寻址:指令中给出操作数地址寻址空间:内部RAM低128字节direct;专用寄存器direct例:MOVA,3AH;(3AH)→AMOVP1,A;A→P1口(锁存器)*指令中允许使用数字、文字符号、专用寄存器名表示直接地址。三.立即寻址:指令中给出立即数寻址空间:程序存储器#data,#data16*允许使用数字、文字符号表示data。例:MOVA,#3AH;3AH→AMOVDPTR,#2000H;2000H→DPTR四.寄存器间接寻址:以寄存器内容为操作数地址。寻址空间:内部RAM@Ri(i=0、1)外部RAM@Ri、@DPTR例:MOVA,@R0;((R0))→A设(R0)=65H,(65H)=47H,则执行后,47H→A*在这里,R0起着“地址指针”的作用。五.基址加变址间接寻址:以基址寄存器加变址寄存器之和作为操作数地址寻址空间:程序存储器@A+DPTR,@A+PC例:设A=11H,DPTR=02F1H,(0302H)=1EH执行MOVCA,@A+DPTR后,(A)=1EH六.相对寻址:指令中给出偏移量(用于相对转移指令)寻址空间:程序存储器rel例:执行指令JCrel(双字节条件转移指令,CY=1则转移),设PC=1000H,rel=75H,CY=1取指后PC=1002H,因CY=1,故PC+75H=1077H→PC由源地址和目标地址求偏移量的方法:rel=目标地址-(源地址+2)*rel为8位二进制补码,范围是-128——+127,故“目标地址-源地址”的范围是-126——+129,这也是相对转移的最大范围。七.位寻址:指令中给出位地址。(用于位操作指令)寻址空间:可寻址位bit(位寻址区、某些专用寄存器的位)例:CLR01H;将20H单元的bit1(20H.1)清零。CPLP1.0;将P1.0取反。*位地址的表示方法:位地址值、专用位名称、点操作符。指令分类(共111条)1.传送类(29条)2.算术操作(24条)3.逻辑操作(24条)4.程序转移控制(17条)5.布尔变量操作(17条)§3数据传送指令一.内部数据寄存器传送(一).8位传送:(1)向累加器A传送:助记符机器码操作MOVA,Rn11101rrr(Rn)→AMOVA,direct11100101(direct)→AdirectMOVA,@Ri1110011i((Ri))→AMOVA,#data01110100data→Adata*写指令时,大写字母、符号部分照抄(汇编时大小写不敏感),小写字母部分按要求给出具体内容。例:(R0)=30H,执行MOVA,R0后,(A)=30H(R1)=40H,(40H)=38H,执行MOVA,40H后,(A)=38H执行MOVA,@R1后,(A)=38H执行MOVA,#6AH后,(A)=6AH;继续执行MOVA,#79H后,(A)=79H(2)向寄存器Rn传送:MOVRn,A;(A)→RnMOVRn,direct;(direct)→RnMOVRn,#data;#data→Rn例:(A)=78H,(R5)=47H,(70H)=F2H执行:MOVR5,A;(R5)=78HMOVR5,70H;(R5)=F2HMOVR5,#0A3H;(R5)=A3H(3)向直接寻址单元传送:MOVdirect,A;(A)→directMOVdirect,Rn;(Rn)→directMOVdirect,direct;(源direct)→目的directMOVdirect,@Ri;((Ri))→directMOVdirect,#data;#data→direct(4)向间接寻址单元传送:MOV@Ri,A;(A)→(Ri)MOV@Ri,direct;(direct)→(Ri)MOV@Ri,#data;#data→(Ri)小结:指令格式:MOV目的,源操作数:ARn(n=0-7)direct@Ri(i=0、1)#data传送规律:1.#data不能作为目的。2.R(包括Rn、@Ri)、不能同时作为目的与源。*传送后数据源不变,数据目标“后入为主”。(二)16位传送:指令格式:MOVDPTR,#data16;dataH→DPH;dataL→DPL二.外部程序存储器传送(查表指令)指令:MOVCA,@A+DPTR(远程查表)(PC)+1→PC,((A)+(DPTR))→AMOVCA,@A+PC(近程查表)(PC)+1→PC,((A)+(PC))→A例:单元内容1010H:02H1011H:04H1012H:06H1013H:08H执行程序:1000H:MOVA,#0DH1002H:MOVCA,@A+PC1003H:MOVR0,A结果:(A)=02H,(R0)=02H,(PC)=1004H例:单元内容7010H:02H7011H:04H7012H:06H7013H:08H执行程序:1000H:MOVA,#10H1002H:PUSHDPH;保护DPTR1004H:PUSHDPL1006H:MOVDPTR,#7000H;设表头指针1009H:MOVCA,@A+DPTR;查表100AH:POPDPL;恢复DPTR100CH:POPDPH结果:(A)=02H,PC=100EH,DPTR不变。三.外部数据存储器传送MOVXA,@Ri;((Ri))→AMOVXA@DPTR;((DPTR))→AMOVX@Ri,A;(A)→(Ri)MOVX@DPTR,A;(A)→(DPTR)*执行此类指令访问外RAM时,将产生RD或WR信号。小结:指令格式:MOVX目的,源传送规律:@Ri或@DPTR寄存器间址,操作数中有且仅有一个A四.数据交换(一)字节交换指令:XCHA,Rn;(A)←→(Rn)XCHA,@Ri;(A)←→((Ri))XCHA,direct;(A)←→(direct)(二)半字节交换指令:XCHDA,@Ri;(A)3-0←→((Ri))3-0SWAPA;(A)3-0←→(A)7-4五.堆栈操作指令:PUSHdirect;(SP)+1→SP,(direct)→(SP)POPdirect;((SP))→direct,(SP)-1→SP应用举例例1.设内RAM中(30H)=40H,(40H)=10H,(10H)=00H,(P1)=FAH,试分析下列程序中各指令类型及运行结果。MOVR0,#30HMOVA,@R0MOVR1,AMOVB,@R1MOV@R1,P1MOVP2,P1MOV10H,#20H应用举例例2.内RAM向外RAM传送650H←(25H)MOVR0,#25HMOVA,@R0MOVDPTR,#650HMOVX@DPTR,A例3.交换内RAM单元内容:(40H)←→(30H)方法1:MOVA,30H方法2:XCHA,30HMOV30H,40HXCHA,40HMOV40H,AXCHA,30H习题一1.分别实现下列数据传送:A←(P1);2OH←(3OH);B←3OH;R3←(R4);R1←((R0));1000H外RAM←(2000H)外RAM2.实现数据传送:(4OH)→(2OH)→(3OH)3.将A中BCD码拆成两字节,存入3OH与31H单元。示范:若(A)=58H,则(3OH)=05H,(31H)=08H提示:利用半字节交换指令习题一4.ROM表中按学号顺序(从1号开始)依次存放学生考分,利用远程查表指令查出3号学生考分,存入R5中。(提示:DPTR设为1000H,A中放偏移值)ROM1000H1#1001H2#1002H3#1003H4#85907583§4算术操作指令PSWD7D6D5D4D3D2D1D0CyACF0RS1RS0OV-PP31算术运算CyACOVP加法add,addcC7与C6异或反映运算后a的情况减法subb乘法mulab00结果大于255,也就是B不为0时,置1除法divab00除数b为0时置1§4算术操作指令一.加减运算(一)加法指令:ADDA,Rn;(A)+(Rn)→AADDA,direct;(A)+(direct)→AADDA,@Ri;(A)+((Ri))→AADDA,#data;(A)+#data→A*影响标志位:CY、AC、OV、P例:设(A)=C3H,(R0)=AAH,执行ADDA,R0后,(A)=6DH,CY=1,AC=0,OV=1,P=1(二)带进位加法指令:ADDCA,Rn;(A)+(Rn)+CY→AADDCA,direct;(A)+(direct)+CY→AADDCA,@Ri;(A)+((Ri))+CY→AADDCA,#data;(A)+#data+CY→A*影响标志位:CY、AC、OV、P;常用于多字节加法。例:(A)=C3H,(R0)=AAH,CY=1,执行ADDA,R0后,(A)=6EH,CY=1,AC=0,OV=1,P=1(三)带借位减法指令:SUBBA,Rn;(A)-(Rn)-CY→ASUBBA,direct;(A)-(direct)-CY→ASUBBA,@Ri;(A)-((Ri))-CY→ASUBBA,#data;(A)-#data-CY→A*影响标志位:CY、AC、OV、P**无SUB指令,可先将CY置0,然后用SUBB指令实现。例:(A)=C9H,(R2)=54H,CY=1,执行SUBBA,R2后,(A)=74H,CY=0,OV=1,P=0小结:指令格式:标志:影响CY、
本文标题:MCS51指令系统1汇编语言
链接地址:https://www.777doc.com/doc-4021711 .html