OPERAND-SIZE和ADDRESS-SIZE屬性

當處理器在保護模式下執行時,每一個代碼段都具有默認的OPERAND-SIZE和ADDRESS-SIZE屬性。這些屬性通過segment descriptor中的D flag確定,當D flag爲1時,OPERAND-SIZE和ADDRESS-SIZE爲32,否則爲16。當處理器在實地址模式、虛8086模式或SMM模式,默認的OPERAND-SIZE和ADDRESS-SIZE爲16。


當OPERAND-SIZE和ADDRESS-SIZE爲16-bit時,操作數可以是8或16bit;爲32-bit時,操作數可以是8或32bit。可以在指令前加前綴以改變默認的OPERAND-SIZE和ADDRESS-SIZE,並且前綴僅影響與其緊鄰的指令。下表顯示了D flag和前綴對OPERAND-SIZE和ADDRESS-SIZE影響:

詳細內容請參見Intel Architecture Software Developer's Manual Volume 1詳細內容請參見Intel Architecture Software Developer's Manual Volume 1


下面舉個例子說明一下,D flag=1:

add %cx, %dx 機器碼是66 01 CA
add %ecx, %edx 機器碼是01 CA
add %cl, %dl 機器碼是00 CA

add register1 to register2 編碼是0000 000w : 11 reg1 reg2


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