第4章-STC11F单片机指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8051 单片机指令系统
MCS-51 指令系统共有 111 条指令。按字节数分类,单字节
指令有 49条,双字节指令有 45 条,三字节指令有 17 条;按指令
周期分类,单周期指令有 64 条,双周期指令有 45 条,四周期指 令有2条。按所执行的操作可分下列五大类: (1)数据传送类指令(29条) (2)算术运算类指令(24条) (3)逻辑运算类指令(24条) (4)控制转移类指令(22条) (5)布尔操作(位)类指令(12条)
Direct 直接寻址
@Ri间址
Rn寄存器
data立即数
PUSH direct ;SP←SP+1,(SP)←(direct) POP direct ;direct←(SP),SP← SP –1
4.2 数据传送类指令
例如:设( 30H ) =x 和( 40H ) =y ,利用堆栈交换 30H 和 40H单 元中内容可执行如下几条指令: MOV SP,#70H ;令栈底地址为70H PUSH 30H ;SP←SP+1=71H,71H←X PUSH 40H ;SP←SP+1=72H,72H←y POP 30H ;30H←(72H)=y,SP←SP-1=71H POP 40H ;40H←(71H)=x,SP←SP-1=70H 注:压入和弹出堆栈操作时,堆栈指针和堆栈内容变化过程 片内RAM 片内RAM 如下图所示。
4.1 指令格式和寻址方式
◆例如:指令 JZ 08H 和 JZ 0F4H 表示累加器A为零条件满足后, 从源地址(2050H)分别向下、向上转移10个单元。其相对寻址示 意如下图(a)、(b)所示。这两条指令均为双字节指令。
PC值 ROM/EPROM

