我在课堂上学到了将16位寄存器移到8位寄存器的有效指令。例如,此命令无效:
mov al,bx
但是有这样的指示:
mov bx,al
或者2个寄存器的大小必须相等吗?如下所示:
mov al,bl
mov bx,ax
答案 0 :(得分: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位通用寄存器。