寻址方式

合集下载

寻址方式

寻址方式

计算机指令系统
1.寻址方式:指CPU指令中规定的寻找操作数所在的地址的方式。

操作数:MOV AL , 05H 操作码目的操作数,源操作数操作数引用时的字节顺序:若存放的信息是字节,则按顺序存放若存放的信息是字,则将字的低位字节存放在低地址,高位字节存放在高地址注:如果没有特别说明,寻址方式是指源操作数的寻址方式。

2.寻址方式之一:立即寻址操作数作为立即数直接存在指令中,可为字节或字。

3.寻址方式之二:寄存器(直接)寻址操作数包含在指令规定的8位、16位寄存器中。

寄存器寻址由于无需从存储器中取操作数,故执行速度快。

4.寻址方式之三:直接寻址在指令的操作码后面直接给出操作数的16位偏移地址。

这个偏移地址也称为有效地址EA。

操作数默认在DS段中。

如果操作数在DS以外的其他段(CS,SS,ES)中,指令中必须指明段寄存器(段超越)。

5.寻址方式之四:寄存器间接寻址操作数地址的偏移量(有效地址EA)存放在寄存器中。

以SI,DI, BX间接寻址,默认操作数在DS段中;以BP间接寻址,默认操作数在SS段中。

6.寻址方式之五:基址寻址基址寻址将规定的基址寄存器的内容加上指令中给出的偏移量,即可得到操作数的有效地址。

基址寄存器包括基址寄存器BX和基址指针寄存器BP。

7.寻址方式之六:变址寻址变址寻址将规定的变址寄存器的内容加上指令中给出的偏移量,即可得到操作数的有效地址。

变址寄存器包括源变址寄存器SI和目的变址寄存器DI。

8.寻址方式之七:基址-变址寻址指令中规定一个基址寄存器和一个变址寄存器,同时还给出一个8位或16位偏移量,将三者的内容相加得到操作数的有效地址。

4 种寻址方式

4 种寻址方式

第3章 8086/8088指令系统寻址方式寻址方式:包含数据寻址方式和转移地址寻址方式。

这里指数据寻址方式。

它是指取得指令操作数地址的方式。

(1)立即寻址方式(2)直接寻址方式(3)寄存器寻址方式(4)寄存器间接寻址方式(5)寄存器相对寻址方式(6)基址变址寻址方式(7)相对基址变址寻址方式寻址方式:包含数据寻址方式和转移地址寻址方式。

这里指数据寻址方式。

它是指取得指令操作数地址的方式。

(1)立即寻址方式(2)直接寻址方式(3)寄存器寻址方式(4)寄存器间接寻址方式(5)寄存器相对寻址方式(6)基址变址寻址方式(7)相对基址变址寻址方式1 寄存器间接寻址方式微机原理寄存器间接寻址:操作数的有效地址是寄存器的内容,结合对应段寄存器的内容计算出操作数的物理地址,存储器中对应物理地址的内容即是操作数。

1 寄存器间接寻址方式微机原理例: MOV AX,[BX]假设DS寄存器的内容为 1000HBX寄存器的内容为 3600H那么源操作数的存储器的物理地址为1000H*16+3600H=13600H由于是16位的操作数,所以从13600H、13601H 2个单元读出内容送至AX。

1 寄存器间接寻址方式微机原理2 寄存器相对寻址方式微机原理寄存器相对寻址:操作数的有效地址由SI、DI、BX或BP之一的内容,加上指令中8位或16位相对地址构成。

例:MOV AX,[BX+0D8H]假设DS寄存器的内容为 6000HBX寄存器的内容为 4500H那么源操作数的存储器的物理地址为6000H*16+4500H+0D8H=645D8H有效地址2 寄存器相对寻址方式微机原理基址变址寻址:操作数的有效地址等于一个基址寄存器的内容和一个变址寄存器的内容之和。

基址寄存器:BX、BP 变址寄存器:SI 、DI例: MOV AL,[BX+DI]可以记成 MOV AL,[BX][DI]或记成 MOV AL ,[BX]+[DI]例:MOV AL,[BX] [DI]假设DS寄存器的内容为 6000HBX寄存器的内容为 4500HDI寄存器的内容为 1600H那么源操作数的存储器的物理地址为6000H*16+4500H+1600H=60000H+5B00H=65B00H有效地址3 基址变址寻址方式微机原理相对基址变址寻址:操作数的有效地址等于一个基址寄存器的内容、一个变址寄存器的内容以及一个偏移量之和。

七种寻址方式

七种寻址方式

