单片机第三章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV P1,20H
③ 地址是寄存器R0
MOV P1,#20H
④ 地址是内存20H
错!
错!
错!
错!
寻址比较
MOV P1,R0 MOV P1,@R0 MOV P1,20H MOV P1,#20H
① 直接将20H这个数送P1口
② 地址在寄存器R0里面
③ 地址是寄存器R0
对! ④ 地址是内存20H
错!
寻址比较
对!
错!
MOV P1,R0 MOV P1,@R0 MOV P1,20H MOV P1,#20H
错!
① 直接将20H这个数送P1口 ② 地址在寄存器R0里 ③ 地址是寄存器R0 ④ 地址是内存20H
错!
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
内内部部RAMM
436AHH 65H
§3-1 汇编语言与寻址方式
一、汇编语言程序设计的意义 什么是程序? 完成某项特定任务的指令的集合。 计算机按程序一条一条地依次执行指令,从而完成指定任务。 要让计算机完成各项任务,就应设计各种程序。
程序设计语言: 机器语言: 用二进制代码表示指令和数据。 汇编语言: 用助记符表示指令操作功能,用标号表示操作对象。 高级语言: 独立于机器,面向过程,接近自然语言和数学表达式.
汇编语言程序的每一条语句都与计算机的某一条指令对应,所 以必需熟悉指令系统。 指令 = 操作码 + 操作数 操作码——表示了该指令所能执行的操作功能。 操作数——表示参加操作的数的本身或操作数所在的地址。
MCS-51指令格式:
[标号:] 操作码助记符 [第一操作数] [,第二操作数] [;注释]
指令概述 ——指令格式
解法I: MOV DPTR,#TAB MOVC A,@.A+DPTR ······
TAB:DB 30H DB 31H DB 32H,33H,34H,35H ······
解法II: MOVC A,@A+PC TAB:DB 30H,31H,32H,33H DB 34H,35H,36H,37H ······
111条指令,共分五大类: 数据传送类;(29条) 算术运算类;(24条) 逻辑运算类;(24条) 控制转移类;(17条)
位操作类。(17条)
指令中操作数的描述符号: Rn —— 工作寄存器R0 ~ R7 Ri —— 间接寻址寄存器R0、R1
Direct —— 直接地址,包括内部128B RAM单元地址、 26个SFR地址。
操作数
目的地
寄存器
34A6H
A
DPTR PC
基址寄存器 12H
变址寄存器 34H
MOVC A, @A+DPTR
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
PC
2056H
PC
2002H
目的地
···
··· 操作数
2P0C02H + X5X4H =2056H
SJMP 54H
SETB 3DH
28H 27H
21H 20H
0 0 10 0 0 0 0 0
···
···
二、指令系统
1、指令描述约定
符号
含义
Rn
表示当前选定寄存器组的工作寄存器R0~R7
Ri
表示作为间接寻址的地址指针R0~R1
#data 表示8位立即数,即00H~FFH
#data1 6
表示16位立即数,即0000H~FFFFH
寄存直接器给间出接地寻址址 变2址0H寻—址—址直接寻 相对寻址
位寻址
目的地
注:寻址是寻操作数操的作数“地
址”!
目的地
20H
内部RAM 或SFR区
XXH
MOV P1, 20H
立即数寻址
直接寻址 寄存器寻址 寄你存能器说间出接为什寻么址 变叫址寄寻存器址寻址吗? 相对寻址 位寻址
目的地
目的地
R0-R7 A B
MOV direct,A ; (direct)
(A)
MOV direct,Rn
MOV direct,direct
MOV direct,@Ri
MOV direct,#data
MOV @Ri,A
MOV @Ri, direct
MOV @Ri,#data
MOV DPTR,#data16 ;唯一的16位数据传送指令。
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
28H 27H 0 0 10 0 0 0 0 0
···
21H 20H
···
想一想: 如果想使27H单 元的第3位置1,
该怎么办呢?
例:SETB 3DH
位寻址地址表
单元地址 MSB
2FH
7F
7E
2EH
77
76
2DH
6F
6E
0D
0C
05
04
LSB
7B
7A
73
72
6B
6A
63
62
5B
5A
53
52
4B
4A
43
42
3B
3A
33
32
2B
2A
23
22
1B
1A
13
12
0B
0A
03
02
79
78
71
70
69
68
61
60
59
58
51
50
49
48
41
40
39 38
31
30
29
28
21
20
19
18
11
10
09
08
01
00
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
* 外部RAM数据传送 MOVX A,@Ri MOVX A, @DPTR MOVX @Ri, A MOVX @DPTR,A 执行过程中会使/WR、/RD有效。
例3、试编写一程序段,实现将外RAM 0FAH单元中的 内容传送到外RAM 04FFH单元中。
解: MOV DPTR,#04FFH MOV R0,#0FAH MOVX A,@R0 MOVX @DPTR, A
(SP)= 0BH
PUSH DPH 后,各单元中的内容。
(0AH)= 23H (0BH)= 01H
POP direct 指令执行中,机器也自动进行两步操作:
(1)(direct) ((SP))
(2)(SP) (SP)- 1
例2、设(SP)= 0BH,(0BH)= 01H,(0AH)= 23H
执行 POP DPH
指令按字节长度可以分为三种:
7
0
单字节指令: 操作码
例如: MOV A,R0
7
07
0
双字节指令: 操作码
数据或寻址方式 例如:MOV A,30H
7
07
07
0
三字节指令: 操作码
数据或寻址方式 数据或寻址方式
指令的格式:
例如:MOV DPTR,#2010H
标号: 操作码 操作数或操作数地址
;注释
二、MCS-51系列单片机的指令系统
2CH
67
66
2BH
5F
5E
2AH
57
56
29H
4F
4E
28H
47
46
27H 3F
3E
26H
37
36
25H
2F
2E
24H
27
26
23H
1F
1E
22H
17
16
21H
0F
0E
20H
07
06
位地址
7D
7C
75
74
6D
6C
65
64
5D
5C
55
54
4D
4C
45
44
3C
33D5
34
2D
2C
25
24
1D
1C
15
14
@Ri
2)低半字节交换指令(1条)
XCHD A , @Ri
3)累加器A中高4位和低4位交换(1条)
SWAP A
3、字节交换指令
XCH A,Rn
XCH A,direct 整字节交换
XCH A,@Ri
XCHD A,@Ri
SWAP A
半字节交换
不影响任何标志位。
三、 查表指令 与ROM之间的数据传送。 MOVC A,@A + DPTR
#data —— 8位常数 #data 16 —— 16位常数 addr 16 —— 16位目的地址 addr 11 —— 11位目的地址
rel —— 8位带符号的偏移地址 DPTR —— 16位外部数据指针寄存器
bit —— 可直接位寻址的位
A —— 累加器 B —— 寄存器B C —— 进、借位标志位,或位累加器 @ —— 间接寄存器或基址寄存器的前缀 / —— 指定位求反 (x)—— x中的内容 ((x))—— x中的地址中的内容 $ —— 当前指令存放的地址
MOV P2 ,#00H
2、栈操作指令
PUSH direct
POP direct
不影响任何标志位。
PUSH direct 指令执行中,机器自动进行两步操作:
(1) (SP)
(SP)+ 1
(2)((SP)) (direct)
例1、设(SP) = 09H,(DPTR)= 0123H,分析:
执行 PUSH DPL
DPTR
操作数
寄存器
XXH
MOV P1, A
你 子立能和即2说数号出箱寻1子号址分箱 别直对一接应部寻内分址存吗中? 哪
寄存器寻址
目的地
寄存器间接寻址 变址寻址 相对寻址
内部RAM
3AH 65H
位寻址
目的地
操作数
寄存器
3AH
MOV P1, @R0
寄
R0
存
Baidu Nhomakorabea
器
R1
间
接
DPTR 寻
址
寄
存
器
寻址比较
错!
第
Single Chip Microcomputer
本章内容
章
寻址方式
MCS
数据传送类指令
51
算术运算类指令
指 令
逻辑操作类指令 控制转移类指令 位操作指令
系
常用伪指令
统
内容提要:
§3-1 汇编语言与寻址方式 §3-2 数据传送类指令 §3-3 算术运算类指令 §3-4 逻辑运算类指令 §3-5 控制转移类指令 §3-6 位操作类指令 §3-7 汇编语言的汇编过程 §3-8 汇编语言的程序设计及应用
MOVC A, @A + PC 执行后会使/PSEN有效。 MOVC 含义是传送常数。 以DPTR 为基地址的指令,可在ROM 的64KB范围内查表; 而以PC为基地址的指令只能在(PC)+ 1为中心上、下256B范 围内查表。
例4、设(A)= 一个BCD码常数,试用查表法获得其相应的 ASCII码。
错!
MOV P1,R0 MOV P1,@R0 MOV P1,20H MOV P1,#20H
① 直接将20H这个数送P1口 ② 地址在寄存器R0里 ③ 地址是寄存器R0 ④ 地址是内存20H
对!
错!
MOV P1,R0
寻址比较
对!
错!
① 直接将20H这个数送P1口
MOV P1,@R0
② 地址在寄存器R0里面
三、寻址方式(找信方式)
我的信在他 那!找信去!
①
②
注:找信是寻找信的“地 址”!
你能说出第 二封信的
“地址”吗?
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
目的地
信
目的地
操作数 #X55XHH
MOV P1, #55H MOV A, #01H
立即数寻址 直接寻址 寄存器寻址
POP DPL
后,各单元中的内容。
(SP)= 09H
(DPH)= 01H
(DPL)= 23H
结论:1)PUSH 与 POP 操作过程刚好相反; 2)进、出栈规则: 先进后出,后进先出。应注意指令书写先后顺序; 3)可用于“保护现场,恢复现场”。
——交换指令(5条)
1)字节交换指令(3条)
XCH
direct A , Rn
addr16 表示16位地址,用于64K范围内寻址
addr11 表示11位地址,用于2K范围内寻址
direct
8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地 址
Rel
带符号的8位偏移量(-128~+127)
Bit
位寻址区的直接寻址位
(X) X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容
MOVX
A
A
@DPTR , @DPTR
@Ri
@Ri
回忆前述操作数描述符:A,direct,Rn,@Ri,#data, DPTR等。 经排列组合可写出下列指令: MOV A,Rn ;(A) (Rn)以下类似。
MOV A,direct MOV A,@Ri MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data
←
将 ← 后面的内容传送到前面去
§3-2 数据传送类指令
一、内部RAM数据传送类
1、一般数据传送指令
程序 存储器 ROM EPROM
MOVC
特殊功能 寄存器 SFR
片内 RAM 128字节
MOVX
MOV PUSH POP XCH XCHD
片外 数据 存储器 RAM
1.1 数据传送指令(29条) ——8位数据传送指令(15条)
上述指令不影响任何标志位,但PSW的P位除外。
上述指令不影响任何标志位,但PSW的P位除外。
注意:MOV Rn,Rn
MOV @Ri, @Ri
Х
MOV Rn, @Ri
Х
哇!好 容易出 错啊!
MOV #data, A
Х
等等指令是非法指令。 Х
源操作数及目的操作数不可同时出现工作寄存器! 立即数不可作为目的操作数!
MOV <目的操作数>,<源操作数>
MOV
A
A
Rn
Rn
direct1 , direct2
@Ri
@Ri
#data
目的地址
A
源地址
数据
20H
MOV A,#20H
1.1 数据传送指令(29条) ——16位数据传送指令(1条)
MOV DPTR,#data16
——外部数据传送指令(4条)
MOVX <目的操作数>,<源操作数>
PSW 程序状态标志
CY AC F0 OV RS1 RS0 — P
CY —— 进位/借位标志;位累加器C。 AC —— 辅助进/借位标志;用于十进制调整。 F0 —— 用户定义标志位;软件置位/清零。 OV —— 溢出标志; 硬件置位/清零。 P —— 奇偶标志;A中1的个数为奇数 P = 1;否则 P = 0。 RS1、RS0 ——寄存器区选择控制位。