当前位置:文档之家› MCS-51单片机指令系统及汇编程序设计

MCS-51单片机指令系统及汇编程序设计


5 MOV
十六位数的传递指令(1条) DPTR,#data16
8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。
6
相对寻址
Relative Addressing
以当前程序计数器PC的内容为基础,加 上指令给出的一字节补码数(偏移量)形 成新的PC值的寻址方式。 相对寻址用于修改PC值,主要用于实现程 序的分支转移。 例 如 , SJMP 08H ; PC←PC+2+08H 指令操作示意图如图2-19所示。
如:JC
8 堆栈操作(2条) PUSH direct ;SPSP+1,(SP)(direct) POP direct ; (direct) (SP), SPSP-1 第一条为压入指令,就是将direct中的内容送入堆栈中, 第二条为弹出指令,就是将堆栈中的内容送回到direct中。 例: MOV SP,#10H MOV 40H,#50H PUSH 40H PUSH 30H
7 位寻址
返回本节首页
1
立即寻址 Immediate Addressing
指令中直接给出操作数的寻址方式。立即操作数用 前面加有#号的8位或16位数来表示。 例如:MOV A,# 60H ;A←#60H MOV DPTR,# 3400H ;DPTR←#3400H MOV 30H,# 40H ;30H单元←#40H 上述三条指令执行完后,累加器A中数据为立即数 据60H,DPTR寄存器中数据为3400H,30H单元中 数据为立即数40H。
2.7.1 MCS-51指令系统的分类、格式及一 般说明
1 指令分类 2 指令格式 3 指令描述符号介绍
返回本节首页
1 指令分类
按指令功能,MCS-51指令系统分为数据传 递与交换、算术运算、逻辑运算、程序转 移、布尔处理操作、CPU控制等6类。 布尔处理操作类指令又称位操作指令。
返回本节
2 指令格式
返回本节
2.7.3 分类指令
1 数据传送类指令 2 算术运算类指令
3 逻辑运算与循环类指令
4 程序转移类指令
5 调用子程序及返回指令
6 位操作指令
返回本节首页
§1
数据传送类指令(29条)
Data Transfer Instruction
MCS-51 助记符: 助记符: MOV、MOVX、MOVC XCH、XCHD、SWAP PUSH、POP 源操作数寻址方式(5种):
则就相当于执行了
MOV DPTR,#3512H。
6 累加器A与片外RAM之间的数据传递类指令(4条) MOVX MOVX MOVX MOVX A,@Ri @Ri,A A,@DPTR @DPTR,A
说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去。
Ri——当前选中的寄存器区中的2个工作寄存器 R0、R1(i=0,1)。 direct—8位的内部数据存储器单元中的地址。
#data——包含在指令中的8位常数。
#data16——包含在指令中的16位常数。 addr16——16位目的地址。 addr11——11位目的地址。
rel——8位带符号的偏移字节,简称偏移量。 DPTR——数据指针,可用作16位地址寄存器。 bit——内部RAM或专用寄存器中的直接寻址位。 A——累加器。 B——专用寄存器,用于乘法和除法指令中。 C——进位标志或进位位,或布尔处理机中的累 加器。
@——间址寄存器或基址寄存器的前缀, 如@Ri,@DPTR。 / ——位操作数的前缀,表示对该位操作数 取反,如/bit。 ×——片内RAM的直接地址或寄存器。 (×)——由×寻址的单元中的内容。 ——箭头左边的内容被箭头右边的内 容所代替。
返回本节
2.7.2 寻址方式
1 立即寻址
2 直接寻址
3 寄存器寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址
7
读程序存储பைடு நூலகம்指令(2条)
MOVC A,@A+DPTR MOVC A,@A+PC
本组指令是将ROM中的数送入A中。本组指令也被称为查表指令, 常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) 如果R0中的值为2, MOV DPTR,#100H MOV A,R0 则最终地址为 100H+2为102H, MOVC A,@A+DPTR . … 到102H单元中找到 的是4。 ORG 0100H DB 0,1,4,9,16,25
立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。
MOV XCHG PUSH、POP
目的操作数寻址方式(3种):
直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 标志位。
直接地址 direct
累加器 A
直接地址 direct
间接地址 @Ri
2.要读或写外部的RAM,当然也必须要知道RAM的地址, 在后两条指令中,地址是被直接放在DPTR中的。而前两条 指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提 供低8位地址。高8位地址由P2口来提供。(演示举例) 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后 再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H 单元中。 MOV DPTR,#0100H MOVX A,@DPTR MOV DPTR,#0200H MOVX @DPTR,A
Bit Addressing
位寻址只能对有位地址的单元作位寻址操作。 位寻址其实是一种直接寻址方式,不过其地 址是位地址。 例如:SETB 10H ;将10H位置1 若22H单元中存放着数据40H,22H单元的D0位 的位地址为10H, 执行上述指令后(22H)=41H。 又如:MOV 32H,C ;32H←进位位C ORL C ,32H ;C←C∨32H
以寄存器中内容为地址,以该地址中内容 为操作数的寻址方式。间接寻址的存储器空 间包括内部数据RAM和外部数据RAM。 能用于寄存器间接寻址的寄存器有R0, R1,DPTR,SP。其中R0、R1必须是工作 寄存器组中的寄存器。SP仅用于堆栈操作。
例如:MOV @R0,A ;内部RAM(R0)←A其 指令操作过程示意图如图2-15所示。 又如:MOVX A,@R1;A←外部RAM(P2R1) 其指令操作过程示意图如图2-16所示。 再 如 : MOVX @DPTR , A ; 外 部 RAM(DPTR)←A 其指令操作过程示意图如图2-17所示。
23
指令代码
程序存储区 1000H 1001H 1002H 40 23 30
当前PC

1024H 1025H

47 45
23H
1002H ALU 1025H
程序存储器
PC
2000H SJMP 08H 08H 200AH (2000H) 200AH
2000H+2
图2-19 相对寻址示意图
返回本节
7 位寻址
返回本节
2
直接寻址 Direct Addressing
指令中直接给出操作数地址的寻址方式,能进 行直接寻址的存储空间有SFR寄存器和内部数据 RAM。
例如:MOV PSW,# 20H PSW←#20H ;
PSW为直接寻址寄存器的符号地址。 MOV A,30H ;A←30H内部RAM 单元中的 内容 30H为直接给出的内部RAM的地址。
片内RAM
R0
30H
30H
34H
A
34H
图2-15 MOV @R0,A间接寻址示意
片 外 RAM
P2 34H DPTR 2000H R1 10H 3410H 45H 2000H
片 外 RAM
30H
A
45H
A
30H
图2-16 MOVX A,@R1 间接寻址示意图
图2-17 MOVX @DPTR,A 间接寻址示意图
2.7 MCS-51单片机指令系统
2.7.1 MCS-51指令系统的分类、格式及一般说 明
2.7.2 寻址方式
2.7.3 分类指令
MCS-51单片机指令系统有如下特点:
(1)指令执行时间快。 (2)指令短,约有一半的指令为单字节指令。 (3)用一条指令即可实现2个一字节的相乘 或相除。 (4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出 操作。
如:MOVC A,@A+PC 设A=E0H
程序存储区 2040H 2041H 83 … … 47 45 ALU 2121H 指令代码 A 45 E0
当前PC …
2120H 2121H
程序存储器
DPTR 2000H A
10H
2000H
2010H
64H
64H(10H)
图2-18 变址寻址示意图
返回本节
2 以寄存器Rn为目的操作数的指令 (3条)
MOV Rn,A MOV Rn,direct MOV Rn,#data
相关主题