1

我在课堂上了解到,将 16 位寄存器移动到 8 位寄存器不是有效指令。例如,此命令无效:

mov al,bx

但是有没有这样的指令:

mov bx,al

或者两个寄存器的大小必须相等?如下所示:

mov al,bl        
mov bx,ax
4

1 回答 1

6

我可以写命令吗:mov bx,al

不,但你可以

movsx bx,al  ; sign-extend al into bx
             ; the upper half of bx will be filled with the most significant
             ; bit of al. For example 0x40 becomes 0x0040, while 0xC0
             ; becomes 0xFFC0. 

或者

movzx bx,al  ; zero-extend al into bx
             ; the upper half of bx will be filled with zeroes 


同样从 16 位通用寄存器到 32 位通用寄存器。

于 2013-03-27T12:40:44.623 回答