以下指令有什么问题: movb $0xF, (%ebx) 答案指出%ebx不能用作地址寄存器。我是装配新手,有人可以解释一下这意味着什么吗?
如果指令是 movb $0xF, (%rbx) 那是否有效?另外,地址寄存器到底是什么?最后,在寄存器周围写括号是否直接引用寄存器指向的内存位置?
没有任何问题
movb $0xf, (%ebx)
1。
即使在 64 位模式下,它本身也很好。当然x32程序不会介意使用它,并且
r/e/bx
当然可以用作基址寄存器(事实上bx
是少数可以在16位模式下充当基址的原始寄存器之一)。
我的建议是找到更好的学习来源。
1,在 64 位和 16 位模式下正确组装为
67 C6 03 0F
,在 32 位模式下没有地址大小覆盖字节 (67
)。