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填充。
相關詞條
-
SYSTEMTIME
先把它們轉換為dword類型,用MOVZX指令就可以實現...
-
彙編指令大全
1. 通用數據傳送指令.MOV 傳送字或位元組.MOVSX 先符號擴展,再傳送.MOVZX 先零擴展,再傳送.PUSH 把字壓入堆疊.POP 把字彈出堆疊.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI...
-
彙編指令
數據傳輸它們在存儲器和暫存器、暫存器和輸入輸出連線埠之間傳送數據。1. 通用數據傳送指令MOV 傳送字或位元組.MOVSX 先符號擴展,再傳送.MOVZX 先零擴展,再傳送.PUSH 把字壓入堆疊.POP 把字彈出堆疊...
數據傳輸 算術運算 邏輯運算 串指令 程式轉移指令 -
64位擴展技術
概念 什麼是64位技術,64位技術又能為你的電腦帶來什麼樣的提升?簡單點來說,隨著硬體的升級及電腦計算速率的提升,原有的32...
概念 AMD64位技術 EM64T技術 Intel的64位擴展技術