MOVZX

彙編語言數據傳送指令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填充。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章