MOVSX
先符號擴展,再傳送
格式:
MOVSX 操作數A ,操作數B //操作數B的空間小於A
比如說我們使用命令:
movsx eax,bx
bx是16位,eax是32位,傳值過程:
- 先用bx的符號位把eax高16填滿,
- bx傳值到eax的低16位
我們觀察EAX的值,和EBX的值,bx現在是A123,符號位是1(用計算器將其轉爲二進制,最高位就是符號位)
執行movsx eax,bx
,eax變成FFFFA123
MOVZX
先零擴展,再傳送
MOVZX不用像MOVSX哪樣,先判斷符號,再填充,MOVZX直接用0來填充
格式:
MOVZX 操作數A ,操作數B //B的空間小於A
還是用上面的命令:
movsx eax,bx
這次就不用判斷bx的符號了,eax的高16位直接用0填充,低16位用bx填充
還是用上面的數據,執行完,EAX爲0000A123