Linux上的Masm32:为什么mov [bx],ax工作,但mov [ax],bx(或mov [bl],al)不?

时间:2013-01-08 15:59:04

标签: linux assembly masm

当我尝试

mov [ax], bx

我收到以下错误:invalid effective address 同样适用于mov [al], bl或类似的东西。

如果我尝试

mov [bx], ax

它有效。那么ebx的低字节有什么特别之处,我怎样才能在mov [al], bl的行中完成某些事情,或者只是交换bxax的两个字节的内容,{{1 }},等等。 ?

提前感谢任何有用的事情:)

1 个答案:

答案 0 :(得分:4)

使用[bx]称为“寄存器间接寻址模式”。在16位模式下,可以使用以下寄存器:bxbpsidi

有关详细信息,请参阅The Register Indirect Addressing Modes

  

我如何能够按照mov [al], bl

的方式完成某些事情

这没有多大意义,因为它会使用al的8位值作为地址,在这种情况下地址是16位。如果您只是想将bl的值移到al,则方括号是不必要的:

mov al, bl