MOVSX和MOVZX

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
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章