x86程序集中mov命令的有效性

时间:2013-03-27 12:39:02

标签: assembly x86 mov

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

mov al,bx

但是有这样的指示:

mov bx,al

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

mov al,bl        
mov bx,ax

1 个答案:

答案 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位通用寄存器。