PC值 ROM/EPROM
…Leabharlann 2050H 2051H 2052H 205AH
4.2 数据传送类指令
(3)以直接地址为目的操作数(5条)
MOV direct,A MOV direct,Rn
;direct←A ;direct ←Rn
累加器A
MOV direct1, direct2 ;direct← (direct) MOV direct, @Ri ;direct←((Ri)) MOV direct, #data ;direct←data (4) 16位数据传送指令(1条) MOV DPTP, #data16;建立数据指针 (5)栈操作类指令(2条)
◆注:该指令的功能是给程序状态字 PSW中的RS0置1。该指令
为双字节指令,指令的第二字节直接给出位地址D3H(PSW.3的 位地址)。
4.1 指令格式和寻址方式
7种寻址方式的操作数使用空间如下表:
序号 1 2 3 4 5 6 7 寻址方式 寄存器寻址 立即寻址 寄存器间接寻址 直接寻址 变址寻址 相对寻址 位寻址 使用空间 R0~R7,A,B,Cy,DPTR 寄存器 程序存储器 内部RAM的00H~FFH,1024B的XRAM外部RAM 内部RAM的00H~7FH,SFR,程序存储器 程序存储器 程序存储器 内部RAM中20H~2FH的128位,SFR中的位
第4章 STC11FXX单片机指令系统
4.1 指令格式和寻址方式 4.2 数据传送类指令 (29) 4.3 算术运算类指令 (24) 4.4 逻辑运算与逻辑移位类指令(24) 4.5 控制转移类指令 (17)
4.6 位操作类指令 (17)
教学重点
◆难点:控制转移类指令
◆重点:7种寻址方式;
111条指令的分类、格式、功能等;
4.1 指令格式和寻址方式
7)direct 表示直接寻址的地址,即内部数据存储器RAM 单元的8 位
地址(0~127 或0~255),或特殊功能寄存器SFR 的地址。
8)bit 位地址,指部分内部数据存储器RAM 和特殊功能寄存器SFR 中的可直接寻址的位地址。 9)@ 间接寻址寄存器,如@Ri,@DPTR,表示寄存器间接寻址。 10)(X) 表示X单元中的内容。但对于寄存器寻址的内容则直接采用 寄存器名字,如A←R1。 11)((X)) 表示以X单元中的内容为地址进行间接寻址。
以 DPTR 简址的与 A 的数据传送,可寻址范围达 64KB 。其中,片
4.2 数据传送类指令
3. 访问程序Flash指令(查表)(2条)
MOVC A,@A+DPTR ;A← ((A+DPTR)) MOVC A,@A+PC ;A←((A+PC))
第一条以DPTR作为基址寄存器,查表时用来存放表的起始地址。外 部ROM的64K字节范围内的任何一个子域。 第二条以“当前”PC作为基址寄存器,256B范围。
60H 08H
¼ ¼
2046H rel 当前PC值 +=205AH 2050H 2051H 2052H
¼
60H F4H
¼
rel 当前PC值
+=2046H
4.1 指令格式和寻址方式
7)位寻址方式
指令中直接给出位地址 。 ◆寻址范围: ①内部数据存储器RAM中的128位
②特殊寄存器SFR中的93位
◆说明:位操作指令可对地址空间的每一位进行传送及逻辑操作。 ◆例如: SETB PSW.3 ;PSW.3←1
¼ ¼
SP
70H 71H 72H
栈底
SP
70H 71H 72H
栈底
x y
¼
x y
¼
4.2 数据传送类指令
2. A与片内XRAM 及外扩展RAM的传送指令(4条)
MOVX MOVX MOVX MOVX A, @Ri @Ri, A A, @DPTR @DPTR, A ; ((Ri))→A ;A→(Ri) ; ((DPTR))→A ;A→(DPTR) 也是输入输出指令!!
常用伪指令与使用;
4.1 指令格式和寻址方式
1. 机器码指令格式
(1)单字节指令 仅操作码 操作码+寄存器 (2)双字节指令 (3)三字节指令 1字节 1字节 2字节 3字节 如 NOP,DEC A 如INC R1;即 00001 001 操作码 + 操作数, 如MOV A,#20H 操作码 + 目的地址 + 源地址或数据 如 MOV 45H, 30H; MOV 45H,#24
ROM /EPROM DPTR ◆例如:MOVC A ,@A+DPTR ;A←((A+DPTR)) ◆注:访问程序存储器中的常数表, A(执行前) 也俗称为查表指令。 还有指令MOVC A ,@A+PC A(执行后) 1234H +=12D8H A4H 3FH
3FH
4.1 指令格式和寻址方式
6)相对寻址
例如:设有一输入设备端口地址为0A56DH,端口中的数据为98H, 欲将98H分别传送到片外数据存储器的2300H单元和工作寄存器R0 作用域: XRAM或片外RAM。 中,则可编写程序如下:
以Ri为间接地址与A的数据传送,可寻址256个单元页内地址。
MOV DPTR,#0A56DH 8位的地址和数据均由 P0口分时输入/输出,高8位页面地址需要用 MOVX A,@DPTR 指令 MOV P2,#data指定。 ;输入外设数据 MOV DPTR,#2300H MOVX @DPTR,A ;向外设输出数据 外低 8位地址( DPL 8位地址由 P2口输出。 MOV R0, A )由P0口分时使用,高 ;数据暂存 R0
2. 汇编指令格式
标号:操作码助记符 [(目的操作数), (源操作数)] ;注释 例如:SS: MOV A,#4FH ;立即数4FH送A
1)操作码:
2)操作数:
3)注释:
4)标号:类似X86
4.1 指令格式和寻址方式
3. 指令系统的常用标号
1)Ri和Rn R表示当前工作寄存器区中的工作寄存器,其中 i 表示0或1,即 R0和R1,而n则表示0~7,即R0~R7。 2)#data 8位不带符号立即数, “#”为立即数标识符。 3)#data l6 16位的立即数。 4 ) rel ( relative )相对地址。以补码形式表示的地址偏移量,范围为 −128~+127,主要用于无条件相对短转移SJMP和所有条件转移指令。
4.2 数据传送类指令
数据传送类: A、Rn、内部RAM、SFR、XRAM、外RAM。
绝大部分不影响任何标志位。
助记符有:MOV、PUSH、POP、MOVX、MOVC、XCH、XCHD、SWAP
根据数据传送类指令的特点,可分为5组。 1. 片内基本RAM区指令 (1)以A为目的操作数(4条) (2)以Rn、@Ri为目的的操作数(6条) MOV MOV MOV MOV A,Rn A,direct A,@Ri A,#data ;A←Rn ;A←(direct) ;A←((Ri)) ;A←data MOV Rn,A ;Rn ←A MOV Rn,direct ;Rn ←(direct) MOV Rn,#data ;Rn←data MOV @Ri,A ;(Ri)←A MOV @Ri,direct ;(Ri)←(direct) MOV @Ri,#data ;(Ri)← data
4.1 指令格式和寻址方式
2)寄存器寻址
操作数用符号名称表示寄存器。 ◆寻址范围:四个寄存器组的通用寄存器R0~R7,A,B,DPTR 例如:MOV A,R0 ;A←R0
3)直接寻址
指令中直接给出操作数所在的存储地址。 ◆寻址范围: ①内部RAM低128个单元(00H~7FH) ②SFR地址空间(只能用直接寻址方式) ◆例如:MOV A,40H ;A←(40H) MOV B, FSW ◆说明:访问 SFR的直接寻址可以使用该特殊功能寄存器的名字或直接地 址来书写均可,如:MOV A,80H 和MOV A,P0 均表示源操作数 是特殊功能寄存器P0。
5)addr16 (address)16 位目的地址。可在全部程序存储器的64KB空间
范围内,主要用于无条件长转移指令 LJMP和子程序长调用指令 LCALL 中。 6)addr11 11位目的地址。应与下条指令处于相同的2KB 程序存储器地址 和子程序绝对调用指令 空间范围内,主要用于绝对转移指令AJMP ACALL 指令中。
4.1 指令格式和寻址方式
4)寄存器间接寻址
在指令中给出的寄存器内容是操作数的地址,从该地址中取出的数 才是操作数。表示形式:应在寄存器名称前面加@。 ◆寻址范围: ①用工作寄存器R0、R1:寻址片内数据存储器RAM(00~FFH)的256个单元,但它不能访问
特殊功能寄存器SFR;
②用数据指针DPTR:寻址访问外部数据存储器或内部1k的 XRAM; ③用堆栈指针SP: 对堆栈进行操作。 寄存器R1 80H ◆例如:MOV A,@R1 ;A←((R1)) ,对256 RAM
MOVX A, @DPTR ; 对XRAM 切忌!R0、R1
80H 累加器A 2FH 2FH
4.1 指令格式和寻址方式
5)变址寻址
以DPTR或PC作基址寄存器,累加器A作变址寄存器,形成16位程序存
储器D的操作数地址。 实际是基址寄存器加变址寄存器间接寻址的简称 。
◆寻址范围:只能对程序存储器进行寻址
以PC 的当前值为基准,加上指令中给出的相对偏移量(rel )形 成新的有效转移地址。
◆寻址范围:用于访问程序存储器,常出现在条件转移指令中。
◆注意: ①当前PC值是指相对转移指令所在地址加上转移指令字节数。
②偏移量rel 是有符号的单字节数,以补码表示,其相对值的范围
是 -128 ~+127 (即 00H~FFH ),负数表示从当前地址向上转移,正 数表示从当前地址向下转移。 目的地址=转移指令当前地址+ rel
12)/和→、← 其中“/” 表示对该位操作数取反,但不影响该位的原
值;“→”表示指令操作流程,将内容送入箭头所指一方的寄存 器或单元中去。
4.1 指令格式和寻址方式
4. 操作数的寻址方式(7种)
立即寻址、寄存器寻址、直接寻址、寄存器间址、变址寻址、相对 寻址和位寻址。
1)立即寻址
◆指令格式 ◆立即数 操作码 目的数,#data 在指令中直接给出的目的操作数为常数,称为立即数。用前缀“#”表示。 可以是8位或16位,可用二进制、十进制或十六进制数形式之一 表示,只能用作源操作数,不能用作目的操作数。 ◆用途:主要用来给寄存器或存储单元赋初值。 ◆例如:MOV A, #0FH ;A←立即数0FH 该指令的功能是将立即数0FH 传送到累加器A 中,对应的机器码为74H, 立即数0FH 紧跟在操作码之后,成为指令代码的一部分
相关文档
最新文档