汇编寻址方式记录

Posted songyaqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编寻址方式记录相关的知识,希望对你有一定的参考价值。

x86/amd64汇编指令的两大风格分别是Intel汇编与AT&T汇编,分别被Microsoft Windows/Visual C++GNU/Gas采用(Gas也可使用Intel汇编风格):

项目 Intel风格 AT&T风格
操作数顺序 目标操作数在前 源操作数在前
寄存器 原样 加%前缀
立即数 原样 加$前缀
16进制立即数 用后缀B与H分别表示二进制与十六进制 对于16进制字母开头的要加前缀0 加前缀0x
访问内存长度的表示 前缀BYTE PTR, WORD PTR, DWORD PTR和QWORD PTR表示字节,字,双字和四字 后缀b,w,l,q表示字节,字,双字和四字
引用全局或静态变量var的值 [var] var
引用全局或静态变量var的地址 var $var
引用局部变量 需要基于栈指针(rsp)
绝对寻址 [imm] imm
间接寻址 [reg] (%reg)
基址相对寻址 [reg +imm] imm(%reg)
变址寻址 [base+index] (base,index)
变址寻址 imm[base+index] imm(base,index)
比例变址寻址 imm[base + index * scale ] imm(base, index, scale)
scale只能是1,2,4,8其中的一个数字(1省略不写就是普通变址寻址)
代码注释 单行注释用;+注释内容。例如:mov rax, rdx ;这里是注释
注意 这里imm为立即数,base和index为寄存器,scale为伸缩量

以上是关于汇编寻址方式记录的主要内容,如果未能解决你的问题,请参考以下文章

8086汇编语言学习 8086寻址方式

汇编语言中操作数寻址方式都有哪些,各自有啥特点,怎么区分呢?

汇编学习笔记-80x86寻址方式

汇编语言之寻址方式

16位汇编 --寻址方式

汇编语言指令寻址