下载后可任意编辑Linux 下的汇编与 Windows 汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数,而 Windows 下却是相反
1、 基本操作指令简单的操作数类型说明,一般有三种,(1)立即数操作数,也就是常数值
立即数的书写方式是“$”后面跟一个整数,比如$0x1F,这个会在后面的具体分析中见到很多
(2)寄存器操作数,它表示某个寄存器的内容,用符号 Ea 来表示任意寄存器a,用引用 R[Ea]来表示它的值,这是将寄存器集合看成一个数组 R,用寄存器表示符作为索引
(3)操作数是存储器引用,它会根据计算出来的地址(通常称为有效地址)访问某个存储器位置
用符号 Mb[Addr]表示对存储在存储器中从地址 Addr 开始的b 字节值的引用
通常可以省略下标 b
图 1 表示有多种不同的寻址模式,一个立即数偏移 Imm,一个基址寄存器 Eb,一个变址或索引寄存器 Ei 和一个伸缩因子 s
有效地址被计算为 Imm+R[Eb]+R[Ei]*s,对于这中寻址方式,我们可以在数组或者结构体中进行对元素进行访问时会用到
操作数类型格式操作数值名称立即数$ImmImm立即数寻址寄存器EaR[Ea]寄存器寻址寄存器ImmM[Imm]绝对寻址寄存器(Ea)M[R[Ea]]间接寻址寄存器 Imm(Eb)M[Imm+R[Eb]](基址+偏移量)寻址寄存器 (Eb,Ei)M[R[Eb]+R[Ei]]变址寻址寄存器M[Imm+R[Eb]+R[Ei]]寄存器(,Ei, s)M[R[Ei] * s]伸缩化的变址寻址寄存器Imm(,Ei, s)M[Imm+R[Ei] * s]]伸缩化的变址寻址寄存器(Eb,Ei, s)M[R[Eb]+R[Ei] * s]伸缩化的变址寻址寄存器Imm(Eb,Ei, s)M[Imm+R[Eb]+R[Ei] * s]伸缩化的变址寻址下载后可任意编辑图 1