您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 第2章MCS51单片机指令系统
关新单片机原理2第2章MCS-51单片机指令系统2.1单片机寻址方式2.2数据传送与交换指令2.3算术运算和逻辑运算指令2.4控制转移类指令2.5位操作指令32.1单片机寻址方式2.1.1立即寻址2.1.2直接寻址2.1.3寄存器寻址2.1.4寄存器间接寻址2.1.5变址寻址2.1.6相对寻址2.1.7位寻址42.1.1立即寻址指令中直接给出操作数的寻址方式。立即寻址的指令多2字节或3字节。16位数存放顺序不同于8086(0020H)例:机器码助记符目的操作数源操作数7480MOVA,#80H902000MOVDPTR,2000H52.1.2直接寻址指令中直接给出操作数所在的地址例:机器码助记符目的操作数源操作数E525MOVA,25H758045MOVP0,#45H852030MOV30H,20H62.1.3寄存器寻址以通用寄存器的内容为操作数的寻址方式称为寄存器寻址.通用寄存器包括:A/B/DPTR/R0~R7例:机器码助记符目的操作数源操作数E8MOVA,R0A4MULAB88F0MOVB,R0C0E0PUSHACC2526ADDA,26H72.1.4寄存器间接寻址以寄存器的内容为地址,该地址的内容为操作数的寻址方式称为寄存器间接寻址.寄存器包括:在DPTR/R0/R1前面加@表示.例机器码助记符目的操作数源操作数F6MOV@R0,AE3MOVXA,@R1F0MOVX@DPTR,A82.1.5变址寻址以寄存器DPTR或PC的内容加上A的内容之和,为操作数地址的寻址方式称为变址寻址.变址寻址只能对程序存储器中的数据作寻址操作,因此只有读而无写.例:机器码助记符目的操作数源操作数93MOVCA,@A+DPTR83MOVCA,@A+PC92.1.6相对寻址以当前程序计数器PC的内容为基值,加上指令给出的一字节补码数,形成新的PC值的寻址方式称为相对寻址.相对寻址用于修改PC值,实现程序的分支转移.例:机器码助记符目的操作数8008SJMP08H102.1.7位寻址对位地址中的内容为操作数的寻址方式称为位寻址.单片机中只有内部RAM和特殊功能寄存器的部分单元有位地址,这种寻址方式只对这两个空间操作.例:机器码助记符目的操作数源操作数D220SETB20H9232MOV32H,C725AORLC,5AH112.2数据传送与交换指令2.2.1内部RAM和SFR间的传送指令2.2.2外部数据存储器和A间的传送指令2.2.3堆栈操作2.2.4交换指令122.2.1内部RAM和SFR间的传送指令助记符目的操作数源操作数1.MOVA,Rn/dir/@Ri/#data2.MOVRn,A/dir/#data3.MOVDPTR,#data164.MOVdir,A/Rn/dir/@Ri/#data5.MOV@Ri,A/dir/#data132.2.2外部数据存储器和A间的传送指令助记符目的操作数源操作数访问外部数据存储器(4条)1.MOVX@Ri,A2.MOVX@DPTR,A3.MOVXA,@Ri4.MOVXA,@DPTR访问外部程序存储器(2条)1.MOVCA,@A+PC2.MOVCA,@A+DPTR142.2.3堆栈操作说明:1.初始化时SP=07H,从08H开始;2.字节操作,压入/弹出一个8位数;3.入栈时SP+1,再压入;4.出栈时先弹出,SP-1。助记符目的操作数入栈操作PUSHdir出栈操作POPdir152.2.4交换指令助记符目的操作数源操作数字节交换指令XCHA,Rn/dir/@Ri低半字节交换指令XCHDA,@RiA的高、低半字节交换指令SWAPA162.3算术运算和逻辑运算指令2.3.1以A为目的操作数的算术运算和逻辑运算指令2.3.2以dir为目的操作数的逻辑运算指令2.3.3加1、减1指令2.3.4十进制调整指令2.3.5对A的指令2.3.6乘、除法指令172.3.1以A为目的操作数的算术运算和逻辑运算指令助记符目的操作数源操作数注解1.ADDA,@Ri/dir/R/#data;加2.ADDCA,@Ri/dir/R/#data;进位加3.SUBBA,@Ri/dir/R/#data;借位减4.ANLA,@Ri/dir/R/#data;与5.ORLA,@Ri/dir/R/#data;或6.XRLA,@Ri/dir/R/#data;异或182.3.2以dir为目的操作数的逻辑运算指令助记符目的操作数源操作数注解1.ANLdir,@Ri/dir/R/#data;与2.ORLdir,@Ri/dir/R/#data;或3.XRLdir,@Ri/dir/R/#data;异或192.3.3加1、减1指令对内部RAM或寄存器自增1/减1助记符操作数1.INCA/@;Ri/dir/Rn/DPTR2.DECA/@;Ri/dir/Rn202.3.4十进制调整指令如果是十进制数相加(BCD),想得到十进制结果,就必须调整。即指令为:DAA例:完成56+17的编程的思考过程。56H+17H6DH(和低4位0DH9,则加6)+06H73H212.3.5对A的指令助记符操作数注释1.CPLA;取反2.CLRA;清零3.RLA;循环左移4.RRA;循环右移5.RLCA;大循环左移6.RRCA;大循环右移222.3.6乘、除法指令助记符操作数注释乘法指令MULAB;A×B→BA除法指令DIVAB;A÷B→商在A中余数在B中232.4控制转移类指令2.4.1调用程序和返回指令2.4.2转移指令/空操作指令1.无条件转移指令2.条件转移指令3.比较转移指令4.空操作指令242.4.1调用程序和返回指令助记符操作数注释长调用指令LCALLaddr16;操作数为PC值短调用指令ACALLaddr11;操作数为PC值的低11位子程序返回RET;从子程序返回主程序RETI;从中断服务程序返回主程序252.4.2转移指令1.无条件转移指令助记符操作数注释短转移指令AJMPaddr11;操作数为PC值的低11位长转移指令LJMPaddr16;操作数为PC值间接转移指令JMP@A+DPTR;A+DPTR→PC值无条件相对转移指令SJMPrel;PC+rel→PC值262.条件转移指令助记符目的操作数源操作数注释累加器为零/非零指令JZrel;A=0则转移JNZrel;A≠0则转移减1非零指令DJNZRn,rel;A=0则转移DJNZdir,rel;A≠0则转移273.比较转移指令助记符目的操作数源操作数注释CJNEA,dir,rel;A≠dir则转移CJNEA,#data,rel;A≠#data则转移CJNERn,#data,rel;A≠#data则转移CJNE@Ri,#data,rel;A≠#data则转移4.空操作指令NOP282.5位操作指令助记符操作数注释1.位清零指令CLRC;0→CYCLRbit;0→bit2.位置位指令SETBC;1→CYSETBbit;1→bit3.位取反指令CPLC;CY→CYCPLbit;bit→bit29助记符目的操作数源操作数注释4.位与指令ANLC,bit;CY∧bit→CYANLC,bit;CY∧bit→CY5.位或指令ORLC,bit;CY∨bit→CYORLC,bit;CY∨bit→CY6.位传送指令MOVC,bit;bit→CYMOVbit,C;CY→bit30助记符目的操作数源操作数注释7.位转移指令JCrel;CY=1则转移JNCrel;CY=0则转移JBbit,rel;bit=1则转移JNBbit,rel;bit=0则转移JBCbit,rel;bit=1则转移
本文标题:第2章MCS51单片机指令系统
链接地址:https://www.777doc.com/doc-3402765 .html