单片机原理与应用系统设计第03章 指令系统-02
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
3.2.3 寄存器间接寻址方式
1. 寄存器间接寻址时,指令中给出的寄存器为地 址指针。
2. 寻址范围:
⑴ 片内和片外RAM 256单元,用R0或R1间接寻址。
⑵ 片外RAM 65536单元,用DPTR间接寻址。
3. 例如: MOV A, @Ri
MOVX A, @Ri MOVX @DPTR, A
2019/9/22
2019/9/22
12
3.2.7 位寻址方式
1. 位寻址时,操作数是二进制数表示的地址,其位地址出 现在指令中。
2. 寻址范围:
⑴ 片内RAM中的位寻址区。字节地址为20H~2FH,位地址为 00H~7FH ,共16字节128-bit 。
⑵ 特殊功能寄存器的可寻址位 。
3. 例如,指令 CLR bit ; 地址为bit的位单元清0
2019/9/22
25
2. 半字节交换
XCHD A,@Ri SWAP A
例1:若(R0)=30H,(30H)=67H, (A)= 20H。
执行 XCHD A,@R0 后, (A)=27H,(30H)=60H。
例2:若(A)=30H,执行SWAP A后,(A) =03H。
2019/9/22
26
3.3.2 算术运算类指令
结果:(30H)=20H
2019/9/22
21
特殊传送指令
ROM查表
1. MOVC A,@A+DPTR 以DPTR与偏移量之和作为程序存储器地址,将 该地址单元的内容传送到A。指令执行后DPTR的 内容不变。
2. MOVC A,@A+PC 以PC的当前值与偏移量之和作为程序存储器地址, 将该地址单元的内容传送到A。指令执行后PC的内 容不变。
2019/9/22
39
逻辑与 源操作数与直接地址单元内容相与
ANL direct,
A #data
源操作数与累加器A的内容相与
ANL A,
Rn direct @Ri #data
例: 若(A)=C3H,(R0)=AAH,执行指令 ANL A, R0 之后,(A)=82H。
2019/9/22
40
累加器清“0”和取反
; 查表指令
⑶ JMP @A+DPTR
; 散转指令
2019/9/22
11
3.2.6 相对寻址方式
1. 相对寻址是以PC的相对值为基地址,加上指令 中所给定的偏移量,形成有效的转移地址。
目的地址 = 转移指令所在地址 +转移指令的字节数 +偏移量rel
2. 例如,指令 SJMP rel ; PC ← (PC)+2+rel
89S51指令系统具有较强的加、减、乘、 除四则运算功能,但只有8bits数据运算指令, 没有16bits数据运算指令。
共有24条算术运算类指令。
2019/9/22
27
1. 加法类指令
不带进位加
ADD A,
Rn direct @Ri #data
影响:PSW的Cy、AC、OV、P
注:D7、D6位只有一个有进位时,(OV)= 1。 例如,两个正数相加结果为负数或两个负数相加 结果为正数时属于错误结果,此时(OV)= 1。
2019/9/22
31
2. 减法类指令
不带借位减
SUBB A,
Rn direct @Ri #data
影响:PSW的Cy、AC、OV、P
注: D7、D6位只有一个有借位时,(OV)=1。 如要用此组指令完成不带借位减法,只需先清 “0”标志位Cy。
2019/9/22
32
减1指令
DEC
A Rn direct @Ri
除了奇偶标志位P外,数据传送类指令一般不影响程序状态 字PSW的其他标志位,当然,直接访问PSW的指令除外。
2019/9/22
15
一般传送指令
16位传送
将源操作数data16(通常是地址常数)送入 目的操作数DPTR中。
例如: MOV DPTR,#1234H
结果为: (DPH)=12H,(DPL)=34H。
ANL A,
Rn direct @Ri #data
例: 若(A)=C3H,(R0)=AAH,执行指令 ANL A, R0 之后,(A)=82H。
2019/9/22
37
逻辑或 源操作数与直接地址单元内容相或
ORL direct,
A #data
源操作数与累加器A的内容相或
ORL A,
Rn direct @Ri #data
2019/9/22
16
8位传送 传送关系
目的
A Rn direct @Ri
源操作数
A Rn direct @Ri #data
#data不能用作目的字节; 源字节与目的字节不相同(除direct外); 寄存器与寄存器、寄存器间址之间不相互传送。
2019/9/22
17
以A为目的
MOV A,
Rn direct @Ri #data
第3章 指令系统
《单片机原理与应用系统设计》 电子工业出版社 , 2009.7
欧伟明 何静 凌云 刘剑 等编著
2019/9/22
1
本章主要内容
MCS-51单片机指令概述 7种寻址方式 分类介绍89S51单片机的指令系统
2019/9/22
2
3.1 MCS-51单片机指令概述
指令格式 符号说明
2019/9/22
35
3.3.3 逻辑运算及移位类指令
逻辑运算:与、或、异或、清“0”和取反
对A循环移位
1. 方向:左、右 2. Cy:带、不带
A清“0”操作对P标志有影响。
共24条指令。
2019/9/22
36
逻辑与 源操作数与直接地址单元内容相与
ANL direct,
A #data
源操作数与累加器A的内容相与
例:若(R1)= 20H,(20H)= 55H 执行 MOV A,@R1
结果:(A)= 55H。
2019/9/22
18
以Rn 为目的
MOV Rn,
A direct #data
例:若(50H)= 40H 执行 MOV R6,50H
结果:(R6)= 40H。
2019/9/22
19
以direct 为目的
把A的内容清“0” ,结果仍在A中。 CLR A
把A的内容取反,结果仍在A中。 CPL A
例 若(A)=A5H,执行指令 CLR A 之 后,(A)=00H。
2019/9/22
41
累加器循环移位
A7 A7 Cy A7 Cy A7
2019/9/22
30
十进制调整指令 DA A
对A中刚进行的2个BCD码加法的结果调整。
注释:
1. 当A中低4位数出现了非BCD码或低4位产 生进位(AC=1),则在低4位加6。
2. 当A中高4位数出现了非BCD码或高4位产 生进位(Cy=1),则在高4位加6。
3. 调整后,Cy表示结果的百位值。
7
3.2.2 直接寻址方式
1. 直接寻址时,指令中的操作数部分直接给出了 操作数的地址。
2. 寻址范围只限于片内RAM :
⑴ 低128个存储单元,8-bit二进制数表示地址。 ⑵ 特殊功能寄存器,用直接地址或称号表示。
3. 例如,指令 MOV A, 30H ; A ← (30H)
2019/9/22
2019/9/22
34
4. 除法
DIV AB
AXB
被除数
除数
A
商
B
整数部分 余数部分
除数为0,商的A和B内容不确定,且(OV)=1 。 标志Cy总是被清0。
例: 若(A)=FBH(251),(B)=12H (18),执行指令 DIV AB 之后,(A)=0DH, (B)=11H,(OV)=0,(Cy)=0。
2019/9/22
3
3.1.1 指令格式
指令的基本格式 :
例如,工作寄存器向累加器传送数据指令
汇编语言指令为:MOV A, Rn ; A为目的操作数,Rn为源操作数
机器码指令为 :1110 1rrr
; rrr = 000~111,分别表示R0~ R7
2019/9/22
4
3.1.2 符号说明
2019/9/22
28
带进位加
Rn
ADDC A,
direct @Ri
#data
注释:
1. 源操作数与A的内容相加再与Cy相加,结果送 入目的操作数A中。
2. Cy是在该指令执行之前已存在的值。
2019/9/22
29
加1指令
A
Rn
INC
direct
@Ri
DPTR
源操作数的内容加 1 ,结果再送回原单元。这 些指令中仅 INC A 影响P标志。
在编写汇编语言源程序时,字母符号是不区 分大小写的。在本书中,汇编语言源程序一 般采用大写字母。
汇编语言源程序符号说明 请参见教材第 页。
2019/9/22
5
3.2 寻址方式
寻找操作数或指令的地址的方式称为寻址方式。
寄存器寻址方式 直接寻址方式 寄存器间接寻址方式 立即寻址方式 变址寻址方式 相对寻址方式 位寻址方式
2019/9/22
6
3.2.1 寄存器寻址方式
1. 寄存器寻址时,指令中的操作数为某一寄存器 的内容,指定了寄存器,也就指定了操作数。
2. 寄存器包括:
⑴ 工作寄存器R0~R7 ⑵ 部分特殊功能寄存器,A、AB寄存器对、DPTR等
3. 例如,指令 INC R0 ; R0 ← (R0)+1
2019/9/22
2019/9/22
13
3.3 89S51单片机的指令系统
共有111条指令,分为5大类:
1. 数据传送类指令(29条) 2. 算术运算类指令(24条) 3. 逻辑运算及移位类指令(24条) 4. 控制转移类指令(17条) 5. 位操作类指令(17条)
2019/9/22
14
3.3.1 数据传送类指令
例: 若(A)=C3H,(R0)=55H,执行指令ORL A, R0 之后,(A)=D7H。
2019/9/22
Baidu Nhomakorabea
38
逻辑异或 源操作数与直接地址单元内容相异或
XRL direct,
A #data
源操作数与累加器A的内容相异或
XRL A,
Rn direct @Ri #data
例 若(A)=C3H,(R0)=AAH,执行指令 XRL A, R0 之后,(A)=69H。
语句格式:
MOV <目的操作数>, <源操作数>
在传送指令中,有从右向左传送数据的约定,即指令的右边 操作数是源操作数,表达的是数据的来源,而左边的操作数是目 的操作数,表达的是传送数据的目的地址。
源操作数:累加器A、工作寄存器Rn、直接地址direct、间 址寄存器、立即数。
目的操作数:累加器A、工作寄存器Rn、直接地址direct、 间址寄存器。
MOV direct,
A Rn direct1 @Ri #data
例:若(R1)=50H,(50H)=18H 执行MOV 40H,@R1
结果:(40H)=18H。
2019/9/22
20
以@Ri为目的
MOV @Ri,
A direct #data
例:若(R1)=30H,(A)=20H 执行 MOV @R1,A
例:若(SP)=07H,(40H)=88H 执行 PUSH 40H
结果:(SP)=08H,(08H)=88H。
2019/9/22
24
数据交换
交换类指令, 传送是双向的
1. 字节交换
XCH A,
Rn direct @Ri
例:若(R0)=80H,(A)=20H。 执行 XCH A,R0
结果:(A)=80H,(R0)=20H。
9
3.2.4 立即寻址方式
1. 操作数直接包含在指令中,这种给定操作数的 方式称为立即寻址方式。
2. 寻址范围:
仅限于程序存储器空间。
3. 例如: ⑴ MOV A, #18H ;将立即数18H送到累加器A
⑵ MOV DPTR, #5678H
; DPH ← #56H,DPL ← #78H
2019/9/22
2019/9/22
22
读写片外RAM
1. 读片外RAM MOVX A,@DPTR MOVX A,@Ri
2. 写片外RAM MOVX @DPTR,A MOVX @Ri,A
2019/9/22
23
堆栈操作
1. 原则:向地址高端生长,后进先出 2. SP :指向栈顶(活动端),复位值07H 3. 操作
PUSH direct POP direct
源操作数的内容减 1 ,结果再送回原单元。这 些指令中仅 DEC A 影响P标志。
2019/9/22
33
3. 乘法
MUL AB
AXB
BA
被乘数
乘数
积
当乘积大于FFH时,溢出标志位(OV)=1。 标志Cy总是被清“0”。
例: 若(A)=50H,(B)=A0H,执行指令 MUL AB 之后,(A)=00H,(B)=32H,(OV) =1,(Cy)=0。
10
3.2.5 变址寻址方式
1. 变址寻址方式是以程序计数器PC或数据指针 DPTR作为基址寄存器,以累加器A作为变址寄
存器,它们两者内容之和为有效地址。
2. 寻址范围:
程序存储器空间。
3. 变址寻址方式的指令只有3条:
⑴ MOVC A, @A+DPTR ; 查表指令
⑵ MOVC A, @A+PC