美文网首页程序员
直接寻址方式

直接寻址方式

作者: 唐大方 | 来源:发表于2017-04-17 20:58 被阅读0次

首先需要了解几个内容:

1、机器指令包含的两部分:一部分是指令要完成的操作,称为指令操作码部分;另一部分是参与操作的对象,称为操作数部分,可以直接给出操作数的值或操作数的地址信息。

2、有效地址(EA):处理器通过指令字提供的地址信息求出存放操作数的地址,称为有效地址。

寻址方式:查找操作数或求出操作数有效地址的方法,称为寻址方式。

寻址有数据寻址程序寻址

数据寻址方式主要有3大类:

操作数直接包含在指令中、包含在处理器某个内部寄存器中、包含在存储器中

“操作数包含在存储器中”的寻址方法,也可以称为存储器寻址方式,主要有9种。

第一种:直接寻址方式

指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址称为直接寻址方式。

通常情况下,操作数存放在数据段(DS)中(也可以显式地指定其他段),所以,其线性地址将由数据段寄存器DS和指令中给出的有效地址直接形成,例如:

1、INC WORD PTR [500H];

该指令的有效地址即偏移地址500H。

线性地址=数据段基址(DS*16)+偏移地址(500H)

2、MOV AX, [2000H] ;

线性地址=数据段基址(DS*16)+偏移地址(2000H)

将有效地址(偏移地址)2000H字单元中的内容传送到AX寄存器中。

#1:如果使用段超越前缀,那么,操作数可存放在其它段。

例如,要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。

下面指令的目标操作数就是带有段前缀的直接寻址方式。

MOV ES:[1000H], AX

#2:中括号在指令中的区别

#2-0:立即数寻址方式和直接寻址方式:

写在括号“[”,“]”内的数值代表直接寻址的地址,没有括号“[”,“]”代表立即数寻址的操作数。

mov eax,[2H]   eax==(DS*16+2H)中的内容传送到AX寄存器中。

mov eax,2H         eax==2H

#2-1:mov指令下的变量:

num dword 2

mov ebx,num   ebx==2

mov ecx,[num]  ecx==2

对于变量来说,加不加中括号,都是取值而不是取地址。

#2-2:mov指令下的寄存器:

mov ebx,eax      ebx==eax

mov ecx,[eax]  ecx==(DS*16+eax)中的内容传送到ecx寄存器中。如果eax的值过大,可能会报错。

对于寄存器来说,加中括号等于直接寻址。

#2-3:lea指令下的变量:

num dword 2    假设num地址是0x00574675

lea ebx,num      ebx==0x00574675

lea eax,[num]    eax==0x00574675

对于变量来说,加不加中括号,都是取地址。

#2-4:lea指令下的寄存器:

mov eax,2

lea ebx,[eax]     ebx==2

lea ebx,eax; 编译器报错: error A2070: invalid instruction operands

对于寄存器来说,加中括号是取寄存器中的值,不加中括号会报错。

3#:如果启用了分页机制,那么线性地址是逻辑地址和物理地址之间的中间层。若没有启用分页机制,那么线性地址就是物理地址。

相关文章

  • 直接寻址方式

    首先需要了解几个内容: 1、机器指令包含的两部分:一部分是指令要完成的操作,称为指令操作码部分;另一部分是参与操作...

  • ARM笔记

    一、寻址方式 立即数寻址 如:MOV R0, #6;表示:R0 <- 6; 寄存器寻址(直接寻址) 如:ADD R...

  • 寻址方式

    寄存器寻址 不涉及内存,将寄存器 eax 中的内容放到寄存器 edx 中: 立即寻址 不涉及内存,将立即数放到 e...

  • 寻址方式

    地址码编码由寻址方式决定 地址可能是寄存器编号,如果操作数在寄存器中 也有可能是存储单元的单元地址,如果操作数在存...

  • 寻址方式

    寻址方式(或编址方式)指的是确定本条指令的数据地址及下一条要执行的指令地址的方法。 (1)立即数寻址 所需的操作数...

  • 汇编- 寻址方式

    1, 直接寻址 这是最简单的一种寻址方式-该指令的操作数中包含一个具体的地址。 例如: MOV DWORD PTR...

  • 8086 指令系统寻址方式

    整理汇编语言学习笔记,回顾一下8086 指令系统的寻址方式。 寻址与指令 寻址方式(Addressing Mode...

  • 立即数寻址方式

    数据寻址方式:查找操作数或操作数存放位置的方法,不同于程序寻址方式。 数据寻址方式主要有3大类: 操作数包含在指令...

  • 寄存器寻址方式

    数据寻址方式:查找操作数或操作数存放位置的方法,不同于程序寻址方式。 数据寻址方式主要有3大类: 操作数包含在指令...

  • 8086寻址方式

    8086寻址方式 16位的8086cpu中运算器一次最多可以处理16位的数据,寄存器的最大宽度为16位,寄存器和运...

网友评论

    本文标题:直接寻址方式

    本文链接:https://www.haomeiwen.com/subject/rxlxzttx.html