单片机原理及应用03第三章MCS-51指令系统_第1页
单片机原理及应用03第三章MCS-51指令系统_第2页
单片机原理及应用03第三章MCS-51指令系统_第3页
单片机原理及应用03第三章MCS-51指令系统_第4页
单片机原理及应用03第三章MCS-51指令系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

03第三章MCS-51指令系统3.1指令系统概述3.2寻址方式3.3指令系统1MCS-51系列单片机指令基本情况51系列单片机指令集含有111条指令每条指令在程序存储器ROM中占据一定空间,以字节为单位按指令所占字节数分类:

单字节(49条);双字节(46条);3字节(16条)

每条指令在执行时要花去一定的时间,以机器周期为单位按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条)按指令的功能分类,可分为5大类:

数据传送类(29条);算术运算类(24条)

逻辑运算及移位类(24);控制转移类(17条)

位操作类(17条)

第三章节MCS-51指令系统2ASM-51指令格式51系列单片机采用ASM-51指令格式,格式如下:[标号:]操作码

[目的操作数][,源操作数][;注释]其中包含:方括符[]表示可选项标号代表指令所在地址,1-8个字母/数字,“:”结尾操作码就是指令功能助记符,指令实体目的操作数源操作数注释,以“;”开头3第一节MCS-51系列单片机寻址方式寻址方式:计算机指令中操作数(按地址)获取的方式MCS-51系列单片机提供了7种寻址方式,如果一条指令中包含多个操作数,就可能用到一种以上的寻址方式1、立即寻址2、直接寻址3、寄存器寻址4、寄存器间接寻址5、变址寻址6、相对寻址7、位寻址41、立即寻址(一)在指令中直接给出操作数的寻址方式称为立即寻址。这个操作数叫立即数,如指令:

MOVA,#3AH该指令是将立即数3AH送累加器,由于MCS-51单片机的片内存储器是8位存储器,因此立即数一般为8位二进制数。在MCS-51的指令系统中,用#来识别立即数。74HA

操作码立即数程序存储器PCPC+13AH3AH51、立即寻址(二)在有的指令中,也会用到16位立即数,如:MOVDPTR,#0123H该指令是将16位立即数0123H送数据指针DPTR(用于对16位地址的存储器寻址),DPTR由两个特殊功能寄存器DPH和DPL组成,在后面的寻址方式中会使用到DPTR。90H01H23H01H23HPCPC+1PC+2操作码高位立即数低位立即数程序存储器SFRDPHDPL62、直接寻址在指令中直接给出操作数地址的寻址方式称为直接寻址,直接寻址何以寻址特殊功能寄存器、内部RAM(128字节)和位地址,如:MOVA,70H;A←(70H)该指令是将RAM单元70H(地址)的内容送累加器。74H70HPCPC+1操作码直接地址程序存储器内部RAM70HAXXXX73、寄存器寻址在指令的操作码中包含了某一工作寄存器的地址(Rn:R0—R7),而操作数则存放在该寄存器中,如:MOVA,R5;A←(R5)该指令是将R5的内容送累加器。101PC操作码程序存储器内部RAMR5AXXXXR6R7110184、寄存器间接寻址在指令的操作码中包含了某一工作寄存器的地址(可用作地址指针的工作寄存器是@Ri:R0、R1),而操作数地址则存放在该寄存器中,如:MOVA,@R1;A←((R1))该指令是将R1的内容送作为地址,将该地址所对应的RAM单元的内容送累加器。1PC操作码程序存储器内部RAMR1AXX68H111001XX68H95、变址寻址将PC或DPTR的值作为基地址,将Acc的值作为变址地址,二者向加得到的值作为操作数的地址,如:MOVA,@A+DPTR;A←((A)+(DPTR))这种寻址方式一般用于常数表,DPTR的内容为表头地址,Acc的内容就是数据在表中的位置。PC操作码程序存储器SFRA100100111EH02HALU030FHXXDPHDPLF1H02F1H02F1H+1EH=030FHXX106、相对寻址(一)相对寻址以PC当前值(PC当前值是执行完指令后的值,也就是当前指令的PC值+指令所占的字节数)作为基地址,与指令中给定的偏移量rel相加,所得的结果作为程序的转移地址,指令中的偏移量rel是一个用补码表示的8位带符号数。相对寻址用于相对转移指令中,如:

JZ30H;当A=0时,PC←PC+2+rel

