MCS-51单片机指令系统及汇编程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
又如,MOVC A,@ A+PC
;A←(A+PC)
这条指令与上条指令不同的是,基址寄存器是PC。
如:MOVC A,@A+DPTR 设DPTR=2000H,A=E0H
程序存储区
2040H 2041H 指令代码 … 20E0H 93 … … ALU 47 20E0H A 47 E0
DPH DPL
20 00
以寄存器中内容为地址,以该地址中内容 为操作数的寻址方式。间接寻址的存储器空 间包括内部数据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所示。
@——间址寄存器或基址寄存器的前缀, 如@Ri,@DPTR。 / ——位操作数的前缀,表示对该位操作数 取反,如/bit。 ×——片内RAM的直接地址或寄存器。 (×)——由×寻址的单元中的内容。 ——箭头左边的内容被箭头右边的内 容所代替。
返回本节
2.7.2 寻址方式
1 立即寻址
2 直接寻址
3 寄存器寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址
返回本节
3
寄存器寻址 Register Addressing
以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 例如:CLR A ;A←0 INC DPTR ;DPTR←DPTR+1 ADD R5,# 20H ;R5←#20H+R5
返回本节
4
寄存器间接寻址 Register Indirect Addressing
6
相对寻址
Relative Addressing
以当前程序计数器PC的内容为基础,加 上指令给出的一字节补码数(偏移量)形 成新的PC值的寻址方式。 相对寻址用于修改PC值,主要用于实现程 序的分支转移。 例 如 , SJMP 08H ; PC←PC+2+08H 指令操作示意图如图2-19所示。
如:JC
则就相当于执行了
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单元中去。
2.7 MCS-51单片机指令系统
2.7.1 MCS-51指令系统的分类、格式及一般说 明
2.7.2 寻址方式
2.7.3 分类指令
MCS-51单片机指令系统有如下特点:
(1)指令执行时间快。 (2)指令短,约有一半的指令为单字节指令。 (3)用一条指令即可实现2个一字节的相乘 或相除。 (4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出 操作。
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
MOV MOV MOV MOV MOV 20H,R1 20H,30H 20H,@R1 0A0H,#34H P2,#34H
4 以间接地址为目的操作数的指令(3条) MOV @Ri,A ;A →(Ri) MOV @Ri,direct ;(direct) →(Ri) MOV @Ri,#data ; data →(Ri) 功能:把源操作数指定的内容送入以R0或R1为地址 指针的片内存储单元中。 例: MOV @R0,A MOV @R1,20H MOV @R0,#34H
返回本节
2
直接寻址 Direct Addressing
指令中直接给出操作数地址的寻址方式,能进 行直接寻址的存储空间有SFR寄存器和内部数据 RAM。
例如:MOV PSW,# 20H PSW←#20H ;
PSW为直接寻址寄存器的符号地址。 MOV A,30H ;A←30H内部RAM 单元中的 内容 30H为直接给出的内部RAM的地址。
返回本节
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种):
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 以寄存器Rn为目的操作数的指令 (3条)
MOV Rn,A MOV Rn,direct MOV Rn,#data
这组指令功能是把源操作数指定的内容送入当前工作寄存器, 源操作数不变。
3 以直接地址为目的操作数的指令(5条) MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,@Ri MOV direct,#data 这组指令功能是把源操作数指定的内容送入由直接 地址指出的片内存储单元。 例: MOV 20H,A
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——进位标志或进位位,或布尔处理机中的累 加器。
如: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 变址寻址示意图
返回本节
片内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 间接寻址示意图
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 位寻址
返回本节
5 变址寻址(基址+变址)
Base-Register-plus-Index-Register-Indirect Addressing
变址寻址只能对程序存储百度文库中数据进行操作。 由于程序存储器是只读的,因此变址寻址只有读操 作而无写操作,在指令符号上采用MOVC的形式 (如图2-18所示)。 例如:MOVC A,@ A+DPTR;A←(A+DPTR)
Bit Addressing
位寻址只能对有位地址的单元作位寻址操作。 位寻址其实是一种直接寻址方式,不过其地 址是位地址。 例如:SETB 10H ;将10H位置1 若22H单元中存放着数据40H,22H单元的D0位 的位地址为10H, 执行上述指令后(22H)=41H。 又如:MOV 32H,C ;32H←进位位C ORL C ,32H ;C←C∨32H
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。
在MCS-51指令中,一般指令主要由操作码、 操作数组成。 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。 例如,数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数 所在的地址。 (3)指定操作结果存放的地址。
返回本节
3 指令描述符号介绍
Rn——当前选中的寄存器区中的8个工作寄存器 R0~R7(n=0~7)。
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
寄存器 Rn
立即数 #data
寄存器 DPTR
图2-20 MCS-51单片机片内数据传送图
1 以累加器为目的操作数的指令(4条) MOV MOV MOV MOV
;Rn→A ;(direct)→A ;(Ri)→A ;data→A 将源操作数指定内容送到A中。
A,Rn A,direct A,@Ri A,#data