单片机寻址方式
51单片机寻址方式
51单片机寻址方式在单片机的世界里,寻址方式就像是寻找宝藏的地图和指南。
对于51 单片机而言,掌握好寻址方式是深入理解其工作原理和进行有效编程的关键。
51 单片机的寻址方式主要包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址这七种。
首先来聊聊立即寻址。
在立即寻址中,操作数直接包含在指令中。
这就好比你已经知道了宝藏的确切位置,指令中给出的就是这个确切的“位置”。
比如“MOV A,50H”这条指令,其中“50H”就是立即数,单片机直接使用这个数进行操作,速度快,效率高。
直接寻址是另一种常见的方式。
它直接给出操作数所在的存储单元地址。
就像是告诉你宝藏在哪个房间,你直接去那个房间就能找到。
例如“MOV A,50H”,这里的“50H”表示的是内部数据存储器的地址,单片机通过这个地址去获取数据。
寄存器寻址则是通过指定寄存器来获取操作数。
寄存器就像是你的贴身口袋,数据就在里面,取用方便。
比如“MOV A,R0”,这里就是把寄存器 R0 中的内容送到累加器 A 中。
寄存器间接寻址稍微有点复杂。
它是通过寄存器中的内容作为地址,再去寻找操作数。
这有点像通过一个中间人告诉你宝藏的位置。
比如“MOV A,@R0”,先看 R0 中的值,把这个值当作地址,然后从这个地址中取出数据送到 A 中。
变址寻址则在访问程序存储器中的数据表格时非常有用。
它通过基址寄存器(DPTR 或 PC)与变址寄存器(A)的相加来得到操作数的地址。
可以想象成你从一个起点出发,根据特定的变化规则找到最终的目标。
相对寻址常用于跳转指令。
它是基于当前程序计数器(PC)的值加上一个相对偏移量来确定目标地址。
这就像你在一条路上,根据当前位置和一个相对距离来找到下一个要去的地方。
最后是位寻址。
在 51 单片机中,有一部分存储单元可以按位进行操作。
这就像是能够精确地找到宝藏箱子上的特定锁扣。
比如“SETB20H0”,就是把内部数据存储器 20H 单元的第 0 位设置为 1。
七种寻址方式及单片机执行过程
例
JC
03H ;若进位C=0,则程序顺序执行,即 不跳转,PC= PC+2 ;若进位C=1, 则以PC 中的当前内容为基地址, 加上偏移量03H 后所得到的结果为 该转移指令的目的地址 。
程序存储区
1000 1001
40 03 1002 PC
…
…
ALU 1005 C2
单片机的工作过程
例:
取指过程 执行过程
运算器 ①② 累加器A
MOV A,#09H
程序计数器
74H 09H
;把09H送到累加器A中
地址寄存器
外部地址总线AB
0002H PC= 0000H 0001H
内 部 数 据 总 线
0000H
存 储 器
(PC) (PC) (PC) 0002H 0001H 0 0 0 0 1 0 0 1 0000H 0 1 1 1 0 1 0 0
例
MOV
A, 3AH
程序存储区
;把3AH单元的内容送A。
500 501
E5 3A 3A
片内RAM区 10
ACC
10
MOV
A, 3AH执行示意图
3. 寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志“@” 访问内部RAM或外部数据存储器的低256个字节时,只 能采用R0或R1作为间址寄存器。例如: MOV A,@Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM中40H单元的内容送 到A。 寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对片外数据存储器的64K字节的间接寻址,例如: MOVX A,@DPTR
D7 D6 D5 D4 D3 D2 D1 D0 27H 0 0 1 0 0 0 0 0 38
单片机寻址方式ppt课件
指令一般有功能、时间和空间三种属性。 功能属性是指每条指令都对应一个特定的操作功能; 时间属性是指一条指令执行所用的时间,一般用机器 周期来表示; 空间属性是指一条指令在程序存储器中存储所占用的 字节数。
数据传送
位操作
功能
算术运算
程序转移
逻辑运算
空间
单字节指令
双字节指令
三字节指令
时间
目的地址=当前PC值+rel = 指令存储地址+指令字节数+rel
3.2.7 位寻址
位寻址是在位操作指令中直接给出位操作数的地址,可以 对片内RAM中的128位和特殊功能寄存器SFR中的93位进行寻 址。
例如指令MOV C,24H.0;机器码为A2H 20H,相当于 MOV C,20H。
3.2.5 变址寻址 基址寄存器加变址寄存器间接寻址,简称变址寻址。
指令:MOVC A,@A+DPTR
ROM 93H PC
机器码:93H
DPTR 1234H
12D8H 3FH
+ 12D8H
A执行前 A4H
A执行后 3FH
图3.2 变址寻址示意图
3.2.6 相对寻址
•访问程序存储器,出现在相对转移指令中。
数。寄存器起地址指针的作用。 RO
指令:MOV A,@R1 80H M2FH
机器码:E7H PC 2000H E7H
R1 80H
指定0~3工作区 2FH
A
PS
RS RS
W
10
3.2.4 直接寻址
指令中直接给出操作数所在的存储器地址,以供取数或存 数的寻址方式称为直接寻址。
指令:MOV A,3FH 机器码:E5H 3FH
单片机寻址方式
单片机寻址方式
指令给出参与运算的数据方式称为寻址方式。
换句话说,寻址方式就是寻找确定参与操作的数的真正地址。
扩展阅读:单片机寻址方式与指令系统
在MCS-51系列单片机的指令系统中寻址方式共有7种,
一、直接寻址:直接将地址内的值传递给寄存器。
寻址空间为内部RAM 和特殊功能寄存器。
二、间接寻址:单片机利用R0、R1、SP、DPTR作为指针寻得指针所指向的空间的数据。
指令中含有@符号。
寻址空间为内外部ROM、RAM的某一空间。
三、寄存器寻址:由PSW状态寄存器决定,共四组(各组八个寄存器R0-R7)某一组的寄存器进行数据的搬运和加减。
四、立即寻址:需要立即找到寄存器存储数据的时候,利用符号#.例如:MOV A,#3FH.将3FH值存入ACC中。
五、相对寻址:相对寻址是将程序计数器PC(当前值称为基地址)中的当前值和指令第二字节给出的数(偏移量)相加,作为转移指令的转移(目的)地址。
寻。
8051单片机寻址方式
8051单片机寻址方式8051单片机共有7种寻址方式。
寻址方式是指令中确定操作数的形式,用来确定操作数所处的存储空间。
1.立即寻址:在指令中直接给出操作数MOV A, #80H 8位操作数MOV A, #2000H 16位操作数2.直接寻址:指令中直接给出操作数地址(1)SFR,这一存储空间只能使用直接寻址MOV PSW, #50H(2)内部数据RAM,这一存储空间可以使用直接寻址和寄存器间接寻址MOV A, 30H3.寄存器寻址:以通用寄存器的内容作为操作数(通用寄存器包括A, B, DPTR, R0~R7)INC DPTR注意:A、B既是通用寄存器,也是SFR(直接寻址)4.寄存器间接寻址:以寄存器中的内容作为操作数的地址能够用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP区分内部数据RAM寻址和外部数据RAM寻址:外部数据RAM寻址指令上采用MOVX 对内部数据RAM寻址:使用8位的R0或者R1即可MOV @R0, A对外部数据RAM寻址:使用P2端口提供高8位地址,使用R0或者R1提供低8位地址;或者使用16位的DPTR提供地址MOVX A, @R1MOVX @DPTR, A5.变址寻址:以基址寄存器PC或者DPTR与变址寄存器A中的内容之和作为操作数的地址变址寻址只能对程序存储器中的数据进行寻址,由于程序存储器是只读的,因此变址寻址只有读操作,指令上采用MOVCMOVC A, @A+DPTRMOVC A, @A+PC6.相对寻址:用于修改PC的值,使得PC加上指令中给出的一字节的偏移量由于转移指令有两字节和三字节这两种形式,因此偏移量的范围分别为-126~+129和-125~+130SJMP 80H7.位寻址:以位地址中的内容为操作数SETB 20HMOV 32H, C总结一下各种寻址方式的使用场合:立即寻址:常数直接寻址:SFR和内部数据RAM寄存器寻址:寄存器区寄存器间接寻址:内部数据RAM和外部数据RAM变址寻址:程序存储器相对寻址:PC位寻址:位地址区。
[物理]单片机3第三章寻址方式
北京化工大学 信息科学与技术学院 郭 青
1
第三章
本章重点
寻址方式
80C51指令系统
指令格式
操作结果及对标志位影响
3.1
111条指令
概述
29 24 24 17
数据传送类指令 数学运算类指令
分类
逻辑运算类指令 控制转移类指令
位操作指令
17
单字节指令 按指令长度分类
双字节指令
三字节指令 12个振荡周期 64
COUNT:PUSH DPH; 保护DPTR内容
PUSH DPL;
MOV DPTR,#TABLE ;赋表首地址给DPTR
MOVC A, @A+DPTR
; POP DPL; 根据A中内容查表 恢复DPTR内容 返回主程序
POP DPH
RET;
ORG 1000H TABLE:DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81
19
3.3.1 数据传送类指令
按操作方式,分为三种: 数据传送 数据交换 栈操作
一、普通传送类指令 格式: MOV (目的操作数),(源操作数) 操作码助记符 操作: 将源操作数单元内容,传送到目的操作数 单元中,源操作数内容不变。不影响标志 位Cy,AC和OV。
操作数的组合关系
1、立即数的传送 MOV A, #data MOV Rn, #data (A) (Rn) #data #data
d:MOV direct,#data
将8位立即数送入由direct直接寻址的地 址单元中。 direct:00H~FFH,8位二进制地址码
寻址内部RAM(00H~7FH)及SFR
什么是单片机寻址方式?寻址方式有哪些?
什么是单片机寻址方式?寻址方式有哪些?
寻找操作数地址的方式称为寻址方式。
1. 寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器
R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。
例如,指令MOV R1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。
如果程序状态寄存器PSW的RS1RS0=01(选中第二组工作寄存器,对应地址为08H~0FH),设累加器A的内容为20H,则执行MOV R1,A指令后,内部RAM 09H单元的值就变为20H。
2. 直接寻址
直接寻址是指把存放操作数的内存单元的地址直接写在指令中。
在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。
例如,指令MOV A,3AH执行的操作是将内部RAM 中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻址。
单片机的几种寻址方式
单片机的几种寻址方式
寻址就是寻找指令中操作数或操作数所在的地址。
所谓寻址方式,就是如何找到存放操作数的地址,把操作数提取出来的方法。
通常指源操作数的寻址方式。
MCS-51 系列单片机寻址方式共有七种:寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。
1、寄存器寻址
寄存器寻址是指操作数存放在某一寄存器中,指令中给出寄存器名,就能得到操作数。
寄存器可以使用寄存器组R0~R7 中某一个或其它寄存器(A,B,DPTR 等)。
例如:
MOV A,R0 ;(R0 )→A
MOV P1,A ;(A)→P1
ADD A, R0 ;(A)+(R0) →A。
51系列单片机的寻址方式
51系列单⽚机的寻址⽅式AT89C51单⽚机能直接认识和执⾏的机器指令有255条,有7种寻址⽅式,即⽴即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。
1. 直接寻址:指令中直接给出参与操作的数据的地址,该地址⼀般⽤direct表⽰。
汇编指令:MOV A,direct该指令的功能是将⽚内RAM地址direct单元中的内容(参与操作的数据)传送到累加器A中,双字节指令。
2. ⽴即寻址:指令中直接给出参与操作的数据,称⽴即数,⽤data表⽰。
在汇编语⾔中,为标明⽴即数,为data加前缀”#”。
⽴即数可以是8位和16位⼆进制数,分别⽤#data和#data16表⽰。
汇编语⾔指令:MOV A,#data该指令将⽴即数data传送到累加器A中,双字节指令。
3. 寄存器寻址:参与操作的数据存放在寄存器中,汇编指令中直接以寄存器名来表⽰参与操作的数据地址,寄存器包括⼯作寄存器R0~R7、累加器A、AB、数据指针DPTR和位运算寄存器C。
汇编语⾔指令:MOV A,Rn ;n=0~7该指令将Rn中的内容传送到累加器A中,单字节指令。
4. 寄存器间接寻址:寄存器间接寻址为⼆次寻址,第⼀次寻址得到寄存器的内容为(Ri)或(DPTR),第⼆次寻址是将第⼀次寻址得到的寄存器内容作为地址,并在其中存、取参与操作的数据。
汇编语⾔中,寄存器前缀@是寄存器间接寻址的标志,有@Ri、@DPTR等。
汇编语⾔指令:MOV A,@Ri ;i=0、1该指令是将Ri中的内容作为地址,再将该地址中的内容传送到累加器A中,单字节指令。
5. 变址寻址:间接寻址由两个寄存器提供。
若由A、PC提供,在汇编语⾔指令中寻址地址表⽰为@A+PC;若由A和DPTR提供,在汇编语⾔指令中寻址地址为@A+DPTR。
其中,PC或DPTR被称为基址寄存器,A被称为变址寄存器,基址与变址相加为16位⽆符号加法。
若变址寄存器A中内容加基址寄存器DPTR(或PC)中内容时,低8位有进位,则该进位直接加到⾼位,不影响进位标志。
MCS-51系列单片机寻址方式
程序存储器
SFR
PC
10010011 操作码 A
1XEXH
030FH
XX
DPH 02H 02F1H DPL F1H
ALU
02F1H +1EH=030FH
7
6、相对寻址(一)
相对寻址以PC当前值(PC当前值是执行完指令后的值,也就 是当前指令的PC值+指令所占的字节数)作为基地址,与指令 中给定的偏移量rel相加,所得的结果作为程序的转移地址, 指令中的偏移量rel是一个用补码表示的8位带符号数。相对 寻址用于相对转移指令中,如:
MCS-51系列单片机寻址方 式
寻址方式:计算机指令中操作数(按地址)获取的方式 MCS-51系列单片机提供了7种寻址方式,如果一条指令 中包含多个操作数,就可能用到一种以上的寻址方式
1、立即寻址 2、直接寻址 3、寄存器寻址 4、寄存器间接寻址 5、变址寻址 6、相对寻址 7、位寻址
1
1、立即寻址(一)
8
6、相对寻址(二)
程序存储器
PC 0100H PC+1 0101H PC+2 0102H
60H 30H
操作码
偏移量 rel=30H
PC 01032H
PC 0123H XX
ALU 0102H +30H= 0132H
9
7、位寻址
MCS-51系列单片机中有专用的位运算指令,可以对位寻址区的每一 个位进行数据传送、逻辑运算等操作,如:
R5 XX
A XX
5
4、寄存器间接寻址
在指令的操作码中包含了某一工作寄存器的地址(可用作地 址指针的工作寄存器是@Ri:R0、R1),而操作数地址则存 放在该寄存器中,如:
七种寻址方式及单片机执行过程
…
20E0
…
47
ALU
MOVC A,@A+DPTR执行示意图
6.位寻址方式 MCS-51有位处理功能,可以对数据位进行操作,例如: MOV C,40H 是把位40H的值送到进位位C。 寻址范围包括: (1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位 可寻址位在指令中有如下4种的表示方法: a. 直接使用位地址。例如PSW.5的位地址为0D5H。
地址 译码
你知道PC 的作用吗?
寄存器区 数据缓冲器 内部控制信号 指令 寄存器 译码 外部数据总线DB
时钟及清零
外部控制总线CB
返回
例
MOV
A, 3AH
程序存储区
;把3AH单元的内容送A。
500 501
E5 3A 3A
片内RAM区 10
ACC
10
MOV
A, 3AH执行示意图
3. 寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志“@” 访问内部RAM或外部数据存储器的低256个字节时,只 能采用R0或R1作为间址寄存器。例如: MOV A,@Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM中40H单元的内容送 到A。 寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对片外数据存储器的64K字节的间接寻址,例如: MOVX A,@DPTR
MOV A, #3AH
程序存储区 100 101 74 3A
;立即数3AH送累加器A
操作码 立即数
ACC 3A
MOV
8051单片机指令系统的7种寻址方式解析
8051单片机指令系统的7种寻址方式解析寻址方式:寻址就是寻找操作数的地址。
绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。
所谓寻址方式就是通过什么途径获取操作数的方式。
根据指令操作的需要,计算机总是提供多种寻址方式。
一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。
8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。
寄存器寻址寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。
采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。
例如:MOV A R1 这条指令的功能是把工作寄存器R1的内容传送到累加器A中,由于操作数在R1中,因此指令中指定了R1,也就得到了操作数。
寄存器寻址方式的寻址范围包括:工作寄存器组R0~R7,部分特殊寄存器ACC,B,DPTR 等。
直接寻址直接寻址:直接寻址就是在指令中直接给出操作数所在单元的真实地址。
这里给出的操作数直接地址为8位二进制地址。
程序中一般用十六进制数表示。
例如:指令MOV A,30H 把内部RAM单元30H中的数据传送给累加器A,指令中30H就是操作数的直接地址。
直接寻址方式的寻址范围包括:内部数据存储器低128单元,特殊功能寄存器。
特殊功能寄存器在指令的表示中除了可以以直接地址形式给出外,还可以以寄存器符号形式给出,如对累加器A,在指令中可使用其直接地址OEOH,也可使用其符号形式ACC。
立即寻址立即寻址:立即寻址方式就是实际操作数作为指令的一部分,在指令中直接给出,取指令时,可在程序存储器中直接取得操作数。
通常把出现在指令中的操作数称为立即数。
采用立即寻址方式的指令,在立即数前面加上。
单片机指令系统-第2讲寻址方式
19
外部程序存储器ROM数据传送指令 MOVC A,@A+DPTR; A (A+DPTR) MOVC A ,@A+PC ;PC PC +1,A(A+PC)
专门用作查表,又称作查表指令。
20
外部数据存储器RAM数据传送指令
使用DPTR进行间接寻址 MOVX A,@DPTR MOVX @DPTR,A
2
MOVC A,@A+DPTR
程序存储区
A
DP TR
02 H
03H 00H
①
②
55 H
Σ
③
03 02H
03 02H
图3.5 变址寻址示意图
3
例3.6 MOVC A, @A+DPTR ;
00H
RAM
7FH DPL 00H DPH 24H
MOVC A, @A+DPTR
80H
2400H+0FH= 240FH
2) 源操作数与目的操作数不能相同(除 direct外);
3) 寄存器寻址与寄存器及其间址间不能相互传送。
数据传送类指令(28条)
(1)内部RAM数据传送指令(15条) (2)外部数据传送指令(7条)
(3)堆栈操作指令(2条)
(4)数据交换指令(4条)
(1)内部RAM数据传送指令(15条)
内部RAM是数据传送最为频繁的部分,这其中有 寄存器、累加器、RAM单元以及特殊功能寄存器之 间的相互数据传送。
17
内部RAM、SFR之间的传送MOV指令
Rn
dir
@Ri
MOV A , #data
dir
A
@Ri A
Rn,
单片机指令系统-第3讲寻址方式
单片机指令系统-第3讲寻址方式单片机指令系统第 3 讲寻址方式在单片机的世界里,指令系统就如同它的语言规则,而寻址方式则是这套规则中至关重要的一部分。
简单来说,寻址方式决定了单片机如何找到操作数,也就是数据在存储器中的位置。
就好像我们在图书馆找一本书,需要知道它在哪个书架、哪一排,这就是“寻址”。
在单片机中,常见的寻址方式有以下几种:1、立即寻址立即寻址是最简单直接的一种方式。
在这种寻址方式中,操作数直接包含在指令中。
比如说,指令“MOV A, 50H”,这里的“50H”就是操作数,它直接跟在指令后面,单片机一看就知道要把 50H 这个值送到累加器 A 中。
这种方式的优点是指令执行速度快,因为操作数就在指令中,不需要再去别的地方找。
但缺点也很明显,就是能表示的操作数范围有限,通常只能是 8 位或 16 位的数值。
2、直接寻址直接寻址就稍微复杂一点了。
在这种方式下,操作数的地址直接出现在指令中。
例如,指令“MOV A, 30H”,这里的 30H 是操作数所在的地址,单片机通过这个地址就能找到存储在 30H 单元中的数据,并把它送到累加器 A 中。
直接寻址可以访问片内 RAM 的 00H 7FH 单元以及特殊功能寄存器(SFR)。
但要注意的是,对于 SFR,只能使用直接寻址方式进行访问。
3、寄存器寻址寄存器寻址就是操作数在寄存器中。
比如指令“MOV A, R0”,就是把寄存器 R0 中的内容送到累加器 A 中。
这种方式的优点是指令短,执行速度快,因为寄存器的访问速度通常比内存快得多。
在 8051 单片机中,寄存器寻址可以使用工作寄存器 R0 R7 以及部分特殊功能寄存器。
4、寄存器间接寻址寄存器间接寻址与寄存器寻址有点类似,但操作数的地址在寄存器中。
比如指令“MOV A, @R0”,这里的 R0 中存放的不是操作数,而是操作数的地址,单片机先从 R0 中取出地址,再根据这个地址找到操作数并送到累加器 A 中。
单片机指令的寻址方式及其应用
单片机指令的寻址方式及其应用在单片机程序设计中,寻址方式是指用于访问或者定位内存中数据或指令的方法。
单片机指令的寻址方式有多种,包括直接寻址、间接寻址、寄存器寻址、立即寻址等。
不同的寻址方式适用于不同的情况和需求,在实际应用中起到重要的作用。
一、直接寻址直接寻址是最简单和最常见的寻址方式之一。
在直接寻址中,指令中包含的是操作数的直接地址。
当单片机执行该指令时,直接从内存中取出该地址对应的数据或指令进行操作或执行。
直接寻址适用于需要直接操作内存数据的场景,通过指定地址可以直接读取或写入数据。
例如,假设有一条指令LOAD A, 0x10,表示将内存地址为0x10的数据加载到寄存器A中。
单片机在执行该指令时,会直接从内存的0x10地址中读取数据并将其存入寄存器A中。
直接寻址的优点是操作简单、直观,缺点是地址空间有限,不能处理较大范围的数据。
二、间接寻址间接寻址是通过指令中给出的地址,再根据该地址所指向的存储单元获取数据或指令。
间接寻址适用于需要通过指针或者索引来访问数据的场景。
例如,假设有一条指令LOAD A, [0x10],表示将从内存地址0x10所指向的地址中读取数据,并将其存入寄存器A中。
在执行该指令时,单片机会首先读取0x10地址中存储的数据,得到实际的数据地址,然后再根据该地址从内存中读取数据。
间接寻址的优点是灵活性高,可以通过间接地址来访问复杂的数据结构,但是需要多次访存,运行效率较低。
三、寄存器寻址寄存器寻址是指指令中直接使用寄存器作为操作数的寻址方式。
在寄存器寻址中,指令中给出的操作数就是寄存器中的值,可以直接对其进行操作。
例如,有一条指令ADD A, B,表示将寄存器A中的值与寄存器B中的值相加,并将结果存入寄存器A中。
寄存器寻址的优点是非常快速,因为数据直接存储在寄存器中,不需要额外的访存操作。
但是由于寄存器数量有限,只适用于数据量较小的情况。
四、立即寻址立即寻址是指指令中直接给出操作数的值的寻址方式。
单片机寻址方式
单片机寻址方式单片机(Microcontroller Unit,简称MCU)是一种在一个芯片上集成了微处理器核心、存储器(ROM、RAM)、I/O端口和定时器等功能部件的嵌入式系统。
单片机广泛应用于各个领域,如电子产品、通信设备、汽车电子等。
而在单片机的设计和开发过程中,了解单片机的寻址方式是非常重要的。
一、直接寻址方式直接寻址方式是单片机最常用的寻址方式之一。
在直接寻址方式中,程序直接通过指令操作数给出操作的地址。
例如,下面是一个示例代码:MOV A, 0AH这条指令将0AH这个值存入寄存器A中。
在这里,0AH是操作数,它直接给出了要操作的地址。
这种寻址方式简单明了,适合对于特定地址的直接操作。
二、寄存器间接寻址方式寄存器间接寻址方式是通过一个寄存器给出操作数的地址。
在单片机中,常用的寄存器间接寻址方式有两个:累加器间接寻址和数据指针间接寻址。
1. 累加器间接寻址方式累加器间接寻址方式是将累加器中的内容作为操作数的地址。
例如,下面是一个示例代码:MOV A, R0这条指令将R0寄存器中的值存入寄存器A中。
在这里,R0是累加器,它给出了要操作的地址。
这种寻址方式可以灵活运用,适合于累加器与其他寄存器之间的数据传输。
2. 数据指针间接寻址方式数据指针间接寻址方式是通过数据指针来给出操作数的地址。
单片机中有两个数据指针,分别是DPTR(数据指针寄存器)和R1R0(寄存器对)。
三、立即寻址方式立即寻址方式是将操作数直接嵌入到指令中。
在单片机中,立即寻址方式一般适用于操作数的值较小且在指令中可以直接表示的情况。
例如,下面是一个示例代码:MOV A, #05H这条指令将值05H存入寄存器A中。
在这里,#05H表示操作数的立即数值。
这种寻址方式简洁高效,适合于常量或者临时数据的操作。
四、间接寻址方式间接寻址方式是通过一个指向操作数的地址的指针来实现的。
在单片机中,常用的间接寻址方式有两个:直接间接寻址和寄存器间接寻址。
小知识 单片机的寻址方式有哪些?
小知识单片机的寻址方式有哪些?
在单片机这一大概念下,能分出非常多的种类。
并且在实际的操作当中,很多效果是无法通过单一的单片机来进行实现的。
本文将为单片机的寻址方式进行总结,感兴趣的朋友快来看一看吧。
尽管现在单片机编程大多使用C语言,但必得对单片机的内核结构、存储结构及指令集有一定的了解,才有可能写出优秀的程序代码。
对于单片机指令的学习,寻址方式的学习是其中的一个重点和难点,寻址方式的正确理解不仅对汇编编程至关重要,而且有助于对于单片机内核结构(如RISC和CISC的区别)、存储结构的更深刻理解。
但是,不同单片机都提供了一些不同的寻址方式,且即使同样的寻址方式在不同的单片机中也有不同的名称,使得寻址方式显得混乱,不一致,不易理解。
推荐阅读:MCS-51单片机寻址方式总结
不过,经过仔细的对比、学习和分析,我发现,其实所有的寻址方式,都可以归为以下六类:
1)立即寻址
2)无址寻址
3)寄存器直接寻址
4)寄存器间接寻址
5)内存直接寻址
6)内存间接寻址
下面对以上六类指令一一分解:
1、立即寻址,即在指令中直接给出实际的操作数数值,如MOV R1,#0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机寻址方式
寻址方式
指令的一个重要组成部分是操作数,由它指定参与运算的数据或数据所在的存储器单元或寄存器或I/O接口的地址。
指令中所规定的寻找操作数的方式就是寻址方式。
每一种计算都具有多种寻址方式,寻址方式越多,计算机的功能就越强,灵活性就越大。
寻址方式的多少及寻址功能是反映指令系统优劣的主要因素之一。
要掌握指令系统也可从寻址方式入手。
MCS-51指令系统的寻址方式有7种:立即寻址(#data)、寄存器寻址(Rn)、间接寻址(@Ri、@DPTR)直接寻址direct、变址寻址(A+)、相对寻址(rel)和特定寄存器寻址(A)。
有些书把A当寄存器寻址,把位寻址单独作一种寻址方式,不管怎么分类其目的是为了便于记忆、掌握111条指令。
1.立即寻址(#data)
操作数包含在指令字节中,操作数直接出现在指令中,并存放在程序存储器中,这种方式称为立即寻址。
立即寻址指令的操作数是一个8位或16位的二进制常数,它前面以“#”号标识,例如:ADD A,#56H,即#56H与累加器A(设为31H)内容相加,结果(87H)存于累加器A中。
这条指令的机器码为2456H.
2.寄存器寻址(Rn)
由指令指出某一个寄存器中的内容作为操作数,这种寻址方式称为寄存器寻址。
在这种寻址方式中,指令的操作码中包含了参加操作的工作寄存器R0~R7的代码(指令操作码字节的低3位指明所寻址的工作寄存器)。
例如:ADD A,Rn中的Rn,当n为0、1、2时,机器码分别为28、29、2A.
3.间接寻址(@Ri/@DPTR)
由指令指出某一个寄存器内容作为操作数的地址。
这种寻址方式称为寄存器间接寻址。
访问外部RAM时,可使用R0,R1或DPTR作为地址指针,寄存器间接寻址用符号“@”表示。
例如:MOV A,@RO(机器码E7)是指:若RO内容为66(内部RAM地址单元66H),而66H单元中内容是27H,则指令的功能是将27H这个数送到累加器A.
4.直接寻址(direct)
在指令中直接给出操作数所在存储单元的地址(一个8位二进制数),称为直接寻址。
直接地址用direct表示,
直接寻址方式中操作数存储的空间有三种:
(1).内部数据存储器的128个字节单元(00H~7FH)
(2).位地址空间(有些书把这种寻址方式单独作一种寻址方式)
(3).特殊功能寄存器, 特殊功能寄存器只能用直接寻址方式进行访问。
5.基址加变址寻址(@A+PC/@A+DPTR)
以16位寄存器(DPTR或PC)作为基址寄存器,加上地址偏移量(累加器A中的8位无符号数)形成操作数的地址。
变址寻址方式有两类:
(1).以程序计数器的值为基址例如指令:
MOVC A,@A+PC;;(A)←((A)+(PC))
指令的功能是先使PC指向本指令下一条指令地址(本指令以完成),然后PC地址与累加器内容相加,形成变址寻址的单元地址内容送A。
(2).以数据指针DPTR为基址,以数据指针内容和累加器内容相加形成地址,例如:
MOV DPTR #4200H ;给DPTR赋值
MOV A,#10H ;给A赋值
MOVC A ,@A+DPTR ;变址寻址方式(A)←((A)+(DPTR))
三条指令的执行结果是将4210H单元内容送A中。
6.相对寻址(rel)
以程序计数器PC的当前值为基址,加上相对寻址指令的字节长度,再加上指令中给定的偏移量rel的值(rel是一个8位带符号数,用二进制补码表示),形成相对寻址的地址。
例如指令:
JNZ rel (或rel = 23H,机器码为7023)
当A≠0时,程序跳到这条指令后面,相差23个字节运行下一条指令。
7.特定寄存器寻址
累加器A和数据针DPTR这两个使用最频繁的寄存器又称为特殊寄存器。
对特定寄存器的操作指令,指令不再需要指出其地址字节,指令码本身隐含了操作对象A或DPTR。
例如:
INC A (指令码04) ;累加器加1
MOV A,#12H (指令码7412) ;数12送累加器
INC DPTR (指令码A3);数据指针内容加1
综上所述,寻址方式与存储器结构有密切关系。
一种寻址方式只适合于对一部分存储器进行操作,在使用时要加以注意。