七种寻址⽅式在存储器中,操作数和指令字写⼊或读出的⽅式,有地址指定的⽅式,相联存储⽅式和堆栈存取⽅式,⼏乎所有的计算机,在内存中都采⽤地址指定⽅式,当采⽤地址指定⽅式的时候,形成操作数或指令地址的⽅式称为寻址⽅式,寻址⽅式分为两类,即为指令寻址⽅式和数据寻址⽅式,在传统⽅式设计的计算机中,内存中指令的寻址与数据的寻址是交替进⾏的⽴即数寻址⽅式:将操作数放在操作码的后⾯。

⼀起放在指令代码段中,在程序运⾏的过程中,程序直接调⽤该操作数,⽽不⽤到其他的地址的单元中去取得相应的操作数。

上述中的操作数也被称为⽴即数。

可以有不同的进制寄存器寻址⽅式:指令所要的操作数已经存储在某个寄存器中,或把⽬标操作数存⼊寄存器中,把在指令中指出所⽤的寄存器(寄存器助忆符)的寻址⽅式称为寄存器寻址⽅式寄存器寻址⽅式是⼀种简单快捷的寻址⽅式,源和⽬的操作数都可以是寄存器直接寻址⽅式:在指令格式的地址字段中直接指出操作数在内存中的地址id。

⼀般情况下数据放在数据段中,所以物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使⽤段超越前缀,那么操作数可存放在其他段直接寻址⽅式常⽤于处理内存单元的数据,操作数是内存变量的值,指令中直接给出操作数地址(DIR)的寻址⽅式称为直接寻址⽅式,寻址的对象为:1内存数据存储器,指令中直接地址表⽰2、特殊功能的寄存器SFR,在指令中⽤寄存器名称表⽰寄存器间接寻址⽅式:是指将指定的寄存器内容为地址,由该地址所指定的单元内容作为操作数,MCS-51规定R0或R1为间接寻址寄存器,他可寻址内部RAM低地位的12个字节单元内容,还可以采⽤数据指针(DPTR)作为直接寻址寄存器,寻址外部数据存储器的64k字节空间,但不能⽤本寻址⽅式寻址特殊功能寄存器寄存器的间接寻址需要以寄存器符号的形式来表⽰,并且在寄存器名称前⾯加上间接寻址符号“@”。

例如指令MOV A,@RO就使⽤了寄存器间接寻址⽅式,这条指令的意义就是将地址指针RO指向内部数据存储单元中的数据送⼊累加器A中。

七种寻址方式

七种寻址方式
程序存储区 1020 EA 12 R2
片内RAM区 4A
ACC
4A
MOV A,R2执行示意图
2.直接寻址方式 操作数直接以单元地址的形式给出: MOV A,40H 寻址范围: (1) 内部RAM的128个单元 (2) 特殊功能寄存器。除了以单元地址的形式外, 还可用寄存器符号的形式给出。例如: MOV A,80H 与 MOV A,P0是等价的。 直接寻址方式是访问特殊功能寄存器的唯一寻址方式

JC
03H ;若进位C=0,则程序顺序执行,即 不跳转,PC= PC+2 ;若进位C=1, 则以PC 中的当前内容为基地址, 加上偏移量03H 后所得到的结果为 该转移指令的目的地址 。
程序存储区
1000 1001
40 03 1002 PC


1005
ALU 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
若进位c1则以pc中的当前内容为基地址加上偏移量03h后所得到的结果为该转移指令的目的地址程序存储区401000031001c21005alu1002pc指令指令寄存器寄存器译码译码地址地址译码译码程序计数器程序计数器地址寄存器地址寄存器累加器累加器a运算器运算器外部地址总线外部地址总线abab外部地址总线外部地址总线abab数据缓冲器数据缓冲器外部数据总线外部数据总线外部数据总线外部数据总线dbdb寄存器区寄存器区外部控制总线外部控制总线cbcb外部控制总线外部控制总线cbcb内部控制信号内部控制信号时钟及清零时钟及清零取指过程取指过程mova09h74h09h

七种寻址方式

七种寻址方式
取指过程
程序计数器 地址寄存器 外部地址总线AB 外部地址总线AB
0002H PC= 0000H 0001H
0000H
内 部 数 据 总 线
(PC) (PC) (PC)
执行过程
运算器 ①② 累加器A 累加器A 存 储 器
0002H 0001H 0 0 0 0 1 0 0 1 0000H 0 1 1 1 0 1 0 0
…Leabharlann MOVC A,@A+DPTR执行示意图 ,@A+DPTR执行示意图

