クラスで、16ビットレジスタを8ビットレジスタに移動するのは有効な命令ではないことを学びました。たとえば、このコマンドは無効です。
mov al,bx
しかし、このような指示はありますか?
mov bx,al
または、2つのレジスタのサイズを等しくする必要がありますか?以下のように:
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ビットの汎用レジスタまで。