定 價:69.5 元
叢書名:面向“工程教育認證”計算機系列課程規(guī)劃教材
- 作者:楊季文
- 出版時間:2017/8/1
- ISBN:9787302476344
- 出 版 社:清華大學出版社
- 中圖法分類:TP313
- 頁碼:493
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書設定新目標,采用新方法,基于新平臺,講解IA32結(jié)構(gòu)系列(80x86系列)CPU的32位編程。本書分為4個部分: *部分利用VC 2010環(huán)境的嵌入?yún)R編和目標代碼,介紹IA32系列(80x86系列)CPU的基本功能和32位編程技術(shù); 第二部分利用開源匯編器NASM、開源虛擬機VirtualBox和模擬器Bochs,介紹匯編語言和計算機系統(tǒng)底層輸入輸出的實現(xiàn)方式; 第三部分詳細講解保護方式編程技術(shù),生動展示保護方式編程細節(jié); 第四部分簡要說明相關(guān)軟件工具的使用。
本書依托高級語言,講解低級語言;利用虛擬平臺,演示系統(tǒng)原理。*部分和第二部分可作為高校計算機及電子信息類專業(yè)學生學習匯編語言的教材,第三部分可作為編程愛好者學習保護方式編程技術(shù)的教材或參考書。
全面講解IA-32結(jié)構(gòu)系列(80x86系列)處理器的32位編程。新目標:理解系統(tǒng)原理,提升編程技能。新方法:依托高級語言,講解低級語言。新平臺:利用虛擬機器,運行示例代碼。
前言
隨著計算資源的日益豐富和開發(fā)環(huán)境的日趨完善,直接運用匯編語言編寫程序的場合越來越少,因此匯編語言課程需要新定位,匯編語言課程需要新概念。
在這樣的背景下,本書設定新的目標,采用新的方法,基于新的平臺,講解IA32結(jié)構(gòu)系列(80x86系列)CPU的32位編程。學習匯編語言的新目標是深入理解計算機系統(tǒng)的工作原理,全面提升高級語言程序設計能力,而不再是熟練運用匯編語言編寫程序。匯編語言課程將起到上承高級語言,下啟機器系統(tǒng)的橋梁作用。學習匯編語言的新方法是依托高級語言。在學習匯編語言之前,通常已經(jīng)具備高級語言(C或者C 語言等)程序設計的基礎。通過采用嵌入?yún)R編和分析目標代碼等方法,不僅可以降低學習和掌握匯編格式指令的難度,而且有助于知其然,知其所以然,有助于更好地掌握高級語言。實踐匯編語言的新平臺是虛擬機。目前虛擬機已經(jīng)十分流行,它是很理想的裸機。基于虛擬機不僅可以突破操作系統(tǒng)的約束,為所欲為地操縱機器,從而輕松調(diào)試設備驅(qū)動程序或者系統(tǒng)程序,而且有助于熟悉計算機系統(tǒng)的啟動過程,有助于明了計算機系統(tǒng)硬件和軟件的相互關(guān)系。
本書分為4個部分,共10章。第一部分由前五章組成,利用VC 2010環(huán)境的嵌入?yún)R編和目標代碼,講解IA32系列(80x86系列)CPU的基本功能和32位編程技術(shù)。第1章介紹基礎知識;
第2章說明IA32系列CPU的基本功能;
第3章和第4章講解利用IA32系列CPU的指令設計程序;
第5章分析VC源程序的目標代碼。第二部分由第6章、第7章和第8章組成,利用匯編器NASM和虛擬機,講解匯編語言和系統(tǒng)輸入輸出。第6章基于匯編器NASM介紹匯編語言;
第7章在介紹BIOS和主引導記錄之后,說明虛擬機的原理及其使用方法;
第8章基于虛擬機講解計算機系統(tǒng)底層輸入輸出的實現(xiàn)方式。第三部分是第9章,詳細講解基于IA32系列CPU的保護方式程序設計,該章內(nèi)容十分豐富。第四部分是第10章,簡要說明相關(guān)工具的使用,包括開源匯編器NASM、開源虛擬機VirtualBox和開源模擬器Bochs等。
本書依托高級語言,講解低級語言;
利用虛擬平臺,演示系統(tǒng)原理。第一部分和第二部分可作為學習匯編語言的教材,第三部分可作為學習保護方式編程技術(shù)的教材或參考書。本書還提供教學用PPT。
楊季文撰寫第1~4章和第6~9章,朱曉旭撰寫第5章,胡沁涵撰寫第10章,趙雷參與部分工作。楊季文負責全書統(tǒng)稿、定稿。
本書得到了指導老師錢培德教授的大力支持,在此表示衷心感謝。本書還得到了同事
朱巧明、呂強、李云飛和李培峰
等教授的大力幫助,在此表示感謝。還要感謝同事盧維亮、查偉忠、陳宇和王莉等老師的幫助。
由于編者時間倉促和水平所限,書中難免有不妥之處,懇請讀者批評指正。
作者
2017年6月
目錄
第1章基礎知識
1.1CPU簡介
1.1.1目標代碼
1.1.2基本功能
1.2匯編語言概念
1.2.1機器指令
1.2.2匯編格式指令
1.2.3匯編語言及其優(yōu)缺點
1.3數(shù)據(jù)的表示和存儲
1.3.1數(shù)值數(shù)據(jù)的表示
1.3.2非數(shù)值數(shù)據(jù)的表示
1.3.3基本數(shù)據(jù)類型
1.3.4數(shù)據(jù)的存儲
習題
第2章IA32處理器基本功能
2.1IA32處理器簡介
2.1.1IA32系列處理器
2.1.2保護方式和實地址方式
2.2通用寄存器及使用
2.2.1通用寄存器
2.2.2簡單傳送指令
2.2.3簡單加減指令
2.2.4VC嵌入?yún)R編和實驗
2.3標志寄存器及使用
2.3.1標志寄存器
2.3.2狀態(tài)標志
2.3.3狀態(tài)標志操作指令
2.3.4帶進位加減指令
2.4段寄存器及使用
2.4.1存儲器分段
2.4.2邏輯地址
2.4.3段寄存器
2.5尋址方式
2.5.1立即尋址方式和寄存器尋址方式
2.5.232位的存儲器尋址方式
2.5.3取有效地址指令
2.6指令指針寄存器和簡單控制轉(zhuǎn)移
2.6.1指令指針寄存器
2.6.2常用條件轉(zhuǎn)移指令
2.6.3比較指令和數(shù)值大小比較
2.6.4簡單的無條件轉(zhuǎn)移指令
2.7堆棧和堆棧操作
2.7.1堆棧
2.7.2堆棧操作指令
習題
第3章程序設計初步
3.1堆棧的作用
3.1.1過程調(diào)用和返回指令
3.1.2參數(shù)傳遞
3.1.3局部變量
3.2算術(shù)邏輯運算指令
3.2.1乘除運算指令
3.2.2邏輯運算指令
3.2.3移位指令
3.3分支程序設計
3.3.1分支程序設計示例
3.3.2無條件和條件轉(zhuǎn)移指令
3.3.3多路分支的實現(xiàn)
3.4循環(huán)程序設計
3.4.1循環(huán)程序設計示例
3.4.2循環(huán)指令
3.4.3多重循環(huán)設計舉例
3.5子程序設計
3.5.1子程序設計要點
3.5.2子程序設計舉例
3.5.3子程序調(diào)用方法
習題
第4章字符串操作和位操作
4.1字符串操作
4.1.1字符串操作指令
4.1.2重復操作前綴
4.1.3應用舉例
4.2位操作
4.2.1位操作指令
4.2.2應用舉例
4.3條件設置字節(jié)指令
4.3.1條件設置字節(jié)指令概述
4.3.2應用舉例
習題
第5章VC目標代碼的閱讀理解
5.1匯編語言形式的目標代碼
5.1.1基本樣式
5.1.2符號化表示
5.2C語言部分編譯的解析
5.2.1類型的轉(zhuǎn)換
5.2.2表達式求值
5.2.3指針的本質(zhì)
5.2.4結(jié)構(gòu)體變量
5.3C 部分功能實現(xiàn)細節(jié)
5.3.1引用
5.3.2通過引用傳遞參數(shù)
5.3.3函數(shù)重載
5.3.4虛函數(shù)
5.4目標程序的優(yōu)化
5.4.1關(guān)于程序優(yōu)化
5.4.2使大小最小化
5.4.3使速度最大化
5.4.4內(nèi)存地址對齊
5.5C庫函數(shù)分析
5.5.1函數(shù)strlen
5.5.2函數(shù)strpbrk
5.5.3函數(shù)memset
5.6C程序的目標代碼
5.6.1Base64編碼操作
5.6.2源程序
5.6.3目標程序
習題
第6章匯編語言
6.1實方式執(zhí)行環(huán)境
6.1.1寄存器和指令集
6.1.2存儲器分段管理
6.1.316位的存儲器尋址方式
6.2源程序和語句
6.2.1匯編語言源程序
6.2.2語句及其格式
6.3操作數(shù)表示
6.3.1常數(shù)
6.3.2數(shù)值表達式
6.3.3有效地址
6.3.4數(shù)據(jù)類型說明
6.4偽指令語句和變量
6.4.1數(shù)據(jù)定義語句
6.4.2存儲單元定義語句
6.4.3常數(shù)符號聲明語句
6.4.4演示舉例
6.5段聲明和段間轉(zhuǎn)移
6.5.1段聲明語句
6.5.2無條件段間轉(zhuǎn)移指令
6.5.3段間過程調(diào)用和返回指令
6.6目標文件和段模式
6.6.1目標文件
6.6.2段模式聲明語句
6.7宏
6.7.1宏指令的聲明和使用
6.7.2單行宏的聲明和使用
6.7.3宏相關(guān)方法
習題
第7章BIOS和虛擬機
7.1BIOS及其調(diào)用
7.1.1BIOS簡介
7.1.2鍵盤輸入和顯示輸出
7.1.3應用舉例
7.2磁盤及其讀寫
7.2.1磁盤簡介
7.2.2磁盤讀寫
7.2.3主引導記錄分析
7.3虛擬機
7.3.1虛擬機工作原理
7.3.2虛擬硬盤文件
7.3.3直接寫屏顯示方式
7.4一個簡易的加載器
7.4.1加載方法
7.4.2程序加載器
7.4.3工作程序示例
習題
第8章輸入輸出和中斷
8.1輸入輸出的基本概念
8.1.1I/O端口地址
8.1.2I/O指令
8.1.3數(shù)據(jù)傳送方式
8.1.4實時時鐘的存取
8.2查詢傳送方式
8.2.1查詢傳送流程
8.2.2實時時鐘的穩(wěn)妥存取
8.3中斷概述
8.3.1中斷的概念
8.3.2中斷向量表
8.3.3中斷響應過程
8.3.4內(nèi)部中斷
8.3.5外部中斷
8.3.6中斷優(yōu)先級和中斷嵌套
8.4中斷處理程序設計
8.4.1鍵盤中斷處理程序
8.4.2除法出錯中斷處理程序
8.4.3擴展顯示I/O程序
8.4.4時鐘顯示程序
習題
第9章保護方式程序設計
9.1概述
9.1.1存儲器管理
9.1.2特權(quán)級設置
9.2分段存儲管理機制
9.2.1存儲段
9.2.2存儲段描述符
9.2.3全局和局部描述符表
9.2.4段選擇子
9.2.5邏輯地址到線性地址的轉(zhuǎn)換
9.3存儲管理寄存器和控制寄存器
9.3.1存儲管理寄存器
9.3.2控制寄存器
9.3.3相關(guān)存取指令
9.4實方式與保護方式切換示例
9.4.1實方式和保護方式切換的演示(示例一)
9.4.2不同模式代碼段切換的演示(示例二)
9.4.3局部描述符表使用的演示(示例三)
9.5分頁存儲管理機制
9.5.1存儲分頁
9.5.2線性地址到物理地址的轉(zhuǎn)換
9.5.3頁級保護和虛擬存儲器支持
9.5.4分頁存儲管理機制的演示(示例四)
9.6任務狀態(tài)段和控制門
9.6.1系統(tǒng)段描述符
9.6.2門描述符
9.6.3任務狀態(tài)段
9.7控制轉(zhuǎn)移
9.7.1任務內(nèi)相同特權(quán)級的轉(zhuǎn)移
9.7.2相同特權(quán)級轉(zhuǎn)移的演示(示例五)
9.7.3任務內(nèi)不同特權(quán)級的變換
9.7.4特權(quán)級變換的演示(示例六)
9.7.5任務切換
9.7.6任務切換的演示(示例七)
9.8中斷和異常的處理
9.8.1異常概念
9.8.2異常類型
9.8.3中斷和異常的處理
9.8.4中斷處理的演示(示例八)
9.8.5異常處理的演示(示例九)
9.9保護機制小結(jié)
9.9.1轉(zhuǎn)移途徑小結(jié)
9.9.2特權(quán)指令
習題
第10章實驗工具的使用
10.1匯編器NASM的使用
10.1.1NASM簡介
10.1.2NASM的使用
10.1.3鏈接器及其使用
10.2虛擬機管理器VirtualBox的使用
10.2.1VirtualBox簡介
10.2.2VirtualBox的使用
10.2.3關(guān)于硬件加速
10.3模擬器Bochs的使用
10.3.1Bochs簡介
10.3.2Bochs的配置與運行
10.3.3控制臺調(diào)試
10.3.4圖形化界面調(diào)試
10.4VHDWriter的使用
參考文獻