雅乐网

计算机技术、学习成长

编程 » C/C++ » 汇编语言寻址方式

汇编语言寻址方式

首先要思考,操作数可以存在什么地方

1.操作数位于指令代码中,编译的时候就得到了这个操作数,这就是立即(数)寻址。这个操作数以常量的形式出现。

2.操作数位于处理器内部的寄存器中,处理器直接从寄存器或的操作数,这就是寄存器寻址方式

3.操作数位于内存,要从内存单元获取操作数,叫做储存器寻址。8086/8088处理器的主存地址在程序设计时采用逻辑地址。逻辑地址分成段地址和偏移地址两部分。存储器寻址方式表达存储器地址时,段地址在默认的或段超越前缀指令指定的段寄存器中,偏移地址被称为有效地址EA(Effective Address)。有效地址用中括号括起来。

1.内存地址直接给出,如常数和变量名。存在指令代码中,就是直接寻址

2.内存地址在寄存器里面,叫做寄存器间接寻址

如果BX的内容是0001h 那么和

是一样的

3.内存地址是两部分的和,一部分在寄存器,一部分是直接给出的(成为位移量),这就是寄存器相对寻址

BUF为变量名,他代表的是它的偏移地址

汇编之后

搜狗截图20140415161902

4.内存地址是两部分的和,一部分在基址寄存器,一部分在变址寄存器。这就是基址加变址寻址

5.内存地址是三部分的和,一部分是基址寄存器,第二部分是变址寄存器,第三部分是位移量。叫做相对基址加变址寻址

举例

只有一个常量—1234h—立即寻址

只有一个寄存器名—AX—寄存器寻址

其他——存储器寻址

【常量】—23H—直接寻址

【寄存器名】—[BX]—寄存器间接寻址

【寄存器+ 常量】—[BX+BUF]—寄存器相对寻址

【寄存器+寄存器】—[BX+DI]—基址加变址

【寄存器+寄存器+常量】—[BX+DI+4]—相对基址加变址寻址

变量名 —BUF— 直接寻址

变量名+常量—BUF+5—直接寻址

变量名【寄存器】—BUF[BX]—寄存器相对寻址

offset 变量名——立即寻址

关于位移量

位移量直接给出 ,也可以是变量 标号 和数值 的和

BUF+2 相当于位移量

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/assembly1.html

上一篇:

下一篇:

我要评论

验证码*: 7 + 3 =