51单片机寻址方式解析
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
立即数
A 01011010
3.2.2 寄存器寻址 在指令选定的某寄存器中存放或读取操作数,以完成指令规 定的操作,称为寄存器寻址。 例如:MOV A,R7指令中源操作数和目的操作数都是寄存
器寻址。该指令的功能是把工作寄存器R7中的内容传送到累加器A 中,如R7中的内容为30H,则执行该指令后A的内容也为30H。 指令:MOV A,R7 机器码:EFH ROM
机器码:E5H 3FH
PC
RO 11100101 M
00111111
操作码 直接地址
内部RAM 11111111
3FH
11111111
A
•直接寻址可用于访问片内、外数据存储器,也可用于访问程序存
储器。 •直接寻址可访问片内RAM的低128个单元(00H~7FH),同时也是用 于访问高128个单元的特殊功能寄存器SFR的唯一方法。 •由于52子系列的片内RAM有256个单元,其高128个单元与SFR的 地址是重叠的。为了避免混乱,单片机规定:直接寻址的指令不 能访问片内RAM的高128个单元(80H~FFH),若要访问这些单元只 能用寄存器间接寻址指令,而要访问SFR只能用直接寻址指令。 •访问SFR可在指令中直接使用该寄存器的名字来代替地址,如 MOV A,80H,可以写成MOV A,P0,因为P0口的地址为80H。
无操作数 指令格式:
单操作数
[标号:] 操作码助记符 [目的操作数][,源操作数] [;注释]
(1) Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取 0或1,表示R0或R1。n取0~7,表示R0~R7。
(2) #data:表示包含在指令中的8位立即数。
(3) #data16:表示包含在指令中的16位立即数。 (4) rel:以补码形式表示的8位相对偏移量,范围为128~127,主要用在相对寻址的指令中。
3.1 MCS-51单片机指令系统概述
3.1.1 指令、指令系统的概念
指令:能完成特定功能的命令。 指令描述的两种基本形式:机器语言和汇编语言 指令系统:计算机能够执行的全部操作所对应的指令集合。 编写程序实际上是从指令系统中挑选一个指令子集的过程。
指令的属性
指令一般有功能、时间和空间三种属性。
功能属性是指每条指令都对应一个特定的操作功能;
3.2.5 变址寻址 基址寄存器加变址寄存器间接寻址,简称变址寻址。 指令:MOVC A,@A+DPTR ROM 93H +
A执行前 A4H A执行后 3FH
12D8H
12D8H
机器码:93H
PC
DPTR 1234H
3FH
图3.2 变址寻址示意图
3.2.6 相对寻址
•访问程序存储器,出现在相对转移指令中。 •相对寻址是将程序计数器 PC中的当前值与指令第二字节所给出 的偏移量相加,其和为跳转指令的转移地址。 •偏移量范围为-128 一+127。 •例如 SJMP 20H ;机器码为80H 20H。 ROM 2100H 10000000 PC 2101H 00100000 PC+1 2102H PC+1 ALU
操作数直接出现在指令中,紧跟在操作码的后面,作为指令
的一部分与操作码一起存放在程序存储器中,可以立即得到并执 在一个数的前面冠以"#"符号作前缀,就表示该数为立即寻址。 RO M 01110100 操作码
01011010
行,不需要经过别的途径去寻找,故称为立即寻址。汇编指令中,
指令:MOV A,#5AH 机器码:74H 5AH PC
(10) / 和→符号:“/”表示对该位操作数取反,但不影响该
位的原值。“→”表示操作流程,将箭尾一方的内容送入箭头 所指另一方的单元中去。
3.2 寻 址 方 式
• 寻址方式:CPU寻找操作数或操作数地址的方法。
• 寻址方式越多,计算机指令功能越强,灵活性越大。
•MCS-51采用7种寻址方式:
3.2.1 立即寻址
PC
PS W
11101111
指定0~3工作区
R7 10101001 10101001 R7 A
RS RS 1 0
3.2.3 寄存器间接寻址 由指令指出某一寄存器的内容作为操作数地址的寻址方法, 称为寄存器间接寻址。这里需要强调的是:寄存器中的内容不是 操作数本身,而是操作数的地址,到该地址单元中才能得到操作
3.2.7 位寻址
位寻址是在位操作指令中直接给出位操作数的地址,可以 对片内RAM中的128位和特殊功能寄存器SFR中的93位进行寻 址。 例如指令MOV C,24H.0;机器码为A2H 20H,相当于 MOV C,20H。
2122H
PC
2122H
注意: (1) 当前PC值是指相对转移指令的存储地址加上该指令的 字节数。
例如:JZ rel 是一条累加器A为零就转移的双字节指令。若该指令的 存储地址为2050H,则执行该指令时的当前PC值即为2052H。即当前PC值是 对相对转移指令取指结束时的值。
(2) 偏移量rel是有符号的单字节数。以补码表示,其值的 范围是-128~+127(00H~FFH),负数表示从当前地址向前转移, 正数表示从当前地址向后转移。所以,相对转移指令满足条件 后,转移的地址(目的地址)为: 目的地址=当前PC值+rel = 指令存储地址+指令字节数+rel
数。寄存器起地址指针的作用。
指令:MOV A,@R1 机器码:E7H PC
RO 80H M 2FH R1 80H
指定0~3工作区
2000H E7H
PS W
RS RS 1 0
2FH
A
3.2.4 直接寻址 指令中直接给出操作数所在的存储器地址,以供取数或存
数的寻址方式称为直接寻址。
指令:MOV A,3FH
时间属性是指一条指令执行所用的时间,一般用机器 周期来表示; 空间属性是指一条指令在程序存储器中存储所占用的 字节数。
数据传送
位操作
算术运算
功能
程序转移
逻辑运算
空间
单字节指令
双字节指令
三字节指令
时间
单机器周期指令
双机器周期指令
4机器周期指令
操作码
计算机执行该指令将进行何种操作
指令
操作数 参加操作的数的本身或操作数所 在的地址 双操作数
(5) addr16和addr11:分别表示16位直接地址和11位直接地址。 (6) direct:表示直接寻址的地址。
(7) bit:表示可位寻址的直接位地址。
(8) (X):表示X单元中的内容。
百度文库
(9) ((X)):表示以X单元的内容为地址的存储器单元内容,
即(X)作地址,该地址单元的内容用((X))表示。