当A≠0时,PC←PC+2//程序顺序执行该指令以累加器Acc的值是否为0为转移条件,如果为Acc的值0则转移,如果Acc的值不为0则程序顺序执行。程序的执行过程见相对寻址(二)。在MCS-51的指令系统中,相对转移指令多为2字节指令,因此目的地址一般是PC+2+rel;如果是3字节指令,目的地址是PC+3+rel。偏移量rel是一个8位带符号数,因此程序转移的范围在PC当前值的+127—-128之间。116、相对寻址(二)60HPC操作码程序存储器PC0102HALU30HXX0100HPC+10101HPC+20102HPC0123H偏移量0102H+30H=0132Hrel=30H0132H127、位寻址MCS-51系列单片机中有专用的位运算指令,可以对位寻址区的每一个位进行数据传送、逻辑运算等操作,如:MOVC,07H;C←(07H)该指令属于位操作指令,作用是将位地址为70H的位单元(字节地址20H单元的D7位)传送到位累加器C中。PC操作码程序存储器C20HA2H00PC+107HPSWX07SFRX13MCS-51指令集(包含5大类功能)1、数据传送类指令:(29条)2、算术运算类指令:(24条)3、逻辑运算及移位类指令:(24条)4、控制转移类指令:(17条)5、位操作指令:(17条)141、数据传送类指令(一)片内数据存储器间传送:(MOV—16条)片外数据存储器送累加器:(MOVX—4条)程序存储器送累加器:(MOVC—2条)数据交换:(XCH,XCHD,SWAP—5条)数据交换:(PUSH,POP—2条)151、数据传送类指令(二)片内数据存储器间传送:(MOV—16条)MOV类指令带有两个操作数,前一个是目的地址,后一个是源操作数。作用是将源操作数送目的地址,如:MOVA,30H;A←(70H)

AccDirect直接寻址@Ri间接寻址Rn寄存器寻址#data立即数161、数据传送类指令(三)片外数据存储器数据送累加器:(MOVX—4条)MOVX类指令可以在累加器和@Ri或@DPTR(@Ri为8位地址;@DPTR为16位地址)所指向的外部数据存储器间相互传送数据,具体指令有:MOVXA,@Ri;A←((Ri))MOVXA,@DPTR;A←((DPTR))MOVX@Ri,A;((Ri))←AMOVX@DPTR,A;((DPTR))←A

171、数据传送类指令(四)程序存储器数据送累加器:(MOVC—2条)MOVX类指令采用变址寻址方式进行寻址。该类指令通常称为查表指令,送入累加器Acc的数据是事先写入的表格数据,通常使用伪指令DB或DW预先定义在程序存储器中,具体指令有:MOVCA,A+@DPTR;MOVXA,A+@PC;181、数据传送类指令(五)数据交换指令:(5条)XCHA,direct(字节互换)XCHA,@Ri(字节互换)XCHA,Rn(字节互换)XCHDA,@Ri

累加器Acc的低4位与((Ri))的低4位互换,各自的高4位不变SWAPA

累加器Acc的高低4位互换191、数据传送类指令(六)堆栈操作指令:(2条)PUSH压栈指令POP弹栈指令

堆栈由特殊功能寄存器SP(堆栈指针)进行管理

理论上堆栈在存储器中可以放在任意位置,但为了不和工作寄存器冲突,一般将堆栈放在存储器靠后的位置堆栈指针SP总是指向栈顶(自动变化,见第二章相关内容)PUSH和POP一般是成对使用的202、算术运算类指令(一)加法运算:

(ADD—4条)带进位加法运算:(ADDC—4条)带借位减法运算:(SUBB—4条)加1/减1操作:

(INC,DEC—9条)单字节乘/除法运算:(MUL,DIV—2条)算术运算类指令共有6种24条十进制调整:

(DAA—1条)212、算术运算类指令(二)加法运算:(ADD—4条)带进位加法运算:(ADDC—4条)带借位减法运算:(SUBB—4条)所有的加法(ADD)、带进位加法(ADDC)、带借位减法(SUBB)运算都是以Acc为一个加数或被减数,最终结果也存进Acc

加法(ADD)、带进位加法(ADDC)以及带借位减法(SUBB)运算中,如果产生了进位或借位,将自动对PSW中的Cy标志位置“1”带进位加法(ADDC):(A)←

(A)+(Cy)+(第二操作数)带借位减法(SUBB):(A)

(A)-(Cy)-(第二操作数)222、算术运算类指令(三)加1/减1操作:(INC,DEC—9条)INC,DEC与用加/减法指令做加1/减1操作不同之处在于INC、DEC不影响标志位。单字节乘/除运算:(MUL,DIV—2条)两个单字节数的乘/除法运算只在A与B之间进行。MULAB:(A)与(B)相乘,积为16位数,(A)←积的高8位;(B)←积的低8位DIVAB:(A)除以(B),结果用2字节表示,(A)←商的整数部分;(B)←余数232、算术运算类指令(四)十进制调整:(DAA—1条)用于两个BCD码之间的相加,这条指令只能跟在

