標籤: 暫無標籤

該指令屬386及其後繼機型可用指令。 執行操作:(DST)←零擴展(SRC),傳送時把源操作數零擴展(不管源操作數的符號是否為1,高位均擴展為零 )送入目的寄存器。可以是8位零擴展到16位或32位;也可以是16位零擴展到32位。

  彙編語言數據傳送指令MOV的變體。無符號擴展,並傳送。

  movzx一般用於將較小值拷貝到較大值中。 這個指令是非常有用的,大家以後學程序設計的話,如果需要處理windows中的消息,例如WM_COMMAND消息,這個消息結構的wParam的高16位是通知碼,而低16位則是命令id。有時候需要判斷命令id的話,則需要將這個wparam的低16位擴展成32位的,並且其餘位用0填充。這就用到了movzx。

  movzx是將源操作數的內容拷貝到目的操作數,並將該值0擴展至16位或者32位。但是它只適用於無符號整數。 他大致下面的三種格式。

  movzx 32位通用寄存器, 8位通用寄存器/內存單元

  movzx 32位通用寄存器, 16位通用寄存器/內存單元

  movzx 16位通用寄存器, 8位通用寄存器/內存單元

  舉個例子。例如

  令eax=00304000h

  若執行 movzx eax, ax后 eax = 00004000h 。

  若執行 movzx eax, ah后 eax = 00000040h。

  //windows內存00304000h存放在內存為

  //00 40 30 00(這裡請參見大端小端存儲方式)所以ax = 4000h ah = 40h

  //請注意不要搞混了

  又如:

  MOV BL,80H

  MOVZX AX,BL

  運行完以上彙編語句之後,AX的值為0080H。由於BL為80H,最高位也即符號位為1,但在進行無符號擴展時,其擴展的高8位均為0,故賦值AX為0080H。

  總結:

  movzx其實就是將我們的源操作數取出來,然後置於目的操作數,目的操作數其餘位用0填充。
上一篇[MO原理]    下一篇 [美國海軍]

相關評論

同義詞:暫無同義詞