51单片机 寻址方式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、寄存器寻址
Register Addressing
隐含寻址
寄存器寻址: 当前选定的寄存器内容就是实际操作数 寻址空间: R0~R7,由RS0、RS1确定寄存器区/4 A、B、CY(位),DPTR、AB 指令的三种形式: 操作码 操作码
操作码 例1: MOV A,R3
例2: ADD A,R3
立即数 ;A ;A (R3)
MCS-51单片机指令系统
4.1 指令概述
4.2 寻址方式
4.3 MCS-51系列单片机的指令系统
一、指令概述
1 指令的定义
2 指令的组成
3 指令的表示方法
1 指令的定义
指令:是人们向计算机发的一种命令;一条指令对应着一 种操作。
指令系统:CPU所能执行的全部指令的集合。
CPU能够执行多少条指令是由CPU的内部结构决定的。 不同的CPU,其指令系统不同。
2 MCS51单片机的寻址方式
每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址
2、直接寻址
3 、寄存器间址 4、 寄存器寻址
5 、变址寻址 (基址寄存器+变址寄存器间接寻址)
6、相对寻址 7 、位寻址
1、立即寻址
Immediate Addressing
二、 寻址方式
寻址方式的定义
MCS51单片机的寻址方式
1 寻址方式的定义
指令由操作码和操作数组成。
操作码决定 CPU执行何中 操作。 操作数就是操作对 象。无论何种指令 其操作的对象都是 数据。
指出操作数所在地方的方式就是寻址方式。
数据在指令中有2 种表示方法: 1、数本身 2、数所在的地方 (REG,MEM中)。
寻址空间: 片内RAM的20H~2FH字节地址
共221位
位地址:00H~7FH
共128位
SFR中12个能被8整除的字节地址 共93位
指令中直接给出了操作数所在的位地址。 例: CLR P1.0 ;(P1.0) ← 0 SETB ACC.7 ;(ACC.7)← 1 CPL C ;( C )← NOT( C ) 注意: 1)位地址里的数据只可能是一个 0 或 1 2)有的位地址十分明确,如 P1.0, ACC.7等, 有的位地址则“不太明确”,如: [MOV A,17H ; (A)←(17H),17H是字节地址] MOV ACC.0,17H ;(ACC.0)←(17H),这里ACC.0 是位地址所以该指令中的17H是22H单元的第7位
××
A
× 0FH 操作码 ×
PC PC
DPTR 2400H
240FH
“读”
ALU
PSEN MOVC A,@A+DPTR
6、相对寻址
寻址指令 执行地址 目标地址
Relative Addressing
相对寻址 以当前PC值为基准地址,加上指令的 偏移量“rel”,结果为目标地址。rel为 有符号补码数,范围:-128~+127
• 片内RAM中有128个位可 按位寻址的位,位地址: 00H—7FH分布在: 20H—2FH单元; • 另外,在SFR中还有92 个位可按位寻址
FFH
52子系列才有 的RAM区 80H 7FH
D7 D6 D5 D4 D3 D2 D1 D0
2FH Fra Baidu bibliotekF 7E 7D 7C 7B 7A 79 78
位地址
操作数紧跟操作码后面
立即寻址: 指令的操作数存放在程序存储器中 寻址空间: 指令形式: 程序存储器 操作码
立即数
OP #data
例1: MOV A,# 30H
PC
;A
#30H
PC PC
ROM 74H 30H
××
操作码 A 30H 立即数
例2: MOV DPTR,# 8000H
PC
PC PC PC
相同 相同
在本单片机中访问特殊功能寄存器SFR只能采用直 接寻址方式的原因:SFR分布在80H~0FFH范围内, 而52系列单片机有256字节的片内RAM,其中的 80H~0FFH的RAM与SFR所占地址重叠。 于是规定:这一范围内的RAM只能用寄存器间接寻 址方式,SFR只能用直接寻址方式。从而解决了地 址冲突的问题。例如: MOV A, 90H 等效于 MOV A, P1 属直接寻址 MOV A, @R0 ;[事先已知 (R0) = #90H ] 执行的操作:A ←(90H) 属寄存器间接寻址, 随意写的指令如:MOV A, 85H 则是非法的!
PC
××
;A
(30H) A
××
操作码内RAM 30H × × 操作数地址
例2:ANL 30H,#30H
PC PC PC PC
;30H
操作码 直接地址 立即数
ROM 53H 30H 30H
××
(30H)∧ #30H 内RAM 30H × ×
“与”
ALU
“结果”
说明
在本单片机中规定:访问特殊功能寄存器SFR 只能采用直接寻址方式。例如: MOV MOV MOV MOV MOV A, SP A, 81H P1, #5AH 90H,#5AH B, 30H ; ; ; ; ; (A) ←(SP) (A) ←(SP) (P1)←(#5AH) (P1)←(#5AH) (B) ←(30H)
(PC) = 2 0 0 2 H Rel = 0 0 2 3 H ) D= 2025H
例:DJNZ R7,rel
PC 2104H
指 令
;(R7)– 1不为“0”则转
ROM
PC PC PC
2110H DFH 2111H F2H 2112H 下一条指令
rel=F2H
操作码 偏移量
ALU
(PC)=2112H
ROM 90H 80H 00H
;DPTR #8000H DPH DPL 80H 00H 操作码 立即数的高8位
立即数的低8位
注意:符号“#”表明其后跟的是立即数, 立即数——就是数字量本身。
2、直接寻址
直接寻址 寻址空间:
CPU内部
Direct Addressing
在指令中直接给出操作数的真实地址
Rn:当前工作寄存器R0~R7中的一个。 Ri:当前工作寄存器R0~R1中的一个。 @:间接寻址寄存器或基址寄存器的前缀符号,如@Ri,@DPTR。 Direct:8位地址,可以是片内RAM单元地址(0~127/255)或特殊 功能寄存器(SFR)地址。对SFR而言,既可使用它的物理地址,也 可直接使用它的名字。 #date: 8位常数。 #date16:16位常数。 addr16:16位目的地址。 addr11: 11位目的地址。 rel:8位带符号地址偏移量,取值范围为-128~+127。 Bit:内部RAM和SFR中的具有位寻址功能的位地址。SFR中的位地址 可以直接出现在指令中,为了阅读方便,往往也可用SFR的名字和所 在的数位表示。如:表示PSW中奇偶校验位,可写成D0H,也可写成 PSW.0的形式出现在指令中。 $:当前指令所在地址。 ←:箭头右边的内容送到箭头左边所在地址。 (x): x中的内容。
小结: 寻址方式与相应的寻址空间
方括符[ ]表示可选项
标号是该指令的符号地址,可根据需要设置。某个语句一旦 赋予某个标号,则在其它语句的操作数中就可以引用该标号, 以便控制程序的转移或寻址。标号与操作码之间用冒号“:” 分隔开。
操作码和操作数 是指令的核心部分,在二者之间 用若干空格分隔开。 操作码就是指令功能助记符,指令实体, 作用是命 令CPU作何种操作。 目的操作数和源操作数二者之间用“,”号隔开。 注释,以“;”开头
28H 47 46 45 44 43 42 41 40 27H 3F 3E 3D 3C 3B 3A 39 38
26H 37 36 35 34 33 32 31 30
25H 2F 2E 2D 2C 2B 2A 29 28 24H 27 26 25 24 23 22 21 20
总共 128 个可 按位 寻址 的位
2 指令的组成
指令由操作码和操作数组成。
操作码决定CPU 执行何种操作。
操作数是指参与运 算的数。操作数及 操作对象可以是一 个数,也可以是数所 在的地方。
REG或MEM
3 指令的表示方法
指令在机器中必须以机器码(二进制码)的形式出现。 人们在书写指令时,可以有二种方法: 1 、在计算机发展的初期,人们用机器码书写指令,这一阶段成为机器语言 阶段。 优点:用机器码书写的程序,计算机可以直接识别和运行。 缺点:书写时容易出错,不容易记忆。 2、为了克服机器语言的缺点,人们用符号书写指令: 指令由操作码和操作数组成。 用助记符(指令功能的英文缩写)书写。 操作数用规定的符号书写。
操作码后面紧跟一个实际操作数地址 内RAM的低128字节
00H~7FH
特殊功能寄存器SFR区 80H~FFH
直接寻址是访问 SFR 的唯一方法
指令的三种形式:
操作码 操作数地址
操作码
操作数地址 立即数
操作码
源操作数地址 目的操作数地址
例1: MOV A, 30H ROM PC 74H PC 30H
直接地址
操作数隐含 操作数显然
(A)+(R3)
4、寄存器间接寻址
Register Indirect Addressing
寄存器中的内容是一个地址,由该地 寄存器间接寻址: 址单元寻址到所需的操作数 寻址空间:
内部 RAM(@R0, @R1, SP)
外部 RAM(@R0, @R1,@DPTR)
指令的三种形式: 操作码 操作码 立即数 操作码 直接地址
在实际编程中,“rel” 通常用标号代替
例: JNZ rel
; 累加器A不等零则转移 设:rel=23H
ROM
PC PC 2000H 2001H
70H 23H . . . . . . .
PC
2002H 下一条指令
rel=23H
操作码 偏移量 ALU
(PC)=2002H
PC
2025H
修正后转移 目标地址D (PC) = 2025H
5、基址寄存器加变址寄存器间接寻址
基址寄存器加变址寄存器间接寻址: 以DPTR或PC作基址寄存器,A作变址寄存器
两者相加形成操作数地址。
寻址空间: 程序存储器(@A+DPTR、@A+PC) 指令形式:
操作码
例: MOVC A,@A+DPTR 设(A)= 0FH (DPTR)= 2400H ROM 93H ……
普通RAM区
30H 2FH 20H 1FH 00H
23H 1F 1E 1D 1C 1B 1A 19 18 22H 17 16 15 14 13 12 11 10 21H 0F 0E 0D 0C 0B 0A 09 08 20H 07 06 05 04 03 02 01 00
位寻址区 工作寄存器区
单元地址
例1: MOV @R0,A
PC PC
;累加器传送指令
A 操作码× × R0 30H 30H
ROM F6H
内RAM
××
例2: MOVX A,@DPTR
PC
PC
RD
ROM E0H
A ×× 操作码 DPTR 2000H
“读”
外RAM 2000H
××
注意:
1)“间接”表示某寄存器中的“内容”只是 一个“单元地址”,这个地址单元中存放 的数据才是要找的“操作数”。 2 )符号“ @” 表示“在 …” ,其含义与读音皆 同“at”。 3) 规定工作寄存器只有R0和R1才用于间接寻 址 4)规定用MOV指令访问片内RAM,用MOVX访问 外部RAM
这一阶段成为汇编语言阶段. 优点:容易理解和记忆。 缺点:计算机不能直接识别和运行。 汇编语言程序必须转换成机器语言程序,转换方法有二种: 手工转换: 查表 符号指令---机器码指令---Mem 汇编程序: 符号指令----机器----机器码指令---Mem
指令的格式
[标号:]操作码 [目的操作数][,源操作数][;注释]
.
2025H
. . .
. . .
修正后转移 目标地址 D (PC) = 2104H
(PC) = 2 1 1 2 H Rel = F F F 2 H ) D= 2104H
7、位寻址
Bit Addressing
以访问触发器的方式,对内部RAM、SFR 的位地址空间进行访问,称为位寻址。位地址
用于布尔指令。
寻址空间: 程序存储器
指令的三种形式: 一般为双字节或三字节指令 操作码
操作码 rel 直接地址 rel
操作码
立即数 rel
例: SJMP rel 操作:跳转到的目的地址 = 当前16位PC值 + rel
注意: 1)“当前PC值”指程序中下一条指令所在的首地址, 是一个16位数; 2 )符号“ rel” 表示“偏移量” , 是一个带符号的单 字 节数,范围是:-128—+127(80H—7FH),