我在课堂上了解到,将 16 位寄存器移动到 8 位寄存器不是有效指令。例如,此命令无效:
mov al,bx
但是有没有这样的指令:
mov bx,al
或者两个寄存器的大小必须相等?如下所示:
mov al,bl
mov bx,ax
我可以写命令吗: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 位通用寄存器。