当前位置:编程学习 > 网站相关 >>

Linux下汇编学习-3寻址方式

 

一般的寻址格式为

ADDRESS_OR_OFFSET(%BASE_OR_OFFSET,%INDEX, MULTIPLIER)

这上面所有的字段都是可选的,最后的地址为:

FINALADDRESS = ADDRESS_OR_OFFSET + %BASE_OR_OFFSET + MULTIPLIER * %INDEX

 

1直接寻址

这种寻址方式只使用了ADDRESS_OR_OFFSET这一个字段,例如:

value:

.int1

movl value, %eax

最终内存单元的1将被送到寄存器eax中。

注意movl $1, %eax和movl 1, %eax的区别,前者是将1传送给寄存器eax,后者是将1地址所指向的内存单元内容传送给寄存器eax

 

2变址寻址

这种寻址方式使用了ADDRESS_OR_OFFSET和%INDEX两个字段,这个INDEX可以是所有的通用寄存器,注意这里和8086的区别。例如:

movl string_start(, %edi, 1), %eax

 

3间接寻址

这种寻址方式是它的内存地址在一个寄存器中,例如eax寄存器保存内存单元地址,那么我们可以通过movl (%eax), %ebx这样的语句将内存单元的内容加载到ebx寄存器中。

 

4基地址寻址

movl 4(%eax), %ebx

 



摘自 mcgrady_tracy的专栏
补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,