单片微机原理与接口技术-基于STC15系列单片机(第3版)课件 第4章 指令系统_第1页
单片微机原理与接口技术-基于STC15系列单片机(第3版)课件 第4章 指令系统_第2页
单片微机原理与接口技术-基于STC15系列单片机(第3版)课件 第4章 指令系统_第3页
单片微机原理与接口技术-基于STC15系列单片机(第3版)课件 第4章 指令系统_第4页
单片微机原理与接口技术-基于STC15系列单片机(第3版)课件 第4章 指令系统_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

作者丁向荣单片微机原理与接口技术第4章STC15F2K60S2单片机的指令系统

4.1

概述

4.2数据传送类指令

(29条)

4.3算术运算类指令(24条)

4.4逻辑运算与循环移位类指令(24条)

4.5控制转移类指令(17条)

4.6位操作类指令(17条)

4.1概述4.1.1机器指令的编码格式机器指令通常由操作码和操作数(或操作数地址)两部分构成。操作码用来规定指令执行的操作功能;操作数是指参与操作的数据。

(1)单字节指令单字节指令有两种编码格式:

1)8位编码仅为操作码返回目录

格式:位

76543210

字节

opcode4.1概述4.1.1机器指令的编码格式

2)8位编码含有操作码和寄存器编码这类指令的高5位为操作码,低3位为操作数对应的编码。如INCR1的指令编码为09H,其中高5位00001B为寄存器内容加1的操作码,低3位001B为寄存器R1对应的编码。

返回目录

格式:位76543210

字节opcoderrr4.1概述4.1.1机器指令的编码格式(1)双字节指令这类指令的第一个字节为操作码,第二字节表示参与操作的数据或存放数据的地址。如MOVA,#60H的指令代码为0111010001100000B,其中高字节01110100B为代表将立即数传送到累加器A功能的操作码,低字节01100000B为对应的立即数(源操作数,60H)。

返回目录格式:位76543210

字节opcodedata或direct4.1概述4.1.1机器指令的编码格式(2)三字节指令这类指令的第一个字节表示操作码,后两个字节表示参与操作的数据或存放数据的地址。返回目录格式:位76543210

字节opcodedirectdata或direct4.1概述4.1.2汇编语言指令格式

[标号:]操作码[第一操作数][,第二操作数][,第三操作数][;注释]

其中,方括号内为可选项。各部分之间必须用分隔符隔开,即标号要以“:”结尾,操作码和操作数之间要有一个或多个空格,操作数和操作数之间用“,”分隔,注释开始之前要加“;”。 例如:START:MOVP1,#0FFH ;对P1口初始化返回目录4.1概述4.1.2汇编语言指令格式

[标号:]操作码[第一操作数][,第二操作数][,第三操作数][;注释]

标号:表示该语句的符号地址,可根据需要而设置。当汇编程序对汇编语言源程序进行汇编时,以该指令所在的地址值来代替标号。在编程的过程中,适当的使用标号,使程序便于查询、修改以及方便转移指令的编程。标号通常用在转移指令或调用指令对应的转移目标地址处。标号一般由若干个字符组成,但第一个字符必须是字母,其余的可以是字母也可以是数字或下画线符号“_”,系统保留字符(含指令系统保留字符与汇编系统的保留字符)不能用作标号,标号尽量用转移指令或调用指令操作操作相近含义的英文缩写来表示。标号和操作码之间必须用冒号“:”分开。返回目录4.1概述4.1.2汇编语言指令格式

[标号:]操作码[第一操作数][,第二操作数][,第三操作数][;注释]

操作码:表示指令的操作功能,用助记符表示,是指令的核心,不能缺省。MCS-51指令系统中共有42种助记符,代表了33种不同的功能。例如MOV是数据传送的助记符。

操作数:是操作码的操作对象。根据指令的不同功能,操作数的个数可以是3、2、1,或没有。例如“MOVP1,#0FFH”,包含了两个操作数,即P1和#0FFH,它们之间用“,”隔开。

注释:用来解释该条指令或一段程序的功能,便于阅读。注释可有可无,对程序的执行没有影响。返回目录4.1概述3.指令系统中的常用符号

#data#data16directRn:n=0~7Ri:i=0,laddr16addr11relDPTRbit/bit@(×)((×))direct1←(direct2)(Ri)←(A)

返回目录4.1概述4.1寻址方式

返回目录序号寻址方式存储空间1操作数寻址立即寻址程序存储器2寄存器寻址工作寄存器R0~R7,A,AB,C3直接寻址基本RAM的低128字节,特殊功能寄存器(SFR),位地址空间4寄存器间接寻址基本RAM的低128字节、高128字节,扩展RAM或片外RAM5变址寻址程序存储器6指令寻址寻址空间自然为程序存储器,也可分为直接、相对寻址与变址寻址4.1概述4.1寻址方式

