为什么汇编指令错了?

时间:2014-07-20 09:02:00

标签: assembly

装配说明我们:

movb $ 0xff,(%bl)

我的问题:

汇编指令错误,答案说%bl不能是地址寄存器。我无法理解这个答案。请帮帮我。(这是32位计算机,AT& A汇编语言)

2 个答案:

答案 0 :(得分:3)

由于这是32位模式汇编,因此在32位寄存器中只能 一个地址。构造( )使用内部的寄存器(或表达式)作为地址,%bl是8位寄存器,因此指令是不连贯的。我认为它甚至无法编码。

答案 1 :(得分:1)

对于x86 CPU,所有8位寄存器和16位寄存器ax,cx和dx不能用作括号[]中的地址寄存器,但bx,si,di(默认段DS)和bp和sp (使用默认段SS)和80386+所有32位寄存器。