下面的指令有什么错:
movb $0xF, (%ebx)
答案指出%ebx不能用作地址寄存器。我是新手,有人能解释一下这是什么意思吗?如果指令是movb $0xF, (%rbx),它是否有效?地址寄存器到底是什么?最后,在寄存器周围写括号是否直接指向寄存器所指向的内存位置?
%ebx
movb $0xF, (%rbx)
doinxwow1#
movb $0xf, (%ebx) 1没有错。即使在64位模式下,它的罚款每sè。当然x32 programs不会介意使用它,r/e/bx当然可以用作基址寄存器(事实上,bx是少数几个可以在16位模式下用作基址的原始寄存器之一)。我的建议是找到一个更好的学习来源。1,在64位和16位模式下正确组装为67 C6 03 0F,在32位模式下没有地址大小覆盖字节(67)。
movb $0xf, (%ebx)
r/e/bx
bx
67 C6 03 0F
67
1条答案
按热度按时间doinxwow1#
movb $0xf, (%ebx)
1没有错。即使在64位模式下,它的罚款每sè。当然x32 programs不会介意使用它,
r/e/bx
当然可以用作基址寄存器(事实上,bx
是少数几个可以在16位模式下用作基址的原始寄存器之一)。我的建议是找到一个更好的学习来源。
1,在64位和16位模式下正确组装为
67 C6 03 0F
,在32位模式下没有地址大小覆盖字节(67
)。