(1)立即寻址指令直接给出参与实际操作的数据(即立即数)。为了与直接寻址方式中的直接地址相区别,立即数前必须冠以符号“#”。例如:MOVDPTR,#1234H

返回目录4.1概述4.寻址方式(2)寄存器寻址指令中给出寄存器名,以该寄存器的内容作为操作数的寻址方式。能用寄存器寻址的寄存器包括累加器A、寄存器AB、数据指针DPTR、进位位CY以及工作寄存器组中的R0~R7。例如:INCR0

返回目录4.1概述4.寻址方式(3)直接寻址由指令直接给出操作数的所在地址。即指令操作数为存储器单元的地址,真正的数据在存储器单元中。例如: MOVA,3AH

返回目录4.1概述4.寻址方式(4)寄存器间接寻址

在指令中给出的寄存器内容是操作数的所在地址,从该地址中取出的才是操作数。这种寻址方式称为寄存器间接寻址。为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址中,应在寄存器的名称前面加前缀“@”。例如: MOVA,@R1

返回目录4.1概述4.寻址方式(5)变址寻址基址寄存器+变址寄存器间接寻址是以DPTR或PC为基址寄存器,累加器A做变址寄存器,以两者内容相加,形成的16位程序存储器地址作为操作数地址。又简称变址寻址。例如:MOVCA,@A+DPTR;

返回目录4.2数据传送类指令

1.基本RAM传送指令(16条)

(1)以累加器A为目的操作数的指令(4条) 指令指令功能 源操作数寻址方式

MOVA,Rn ;A←(Rn) 寄存器寻址

MOVA,direct ;A←(direct) 直接寻址

MOVA,@Ri;A←((Ri)) 寄存器间接寻址

MOVA,#data ;A←data 立即寻址返回目录4.2数据传送类指令

1.基本RAM传送指令(16条)

(2)以寄存器Rn为目的操作数的指令(3条)

MOVRn,A ;Rn←(A) MOVRn,direct ;Rn←(direct) MOVRn,#data ;Rn←data 返回目录4.2数据传送类指令

1.基本RAM传送指令(16条)

(3)以直接地址为目的操作数的指令(5条)

MOVdirect,A ;direct←(A) MOVdirect,Rn ;direct←(Rn) MOVdirect1,direct2 ;direct1←(direct2) MOVdirect,@Ri ;direct←((Ri)) MOVdirect,#data ;direct←data 返回目录4.2数据传送类指令

1.基本RAM传送指令(16条)

(5)16位数据传送指令(1条)

MOVDPTR,#data16 ;DPH←data15~8,DPL←data7~0

例4.1

返回目录4.2数据传送类指令

2.累加器A与扩展RAM之间的传送指令(4条)

(1)读扩展RAM单元指令MOVXA,@Ri ;A←((Ri))MOVXA,@DPTR ;A←((DPTR))(2)写扩展RAM单元指令MOVX@Ri,A ;(Ri)←(A)MOVX@DPTR,A ;(DPTR)←(A)

例4.2

例4.3返回目录4.2数据传送类指令

3.访问程序存储器指令(或称查表指令)(2条)

(1)以DPTR为基址寄存器MOVCA,@A+DPTR;A←((A)+(DPTR))(2)以PC为基址寄存器MOVCA,@A+PC ;PC←(PC)+1,A←((A)+(PC))

例4.4返回目录4.2数据传送类指令

4.交换指令(5条)

(1)字节交换指令(3条)XCHA,Rn ;(A)(Rn) XCHA,@Ri ;(A)((Ri)) XCHA,direct ;(A)(direct)(2)半字节交换指令(2条)XCHDA,@Ri ;(A)3~0((Ri))3~0 SWAPA ;(A)7~4(A)3~0返回目录4.2数据传送类指令

5.堆栈操作指令(2条)

PUSHdirect ;SP←(SP)+1,(SP)←(direct)POPdirect ;direct←((SP)),SP←(SP)-1

例4.5返回目录4.3算术运算类指令(24条)

1.加法指令

(2)带进位位加法指令(4条)ADDCA,Rn ;A←(A)+(Rn)+(CY)ADDCA,direct ;A←(A)+(direct)+(CY)ADDCA,@Ri ;A←(A)+((Ri))+(CY)ADDCA,#data ;A←(A)+data+(CY)

例4.6返回目录4.3算术运算类指令(24条)

2.减法指令(4条)

SUBBA,Rn ;A←(A)-(Rn)-(CY)SUBBA,direct ;A←(A)-(direct)-(CY)SUBBA,@Ri;A←(A)-((Ri))-(CY)SUBBA,#data ;A←(A)-data-(CY))

例4.7返回目录4.3算术运算类指令(24条)

3.乘法指令(1条)

MULAB ;BA←(A)×(B)

4.除法指令(1条)

DIVAB;A←(A)÷(B)的商,B←(A)÷(B)的余数

5.BCD加法调整指令(1条)DAA;十进制修正指令

例4.8

