傳送—填充指令(Move-and-FillInstruction)

字號:

傳送—填充指令(Move-and-Fill Instruction)
    傳送—填充指令是把位數(shù)短的源操作數(shù)傳送給位數(shù)長的目的操作數(shù)。指令格式如下:
    MOVSX/MOVZX Reg/Mem, Reg/Mem/Imm     ;80386+
    其中:80386+表示80386及其之后的CPU,其它類似符號含義類同,不再說明。
    指令的主要功能和限制與MOV指令類似,不同之處是:在傳送時,對目的操作數(shù)的高位進行填充。根據(jù)其填充方式,又分為:符號填充和零填充。
    (a). MOVSX的執(zhí)行效果
    (b). MOVZX的執(zhí)行效果
    、符號填充指令MOVSX(Move with Sign-Extend)
    MOVSX的填充方式是:用源操作數(shù)的符號位來填充目的操作數(shù)的高位數(shù)據(jù)位。
    、零填充指令MOVZX(Move with Zero-Extend)
    MOVZX的填充方式是:恒用0來填充目的操作數(shù)的高位數(shù)據(jù)位。
    例5.1 已知:AL=87H,指令MOVSX CX, AL,MOVZX DX, AL執(zhí)行后,問CX和DX的值是什么?
    解:根據(jù)傳送-填充指令的填充方式可知:
    指令MOVSX CX, AL執(zhí)行后,(CX)=0FF87H,指令MOVZX DX, AL執(zhí)行后,(DX)=0087H。
    從上例可看出,兩條指令的源操作數(shù)完全一樣,但因為它們的填充方式不同,所得到的結果而就不同。
    試比較下列指令,分析它們執(zhí)行結果的相同和不同之處:
    MOV AX, 87H   MOVSX AX, 87H   MOVZX AX, 87H
    3、交換指令XCHG(Exchange Instruction)
    交換指令XCHG是兩個寄存器,寄存器和內存變量之間內容的交換指令,兩個操作數(shù)的數(shù)據(jù)類型要相同。其指令格式如下:
    XCHG Reg/Mem, Reg/Mem
    該指令的功能和MOV指令不同,后者是一個操作數(shù)的內容被修改,而前者是兩個操作數(shù)都會發(fā)生改變。寄存器不能是段寄存器,兩個操作數(shù)也不能同時為內存變量。
    例5.2 已知:AX=5678H,BX=1234H,指令XCHG AX, BX執(zhí)行后,AX和BX的值是什么?
    解:這是兩個寄存器內容進行交換,指令執(zhí)行后,有:(AX)=1234H,(BX)=5678H。