寄存器引用 引用寄存器要在寄存器号前加百分号%,如“movl %eax, %ebx”
80386 有如下寄存器: 8 个 32-bit 寄存器 %eax ,%ebx ,%ecx ,%edx ,%edi,%esi,%ebp,%esp; 8 个 16-bit 寄存器,它们事实上是上面 8 个 32-bit 寄存器的低 16位:%ax ,%bx ,%cx ,%dx ,%di,%si,%bp,%sp; 8 个 8-bit 寄存器:%ah,%al,%bh,%bl,%ch,%cl,%dh,%dl
它们事实上是寄存器%ax ,%bx ,%cx ,%dx 的高 8 位和低 8 位; 6 个段寄存器:%cs(code),%ds(data),%ss(stack), %es,%fs,%gs; 3 个控制寄存器:%cr0,%cr2,%cr3; 6 个 debu g 寄存器:%db0,%db1,%db2,%db3,%db6,%db7; 2 个测试寄存器:%tr6,%tr7; 8 个浮点寄存器栈:%st(0),%st(1),%st(2),%st(3),%st(4),%st(5),%st(6),%st(7)
操作数顺序 操作数排列是从源(左)到目的(右),如“mov l %eax (源), %ebx (目的)” 3
立即数 使用立即数,要在数前面加符号$, 如“movl $0x04, %ebx” 或者: para = 0x 04 mov l $para, %ebx 指令执行的结果是将立即数 04h 装入寄存器ebx
符号常数 符号常数直接引用如 v alu e:
long 0x 12a3f2de mov l v alu e , %ebx 指令执行的结果是将常数 0x 12a3f2de 装入寄存器ebx
引用符号地址在符号前加符号$, 如“movl $value, % eb