例4.9返回目录4.3算术运算类指令(24条)

6.加1指令(5条)INCA ;A←(A)+1 NCRn;Rn←(Rn)+1 INCdirect ;direct←(direct)+1 INC@Ri ;(Ri)←((Ri))+1 INCDPTR ;DPTR←(DPTR)+1返回目录4.3算术运算类指令(24条)

7.减1指令

DECA ;A←(A)-1 DECRn ;Rn←(Rn)-1 DECdirect ;direct←(direct)-1 DEC@Ri ;(Ri)←((Ri))-1返回目录4.4逻辑运算与循环移位类指令(24条)

1.逻辑与指令(6条)

ANLA,Rn ;A←(A)∧(Rn) ANLA,direct ;A←(A)∧(direct)ANLA,@Ri ;A←(A)∧((Ri))

ANLA,#data ;A←(A)∧dataANLdirect,A ;direct←(A)∧(direct)ANLdirect,#data ;direct←(direct)∧data返回目录4.4逻辑运算与循环移位类指令(24条)

2.逻辑或指令(6条)

ORLA,Rn ;A←(A)∨(Rn) ORLA,direct ;A←(A)∨(direct)

ORLA,@Ri;A←(A)∨((Ri)) ORLA,#data ;A←(A)∨data ORLdirect,A ;direct←(A)∨(direct) ORLdirect,#data ;direct←(direct)∨data

例4.10返回目录4.4逻辑运算与循环移位类指令(24条)

3.逻辑异或指令(6条)

XRLA,Rn ;A←(A)⊕(Rn) XRLA,direct ;A←(A)⊕(direct)

XRLA,@Ri ;A←(A)⊕((Ri)) XRLA,#data ;A←(A)⊕data XRLdirect,A ;direct←(A)⊕(direct) XRLdirect,#data ;direct←(direct)⊕data

例4.11

例4.12返回目录4.4逻辑运算与循环移位类指令(24条)

4.累加器A清零指令(1条)CLRA;A←05.累加器A取反指令(1条)CPLA;A←/(A)返回目录4.4逻辑运算与循环移位类指令(24条)

6.循环移位指令(4条)RLA ;累加器A的内容循环左移一位RRA ;累加器A的内容循环右移一位RLCA ;累加器A的内容连同进位位循环左移一位RRCA ;累加器A的内容连同进位位循环右移一位返回目录4.5控制转移类指令(17条)

1.无条件转移类指令(5条)

LJMPaddr16;PC←addr15~0AJMPaddr11;PC←(PC)+2,(PC10~0)←addr10~0,;PC15~11保持不变

SJMPrel;(PC)←(PC)+2,(PC)←(PC)+relJMP@A+DPTR;PC←(A)+(DPTR)NOP ;PC←(PC)+1

例4.13返回目录4.5控制转移类指令(17条)

1.条件转移指令

(1)判零转移指令(2条)JZrel ;若(A)=0,则PC←(PC)+2,PC←(PC)+rel

;若(A)≠0,则PC←(PC)+2JNZrel ;若(A)≠0,则PC←(PC)+2+rel

;若(A)=0,则PC←(PC)+2,PC←(PC)+rel

例4.14返回目录4.5控制转移类指令(17条)

2.条件转移指令(2)比较转移指令(4条)

CJNEA,#data,rel CJNEA,direct,rel CJNERn,#data,rel CJNE@Ri,#data,rel

例4.15返回目录4.5控制转移类指令(17条)

2.条件转移指令(3)减1非零转移指令(2条)

DJNZRn,rel ;PC←(PC)+2,Rn←(Rn)-1; ;若(Rn)≠0,PC←(PC)+rel; ;若(Rn)=0,则按顺序往下执行

DJNZdirect,rel ;PC←(PC)+3,direct←(direct)-1; ;若(direct)≠0,PC←(PC)+rel; ;若(direct)=0,则按顺序往下执行

例4.16返回目录4.5控制转移类指令(17条)

3.子程序调用及返回指令

(1)子程序调用指令(2条)

LCALLaddr16 ;PC←(PC)+3, ;SP←(SP)+1,(SP)←(PCL), ;SP←(SP)+1,(SP)←(PCH), ;PC←addr16 ACALLaddr11 ;PC←(PC)+2,;SP←(SP)+1,(SP)←(PCL), ;SP←(SP)+1,(SP)←(PCH), ;PC10~0←addr11

例4.17返回目录4.5控制转移类指令(17条)

3.子程序调用及返回指令(2)返回指令(2条)

RET ;PC15~8←((SP)),SP←(SP)-1,;PC7~0←((SP)),SP←(SP)-1 RETI ;PC15~8←((SP)),SP←(SP)-1, ;PC7~0←((SP)),SP←(SP)-1返回目录4.6位操作类指令(17条)

1.位数据传送指令(2条)

MOVC,bi

温馨提示

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

最新文档

评论

0/150

提交评论