七种寻址方式

七种寻址方式文章目录 1 立即寻址方式 2 直接寻址方式 3 寄存器寻址方式 4 寄存器间接寻址方式 5 寄存器相对寻址方式 6 基址加变址寻址方式 7 相对基址加变址寻址方式寻址方式就是处理器根据指令中给出的地址信息来

大家好,欢迎来到IT知识分享网。

寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。

在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式。几乎所有的计算机,在内存中都采用地址指定方式。当采用地址指定方式时,形成操作数或指令地址的方式称为寻址方式。寻址方式分为两类,即指令寻址方式和数据寻址方式。

形成操作数的有效地址的方法称为操作数的寻址方式

微机系统有七种基本的寻址方式:立即寻址方式、直接寻址方式、寄存器寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址加变址寻址方式、相对基址加变址寻址方式等。其中,后五种寻址方式是确定内存单元有效地址的五种不同的计算方法,用它们可方便地实现对数组元素的访问。
在这里插入图片描述

1、立即寻址方式

操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。

立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:

MOV AH, 80H ADD AX, 1234H MOV ECX, H MOV B1, 12H MOV W1, 3456H ADD D1, H 

2、直接寻址方式

指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。
在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。

MOV ES:[1000H], AX 

直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。

注意:立即寻址方式和直接寻址方式的书写格式的不同,直接寻址的地址要写在括号“[”,“]”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。

试比较下列指令中源操作数的寻址方式(VARW是内存字变量):

MOV AX, 1234H MOV AX, [1234H] ;前者是立即寻址,后者是直接寻址 MOV AX, VARW MOV AX, [VARW] ;两者是等效的,均为直接寻址 

3、寄存器寻址方式

8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等; 16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等; 32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。 

寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。

由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,我们提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。

4、寄存器间接寻址方式

PA=(DS)*16+DI=1000H*16+2345H=12345H 

5、寄存器相对寻址方式

EA=(SI)+100H=2345H+100H=2445H 

该操作数的物理地址应由DS和EA的值形成,即:

PA=(DS)*16+EA=1000H*16+2445H=12445H。 

6、基址加变址寻址方式

EA=(BX)+(SI)=2100H+0011H=2111H 

操作数的物理地址应由DS和EA的值形成,即:

PA=(DS)*16+EA=1000H*16+2111H=12111H 

7、相对基址加变址寻址方式

EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H 

该操作数的物理地址应由DS和EA的值形成,即:

PA=(DS)*16+EA=1000H*16+2310H=12310H 

从相对基址加变址这种寻址方式来看,由于它的可变因素较多,看起来就显得复杂些,但正因为其可变因素多,它的灵活性也就很高。比如:

用D1[i]来访问一维数组D1的第i个元素,它的寻址有一个自由度,用D2[i][j]来访问二维数组D2的第i行、第j列的元素,其寻址有二个自由度。 多一个可变的量,其寻址方式的灵活度也就相应提高了。 

相对基址加变址寻址方式有多种等价的书写方式,下面的书写格式都是正确的,并且其寻址含义也是一致的。

MOV AX, [BX+SI+1000H] MOV AX, 1000H[BX+SI] MOV AX, 1000H[BX][SI] MOV AX, 1000H[SI][BX] 

七种寻址方式总结

1、立即寻址:操作数在指令中,如:MOV AL,12H(源操作数)

2、寄存器寻址:操作数在指令中的寄存器中,如:MOV AL,BH(源操作数)

3、直接寻址:操作数所在存储器的有效地址在指令中,如:MOV AL,[12H](源操作数)

4、寄存器间接寻址:操作数所在存储器的有效地址在指令中的寄存器中,如:MOV AL,[BX](源操作数)

5、寄存器相对寻址:操作数所在存储器的有效地址为指令中的寄存器加位移量,如:MOV AL,[BX+12H]或MOV AL,DAVL[BP](源操作数)

6、基址变址寻址:操作数所在存储器的有效地址为指令中的基址寄存器加变址寄存器,如:MOV AL,[BX+SI]或MOV AL,[BX][SI](源操作数)

7、相对基址变址寻址:操作数所在存储器的有效地址为指令中的基址寄存器加变址寄存器,再加位移量,如:MOV AL,[BX+SI+12H]或MOV AL,DAVL[BX][SI](源操作数)

参考:微机原理——寻址方式总结

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117195.html

(0)
上一篇 2025-11-22 22:33
下一篇 2025-11-23 07:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信