6.位寻址方式 MCS-51有位处理功能 可以对数据位进行操作,例如: 有位处理功能, MCS-51有位处理功能,可以对数据位进行操作,例如: MOV C,40H C, 是把位40H的值送到进位位C 40H的值送到进位位 是把位40H的值送到进位位C。 寻址范围包括: 寻址范围包括: 内部RAM中的位寻址区。位有两种表示方法,例如, RAM中的位寻址区 (1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 28H单元中的最低位 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位 可寻址位在指令中有如下4种的表示方法: 可寻址位在指令中有如下4种的表示方法: 直接使用位地址。例如PSW.5的位地址为0D5H PSW.5的位地址为0D5H。 a. 直接使用位地址。例如PSW.5的位地址为0D5H。
程序存储区 1020 EA 12 R2
片内RAM区 4A
ACC
4A
MOV A,R2执行示意图
2.直接寻址方式 操作数直接以单元地址的形式给出: 操作数直接以单元地址的形式给出: A, MOV A,40H 寻址范围: 寻址范围: 内部RAM 128个单元 RAM的 (1) 内部RAM的128个单元 特殊功能寄存器。除了以单元地址的形式外, (2) 特殊功能寄存器。除了以单元地址的形式外, 可用寄存器符号的形式给出 例如: 的形式给出。 还可用寄存器符号的形式给出。例如: A, A,P0是等价的 是等价的。 MOV A,80H 与 MOV A,P0是等价的。 直接寻址方式是访问特殊功能寄存器的唯一寻址方式

七种寻址方式

七种寻址方式


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。

MOV
A, 3AH
程序存储区
;把3AH单元的内容送A。
500 501
E5 3A 3A
片内RAM区 10 10
ACC
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

现假设MOVC A,@A+DPTR指令存放在70H单元,ACC 中原存放值为 E0H,DPTR中值为2000H,则A +DPTR形 成的地址为20E0H。 20E0H单元中内容为 47H,则执行 该指令后,ACC中原E0H被47H 代替。该指令执行过程 示于图。
程序存储区 70 93 ACC (47)E0 DPH DPL 20 00

寻址方式

寻址方式

数据寻址的常见方式:1、隐含寻址这种类型的指令,不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。

例如单地址指令格式,就不给出第二操作数的地址,而是规定累加器ACC作为第二操作数的地址,指令中只是明显指出第一操作数。

隐含寻址的优点是有利于缩短指令字长,缺点是需要增加存储操作数的硬件和存储隐含地址的硬件。

2、立即(数)寻址这种类型的指令的地址码字段指出的不是操作数的地址,而是操作数本身,又叫立即数。

数据采用补码的形式存放。

立即寻址的优点是指令在执行阶段不访问主存,指令执行的时间最短,缺点是A的位数限制了立即数的范围。

(在定长指令码格式下,所有指令的长度都是一样的,这时候取每条指令的时间都一样,执行指令时立即数寻址最快,但是如果在变长指令码下,受到形式地址位数的限制,如果操作数比较大,那立即寻址方式在取指令的时间上要用时更多一点)3、直接寻址这种类型的指令的地址码字段的形式地址就是操作数的真实地址,取数操作直接取地址里面的内容,它的有点是简单,只需要访问一次主存,不需要专门计算操作数的地址,缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改,相对于立即寻址,直接寻址缩短了指令的长度。

4、间接寻址这种类型的指令是相对于直接寻址而来的,在直接寻址中,形式地址就是真实地址,在间接寻址中,形式地址是操作数地址的地址,即EA=(A),间接寻址可以是一次间接,也可以是多次间接。

它的优点是可以扩大寻址范围,因为EA的位数大于A的位数,便于编制程序,可以方便地实现子程序的返回,缺点是在执行使需要多次访问内存,访问速度慢。

这种寻址方式并不常用。

一般扩大寻址范围都采用寄存器间接寻址。

毕竟访问寄存器更快一点。

5、寄存器寻址这种类型的指令是直接给出操作数所在的寄存器的编号,EA=Ri,操作数就在Ri内存放。

寄存器寻址的优点是指令在执行阶段不访问主存,只访问寄存器,因此执行速度快,因为寄存器数量少,所以寄存器编号所占的位数也少,指令字长也比较短。

七种寻址方式.ppt

七种寻址方式.ppt
其中Ri中的内容为40H,把内部RAM中40H单元的内容送 到A。
寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对片外数据存储器的64K字节的间接寻址,例如:
MOVX A,@DPTR
(3)片外数据存储器的低256字节
例如:MOVX A,@Ri
(4)堆栈区
堆栈操作指令PUSH(压栈)和POP(出栈)使用堆 栈指针(SP)作间址寄存器
寄存器DPTR等。
1020
程序存储区 EA
片内RAM区
12
R2
4A
ACC
4A
MOV A,R2执行示意图
2.直接寻址方式 操作数直接以单元地址的形式给出: MOV A,40H 寻址范围: (1) 内部RAM的128个单元 (2) 特殊功能寄存器。除了以单元地址的形式外, 还可用寄存器符号的形式给出。例如: MOV A,80H 与 MOV A,P0是等价的。
地址 译码
寄存器区 内部控制信号
数据缓冲器 外部数据总线DB
指令 时钟及清零 寄存器
译码
外部控制总线CB
返回
D7 D6 D5 D4 D3 D2 D1 D0 27H 0 0 1 0 0 0 0 0
3F 3E 3D 3C 3B 3A 39 38
图4.9 SETB 3DH 指令执行示意图
7.相对寻址方式
在相对寻址的转移指令中,给出了地址偏 移量,以“rel”表示,即把PC的当前值加上偏 移量就构成了程序转移的目的地址:
目的地址=转移指令所在的地址 + 转移指令的字 节数 + rel
偏移量rel是一带符号的8位二进制数补码数 。
范围是:–128 ~ +127
向地址增加方向最大可转移(127+转移指令字节) 个单元地址,向地址减少方向最大可转移 (128-转移指令字节)个单元地址。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章 80x86指令系统
①直接寻址方式 最简单,直观;指令中直接以位移量形式,给 出操作数的有效地址EA;执行速度快,主要 用于存取位于存储器中的简单变量。 MOV AL, [1064H],设当前(DS)=2000H
操作码
(DS)*10H=20000H + 1064H 21064H
64 10
代 码 段
物理地址=
CS DS SS × 10H + EA ES
第4章 80x86指令系统
计算EA的通式为:
EA=基地址[BX或BP]+变址值[SI或DI]+位移量[0或8位或16位]
第4章 80x86指令系统 有效地址可以由以下三种地址分量组成:
● 位移量 (Displacement) :它是存放在指令中的一个 8 位或 16 位的数,但它不是立即数,而是一个地址。 ● 基址(Base Address):它是存放在基址寄存器BX或BP中的 内容。
M
31000H

AX
40000H
AL
30000H

42000H
50 40
31000H

64H
40
50
64H

第4章 80x86指令系统
③寄存器间接寻址-变址寻址方式 MOV CL, [SI]
(DI) EA= (SI)
操作码
64 10
代 码 段
DS 20000H SI 1000H + 21000H 20000H … CL 45 21000H 45 …
DS DS,SS DS,ES DS SS DS SS
3. 寄存器 [SI/DI] 变址寻址 4. 基址+变址 [BX+SI/DI] 寻址 [BP+SI/DI] 5. 基址+变址 [BX+SI/DI+disp] +位移量 [BP+SI/DI+disp]
第4章 80x86指令系统
五. 举例
例:设当前有关寄存器的内容为:(BX)=6000H, (BP)=4000H, (SI)=2000H, (DS)=3000H, (ES)=3500H, (SS)=5000H, 试确定下列指令中存储器方式的 操作数在内存中的逻辑地址和物理地址。
第4章 80x86指令系统 4.1.2 8086/8088的寻址方式 所谓寻址方式就是寻找操作数存放地址(位置)的方法。 在8086/8088系统中操作数存放的位置用以下几种: ①固定寻址 ②操作数包含在指令字节中。即指令格式中操作数部分 就是操作数本身。这种操作数叫立即数操作数。 ③ 操作数存放在CPU的某个内部寄存器中。这种操作数 叫寄存器操作数。 ④ 操作数在内存的数据区中。这种操作数叫存储器操作 数。包括直接寻址、寄存器间接寻址、寄存器相对寻址;基址 变址寻址、基址变址相对寻址方式。 ⑤其它寻址方式:包括串操作指令寻址、I/O端口寻址、 转移类指令寻址。
(BX) EA= (BP) +
(DI) (SI)
8位 disp + 16位 disp
操作码
MOV [BX+DI+1234H], AH DS:40000H BX: 0200H DI: 0010H 1234H + 41444H
34 12
40000H … … 45
代 码 段
AH
45 41444H
数 据 段
第4章 80x86指令系统
② 寄存器间接寻址-基址寻址方式
设当前(DS)=3000H, (BP)=2000H, (BX)=1000H,(SS)=4000H MOV [BX], AL MOV AX, [BP]
M
(SS)*10H=40000H + (BP)= 2000H 42000H
+
DS 30000H BX 1000H
MOV AX, [0520H] MOV AX, [BX]
MOV AX, [SI+1000H]
MOV AX, [BP+6060H]
MOV AX, ES: [BX+SI+0050H]
其它寻址方式 1)I/O端口寻址方式(以8位立 即数的方式在指令中直接给出,端口号范围0255)
第4章 80x86指令系统
第4章 80x86指令系统
存储器寻址方式小结
操作数
偏移地址 (有效地址) 隐含的 段寄存器
1. 直接寻址 2. 寄存器 基址寻址
[disp] [BX]/[BP]
disp 寄存器值 寄存器值 (BX)+ (SI)/(DI) (BP)+(SI)/(DI) (BX)+(SI)/(DI)+disp (BP)+(SI)/(DI)+disp
● 变址(Index Addess):它是存放在变址寄存器SI或DI中的内 容。
对于某条具体指令,这三个地址分量可有不同的组合。如果 存在两个或两个以上的分量,那么就需要进行加法运算,求出操 作数的有效地址(EA),进而求出物理地址(PA)。正是因为这三种 地址分量有不同的组合,才使得对存储器操作数的寻址产生了若 干种不同的方式。
第4章 80x86指令系统
1)固定寻址方式 有些单字节指令,规定CPU对某个固定的寄存器进
行。
例如:十进制加法的调整指令AAA,规定被调整的 数总位于AL中。 该指令用来调整AL中的结果,指令编码为:
OP 0011 0111
37H
第4章 80x86指令系统
2)立即数寻址方式 操作数就在指令中,当执行指令时,CPU直接从指 令队列中取得立即数,而不必执行总线周期。立即数 可以是8位的或16位的;只能是整数类型的源操作数; 主要用来给寄存器赋初值;指令执行速度快。 例如:MOV AL, 80H MOV AX, 1234H
①直接端口寻址方式
IN AL, 21H I/O接口 (表示从地址 21H的端口中读取数据到AL中)
01H
02H
…… 操作码
代 码 段
21H AL
80x86指令系统
1)I/O端口寻址方式——② 间接端口寻址方式(通过DX间接寻址, 16位端口地址放在DX中,端口范围0-65535) OUT DX, AL (将AL中的内容输出到地址由DX寄存器内容所指令的端口中)
存储器
AL
80H
存储器 操作码字节 指 令 码
AH 12
AL 34
操作码字节
34H 34
80H 80H
12H 12
指 令 码
第4章 80x86指令系统
3)寄存器寻址方式 操作数在CPU的寄存器中,指令中给出寄存器名。 源操作数和目的操作数均可采用寄存器寻址的方式。 寻址的指令长度短;操作数就在CPU内部进行,不需 要使用总线周期;指令执行速度快。 例如:MOV AX, CX
存储器 AX
CX
89 C1
指令码 (包括操作数)
第4章 80x86指令系统
4)存储器寻址方式 存储器寻址方式的操作数存放在存储器单元中。 因此,要存取操作数就必须知道其存储器的单元地 址。在指令中可以直接给出或间接给出操作数的地 址,以达到存取操作数的目的。 指令中给出的地址只是操作数的有效地址 (EA),并且是放在方括号(“[ ]”)中。若要 从存储器中存取操作数还须得到实际的地址(物理 地址)。物理地址=段基址左移四位+有效地址
I/O接口 0001H
DX 12 34
0002H
……
AL
1234H 80
80
AL
45
20000H
… 21064H 45
数 据 段
第4章 80x86指令系统
如果没有特殊指明,直接寻址方式的操作数一般在存储器的 数据段中,即隐含的段寄存器是 DS 。但是 8086/8088 也允许段超 越,此时需要在指令中特别标明,方法是在有关操作数的前面写 上操作数所在段的段寄存器名,再加上冒号。例如,若以上指令 中源操作数不在数据段而在附加数据段中,则指令应写为如下形 式: MOV AL,ES:[1064H] 在汇编语言指令中,可以用符号地址来表示位移量。例如: MOV AL,[value] 或MOV AL,value 此时value为存储单元的符号地址。
数 据 段
第4章 80x86指令系统
④ 基址加变址寻址方式
(BX) EA= (BP) +
(DI) (SI)
SS:40000H BP: 2000H + SI: 1200H 43200H 40000H
MOV AH, [BP+SI]
M
AH

56H
56H

43200H
第4章 80x86指令系统
⑤基址加变址加位移量
相关文档
最新文档