內容簡介
《x86彙編語言:從實模式到保護模式》主要講述INTEL x86處理器的16位實模式、32位保護模式,至於虛擬8086模式,則是為了兼容傳統的8086程式,現在看來已經完全過時,不再進行講述。《x86彙編語言:從實模式到保護模式》的特色之一是提供了大量典型的原始碼,這些代碼以及相配套的工具程式可以到書中指定的網站,或者電子工業出版社華信教育資源網搜尋下載。
圖書目錄
第1部分 預備知識
第1章 十六進制計數法
1.1 二進制計數法回顧
1.1.1 關於二進制計數法
1.1.2 二進制到十進制的轉換
1.1.3 十進制到二進制的轉換
1.2 十六進制計數法
1.2.1 十六進制計數法的原理
1.2.2 十六進制到十進制的轉換
1.2.3 十進制到十六進制的轉換
1.3 為什麼需要十六進制
本章習題
第2章 處理器、記憶體和指令
2.1 最早的處理器
2.2 暫存器和算術邏輯部件
2.3 記憶體儲器
2.4 指令和指令集
2.5 古老的Intel 8086處理器
2.5.18086的通用暫存器
2.5.2 程式的重定位難題
2.5.3 記憶體分段機制
2.5.48086的記憶體分段機制
本章習題
第3章 彙編語言和彙編軟體
3.1 彙編語言簡介
3.2 NASM編譯器
3.2.1 NASM的下載和安裝
3.2.2 代碼的書寫和編譯過程
3.2.3 用HexView觀察編譯後的機器代碼
本章習題
第4章 虛擬機的安裝和使用
4.1 計算機的啟動過程
4.1.1 如何將編譯好的程式提交給處理器
4.1.2 計算機的加電和復位
4.1.3 基本輸入輸出系統
4.1.4 硬碟及其工作原理
4.1.5 一切從主引導扇區開始
4.2 創建和使用虛擬機
4.2.1 別害怕,虛擬機是軟體
4.2.2 下載和安裝Oracle VM VirtualBox
4.2.3 虛擬硬碟簡介
4.2.4 練習使用FixVhdWr工具向虛擬硬碟寫數據
第2部分 實模式
第5章 編寫主引導扇區代碼
5.1 本章代碼清單
5.2 歡迎來到主引導扇區
5.3 注釋
5.4 在螢幕上顯示文字
5.4.1 顯示卡和顯存
5.4.2 初始化段暫存器
5.4.3 顯存的訪問和ASCII代碼
5.4.4 顯示字元
5.4.5 MOV指令的格式
5.5 顯示標號的彙編地址
5.5.1 標號
5.5.2 如何顯示十進制數字
5.5.3 在程式中聲明並初始化數據
5.5.4 分解數的各個數位
5.5.5 顯示分解出來的各個數位
5.5 使程式進入無限循環狀態
5.7 完成並編譯主引導扇區代碼
5.7.1 主引導扇區有效標誌
5.7.2 代碼的保存和編譯
5.8 載入和運行主引導扇區代碼
5.8.1 把編譯後的指令寫入主引導扇區
5.8.2 啟動虛擬機觀察運行結果
5.9 程式的調試技術
5.9.1 開源的Bochs虛擬機軟體
5.9.2 Bochs下的程式調試入門
本章習題
第6章 相同的功能,不同的代碼
6.1 代碼清單6-1
6.2 跳過非指令的數據區
6.3 在數據聲明中使用字面值
6.4 段地址的初始化
6.5 段之間的批量數據傳送
6.6 使用循環分解數位
6.7 計算機中的負數
6.7.1 無符號數和有符號數
6.7.2 處理器視角中的數據類型
6.8 數位的顯示
6.9 其他標誌位和條件轉移指令
6.9.1 奇偶標誌位PF
6.9.2 進位標誌CF
6.9.3 溢出標誌OF
6.9.4 現有指令對標誌位的影響
6.9.5 條件轉移指令
6.10 NASM編譯器的$和$$標記
6.11 觀察運行結果
6.12 本章程式的調試
6.12.1 調試命令“n”的使用
6.12.2 調試命令“u”的使用
6.12.3 用調試命令“info”察看標誌位
本章習題
第7章 比高斯更快的計算
7.1 從1加到100的故事
7.2 代碼清單7-1
7.3 顯示字元串
7.4 計算1到100的累加和
7.5 累加和各個數位的分解與顯示
7.5.1 棧和棧段的初始化
7.5.2 分解各個數位並壓棧
7.5.3 出棧並顯示各個數位
7.5.4 進一步認識堆疊
7.6 程式的編譯和運行
7.6.1 觀察程式的運行結果
7.6.2 在調試過程中察看棧中內容
7.78086處理器的定址方式
7.7.1 暫存器定址
7.7.2 立即定址
7.7.3 記憶體定址
本章習題
第8章 硬碟和顯示卡的訪問與控制
8.1 本章代碼清單
8.2 用戶程式的結構
8.2.1 分段、段的彙編地址和段內彙編地址
8.2.2 用戶程式頭部
8.3 載入程式(器)的工作流程
8.3.1 初始化和決定載入位置
8.3.2 準備載入用戶程式
8.3.3 外圍設備及其接口
8.3.4 I/O連線埠和連線埠訪問
8.3.5 通過硬碟控制器連線埠讀扇區數據
8.3.6 過程調用
8.3.7 載入用戶程式
8.3.8 用戶程式重定位
8.3.9 將控制權交給用戶程式
8.3.10 處理器的無條件轉移指令
8.4 用戶程式的工作流程
8.4.1 初始化段暫存器和棧切換
8.4.2 調用字元串顯示例程
8.4.3 過程的嵌套
8.4.4 螢幕游標控制
8.4.5 取當前游標位置
8.4.6 處理回車和換行字元
8.4.7 顯示可列印字元
8.4.8 滾動螢幕內容
8.4.9 重置游標
8.4.10 切換到另一個代碼段中執行
8.4.11 訪問另一個數據段
8.5 編譯和運行程式並觀察結果
本章習題
第9章 中斷和動態時鐘顯示
9.1 外部硬體中斷
9.1.1 非禁止中斷
9.1.2 可禁止中斷
9.1.3 實模式下的中斷向量表
9.1.4 實時時鐘、CMOS RAM和BCD編碼
9.1.5 代碼清單9-1
9.1.6 初始化8259、RTC和中斷向量表
9.1.7 使處理器進入低功耗狀態
9.1.8 實時時鐘中斷的處理過程
9.1.9 代碼清單9-1的編譯和運行
9.2 內部中斷
9.3 軟中斷
9.3.1 BIOS中斷
9.3.2 代碼清單9-2
9.3.3 從鍵盤讀字元並顯示
9.3.4 代碼清單9-2的編譯和運行
本章習題
……
第3部分 32位保護模式
附錄1 本書用到的x86指令及其頁碼
附錄2 本書用到的重要圖表及其頁碼