ADD或ADDC之后BCD码是指“用二进制表达的十进制数”。如:十进制数20可以用二进制数00010100B表示;也可以用十六进制数14H表示;还可以用BCD码00100000B或20H表示。4个二进制位就可以表示一位BCD码:0000~1001可表示十进制数(BCD数)0~9;8个二进制位就可以表示两位压缩的BCD码:00000000~10011001表示00~99。242、算术运算类指令(五)DAA指令的执行过程若(A)3~0>9或(AC)=1则(A)3~0←(A)3~0+6;若(A)7~4>9或(CY)=1则(A)7~4←(A)7~4+6;如:两个十进制数“65”与“58”相加,根据常识,显然其和应当为“123”。MOVA,#65HADDA,#58HDAA结果:(A)=23H(Cy)=1

6501100101

5801011000

+)6601100110+)191800113200101253、逻辑运算及移位类指令(一)该类指令共有5种24条逻辑与运算:(ANL—6条)逻辑或运算:(ORL—6条)逻辑异或运算:(XRL—6条)累加器清零/取反:(CLR,CPL—2条)累加器移位操作:(RL,RLC,RR,RRC—4条)263、逻辑运算及移位类指令(二)逻辑与(ANL),逻辑或(ORL),逻辑异或(XRL):指令形式ByteTmANL(ORL,XRL)direct,

A21ANL(ORL,XRL)direct,#data32ANL(ORL,XRL)A,#data21ANL(ORL,XRL)A,direct21ANL(ORL,XRL)A,

@Ri11ANL(ORL,XRL)A,Rn11累加器清零/取反操作(CLR,CPL—2条)CLRA—对累加器清零

1Byte1TmCPLA——对累加器按位取非

1Byte1Tm273、逻辑运算及移位类指令(三)逻辑运算指令在程序中的应用(下面的例子认为Acc的内容为9AH)逻辑与ANL运算用于对某些位进行清0或者保留:例:ANLA,#0FH;则(A)=0AH逻辑或ORL运算用于对某些位进行置1或者保留:例:ORLA,#0FH;则(A)=9FH逻辑异或XRL运算用于对某些位进行取反或者保留:例:XRLA,#0FH;则(A)=95H(A)10011010#0FH00001111

95H1001010128RRCA

带进位循环左移3、逻辑运算及移位类指令(四)累加器移位操作:(RL,RLC,RR,RRC—4条)RLA

循环右移CyRRA

循环左移RLCA

带进位循环右移累加器Acc累加器Acc累加器Acc累加器AccCy294、控制转移类指令(一)控制转移类指令用于对程序的执行顺序进行控制(即改变PC指针的当前值),该类指令共有4种17条无条件转移:(LJMP,AJMP,SJMP,JMP—4条)条件转移(判断跳转):(JZ,JNZ,CJNE,DJNZ—8条)子程序调用及返回:(LCALL,ACALL,RET,RETI—4条)空操作:(NOP—1条)“消耗”一个机器周期304、控制转移类指令(二)无条件转移:(LJMP,AJMP,SJMP,JMP—4条)LJMPaddr16

长跳转指令

——可在64K范围内跳转AJMPaddr11绝对跳转指令

——可在指令所在的2K范围内跳转

SJMPrel相对跳转指令

——可在当前PC-128与+127范围内跳转

JMP@A+DPTR间接长跳转指令

——可在以DPTR为基址+A为偏移量

之和所指向的64K程序范围内跳转314、控制转移类指令(三)条件转移:(JZ,JNZ,CJNE,DJNZ—8条)JZrelJNZrel

——根据Acc的内容是否为0决定是否跳转

DJNZdirect,relDJNZRn,rel

——将direct(或Rn)里的内容减1,结果不

等于0就跳转;等于0则不跳转继续执行程序324、控制转移类指令(四)条件转移:CJNEA,

#data,relCJNEA,

direct,relCJNE@Ri,

#data,relCJNERn,

#data,rel

——将A(或@Ri,或Rn)与#data(或direct)相比

较,其值不相等就跳转;相等则不跳转,继

续执行程序334、控制转移类指令(五)子程序调用及返回:(LCALL,ACALL,RET,RETI—4条)LCALLaddr16子程序长调用指令——可在64K范围内调用子程序ACALLaddr11

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论