天天看點

16位和32位的80X86彙編語言的差別

  • 需要注意的是彙編不是一種語言,不同平台有不同的彙編語言對應,因為彙編和作業系統平台相關,是以彙編語言沒有移植性。對于IA-32架構平台而言,選用的32位80386彙編語言,也就隻說讨論的作業系統平台是32位的,可以執行檔案的格式也是32位而不是64位或16位的。
  • 實際分析中要知道研究的程式是運作在什麼平台上,以選擇相應的彙編語言,對應IA-32架構而言,IA-16架構的彙編語言原理其實和IA-32的彙編語言一樣,學習過16位的80X86彙編語言的人隻需要花一點時間就可以轉到32位80386彙編語言上。

16位作業系統與32位作業系統的80x86彙編語言主要差別如下:

  1. 16作業系統中的中斷調用相當于32位作業系統中的API調用。16位作業系統的中段位址和偏移位址在32位中消失了,在32位作業系統中統一采用平坦的記憶體位址模式尋址。
  2. 16位作業系統中的程式運作在RING0級,也就是說普通程式和作業系統程式運作在同一個級别并且擁有最高權限,而32位作業系統中的程式一般隻擁有GING3級别運作權限,程式的所有操作都受到作業系統控制,若程式要獲得RING0操作特權隻能通過驅動程式實作。
  3. 16位作業系統的可執行檔案格式和32位作業系統的可執行檔案格式不同,在32位的Windows作業系統中,可執行檔案的格式加PE格式,32位的Windows作業系統運作在CPU的保護之上,而16位的系統則運作在CPU的實模式上。

什麼是IA-32?

IA-32(Intel Architecture),英特爾體系架構,英特爾從486開始采用,也就是X86-32架構,在同一時間内可以處理32位進制資料。CPU的工作寬度是32位。其它公司在軟硬體方面都相容此架構,也列屬于IA-32架構。

網名:浩秦;

郵箱:root#landv.pw;

隻要我能控制一個國家的貨幣發行,我不在乎誰制定法律。金錢一旦作響,壞話隨之戛然而止。

繼續閱讀