本書融合計算機學科的“計算機組成原理”、“微機原理”和“匯編語言程序設計”課程的基本內容,同時補充“數字邏輯”課程基礎知識、延伸有“計算機系統(tǒng)結構”課程核心概念,結合C語言和匯編語言編程實踐,從軟件角度理解計算機系統(tǒng)的工作原理,為軟件編程應用和硬件技術深入奠定學科基礎。
我國計算機科學與技術專業(yè),尤其是計算機工程方向,往往開設多門有關計算機組成與結構的課程,一般包括“數字邏輯” “計算機組成原理” “匯編語言程序設計” “微機原理及接口技術”和“計算機系統(tǒng)結構”等。然而,計算機相關的其他專業(yè)并不要求全面深入的硬件技術知識,也沒有足夠的學時展開如此眾多的教學內容。本書基于軟件工程專業(yè)的課程教學實踐,融合上述硬件技術相關課程的基本內容,從技術應用角度通過軟件編程介紹計算機硬件組成和計算機工作原理。
在多門課程內容的融合過程和具體的教學實踐中,需要努力解決好諸多教學問題,這也就形成了本書內容的特點。
1. 融合計算機組成原理和微機技術實例
傳統(tǒng)上,計算機組成原理面向計算機學科,主要介紹計算機硬件的組成結構和工作原理。而微機原理主要針對電子、通信等機電類專業(yè),從應用角度介紹通用微型計算機(簡稱為微機)的應用技術。本書采取通過實例理解原理的基本思路,即以計算機組成原理為主體,結合微機原理(IA-32處理器和PC)實例。這樣,一方面利于學生掌握原理,避免重復學習;另一方面使學生熟悉廣泛應用的通用微機系統(tǒng),為應用奠定基礎。
2. 以C和匯編語言實踐貫穿邏輯主線
雖然本書以計算機工作原理和硬件技術為主體,但教學內容中使用C(或C++)高級語言、底層匯編語言編程作為實踐環(huán)節(jié)。從第1章開始引入C語言編程環(huán)境(DEVC),第2章主要以C語言編程體會數據表示的原理,第5、6章融合C語言編譯程序生成的匯編語言代碼和MASM匯編語言程序,相互對照,最終目的是使學生掌握匯編語言編程。這使得本書內容從高級語言到低級語言,再深入到計算機硬件,貫穿計算機層次結構;也使得學生能夠自然地從軟件編程過渡到計算機硬件原理,為進一步學習計算機組成、微機接口技術、嵌入式系統(tǒng)應用奠定基礎。
3. 面向軟件開發(fā)和系統(tǒng)應用取舍課程內容
融合多門課程,需要在內容上進行合理取舍,本書的主要原則是:面向軟件開發(fā)和系統(tǒng)應用,不以設計處理器、硬件電路為目標,側重工作原理、硬件電路的外特性。例如,簡述運算原理、微程序和硬布線特點,舍棄運算器、微程序和硬布線控制器的設計實現(xiàn);重點介紹基本指令,突出匯編語言程序結構;只依靠計數器體會接口技術,簡介其他接口,引入指令流水線、指令級并行、數據級并行和線程級并行等系統(tǒng)結構先進技術。具體教學內容的選擇則采取刪繁就簡的基本思路。例如,數據編碼主要介紹定點整數格式、IEEE 754標準的浮點格式,不展開定點小數格式、非標準浮點格式相關內容。再如,對于存儲器芯片,說明各種存儲器芯片特點,而不是內部工作原理;闡明地址譯碼原理,而不是連接細節(jié)。
4. 補充數字邏輯基礎知識
對于缺乏硬件電路知識的學生,本書補充了數字邏輯基礎知識。這使得無須單獨開設“數字邏輯”先修課程,數字邏輯只作為本書的一章。教學內容涉及基本概念和核心原理,具體包括:邏輯代數,門電路(含三態(tài)門),組合邏輯電路的編碼器、譯碼器、加法器,時序邏輯電路的觸發(fā)器、寄存器、計數器,PLD和電子設計自動化(EDA)。教學要求以理解為主,滿足后續(xù)內容的需求即可。
5. 淺顯易懂、圖文并茂的寫作風格
為了使得抽象的計算機工作原理易于理解,本書努力做到描述清晰準確、淺顯易懂,盡量使用圖表提供形象化的釋義。重點內容常結合程序示例,讓學生在上機實踐中體會問題所在,激發(fā)學生探究的興趣,然后再答疑解惑、詳細講解。每章之后編排有較多習題,分成兩種類型:一類包括簡答題、判斷題和填空題,用于使學生掌握基本概念和要點,通過課堂提問與交互方式進行,便于了解學生自習情況;另一類包括問答、計算、編程等應用題,重點考察學生對計算機工作原理的理解和應用能力,在學生提交作業(yè)后進行課堂解答。部分題目有一定難度,適合學生深入研討。
本書由錢曉捷編著,感謝程楠、石磊、關國利、張青、穆玲玲、姚俊婷等同事的幫助,感謝華章公司的支持。限于水平,書中難免存在不當之處,歡迎廣大師生交流指正(作者的電子郵箱:iexjqian@zzu.edu.cn)。
編 者
2018年5月
前言
教學建議
第1章 計算機系統(tǒng)概述 1
1.1 計算機的發(fā)展 1
1.1.1 計算機發(fā)展概況 1
1.1.2 微型計算機的發(fā)展 3
1.1.3 Intel 80x86系列處理器 5
1.2 馮·諾依曼計算機結構 6
1.2.1 二進制編碼 7
1.2.2 存儲程序和程序控制 8
1.2.3 順序執(zhí)行 9
1.2.4 組成部件 9
1.3 計算機系統(tǒng)的組成 10
1.3.1 計算機的硬件組成 10
1.3.2 計算機的總線結構 14
1.3.3 計算機系統(tǒng)的層次結構 19
1.3.4 計算機系統(tǒng)的軟件組成 23
習題 28
第2章 數據表示 29
2.1 數制 29
2.1.1 二進制和十六進制 29
2.1.2 數制之間的轉換 31
2.2 整數編碼 33
2.2.1 定點整數格式 33
2.2.2 有符號整數編碼 34
2.2.3 整數的類型轉換 38
2.2.4 整數的加減運算及溢出 41
2.2.5 整數的移位運算 46
2.2.6 整數運算的數學性質 47
2.3 字符編碼 48
2.3.1 ASCII 48
2.3.2 Unicode 53
2.4 實數編碼 53
2.4.1 浮點數據格式 54
2.4.2 浮點運算的數學性質 61
習題 64
第3章 數字邏輯基礎 68
3.1 邏輯代數 68
3.1.1 邏輯關系 68
3.1.2 邏輯代數運算規(guī)則 73
3.1.3 邏輯函數的形式、轉換及化簡 76
3.2 邏輯門電路 78
3.2.1 門電路的實現(xiàn) 78
3.2.2 集成電路 80
3.2.3 三態(tài)門 82
3.3 組合邏輯電路 83
3.3.1 編碼器 84
3.3.2 譯碼器 85
3.3.3 加法器 87
3.3.4 多路開關 88
3.4 時序邏輯電路 88
3.4.1 觸發(fā)器 89
3.4.2 寄存器 93
3.4.3 計數器 94
3.5 可編程邏輯器件 94
3.5.1 PLD概述 95
3.5.2 電子設計自動化 96
習題 99
第4章 處理器 101
4.1 處理器的組成 101
4.1.1 控制器 101
4.1.2 運算器 103
4.2 處理器的結構 103
4.2.1 處理器的基本結構 104
4.2.2 8086的功能結構 105
4.2.3 80386的功能結構 106
4.2.4 Pentium的功能結構 107
4.3 寄存器 109
4.3.1 通用寄存器 109
4.3.2 專用寄存器 111
4.4 存儲器組織 113
4.4.1 存儲模型 113
4.4.2 工作方式 114
4.4.3 邏輯地址 115
習題 119
第5章 指令系統(tǒng) 121
5.1 指令格式 121
5.1.1 指令編碼 121
5.1.2 IA-32指令格式 124
5.2 匯編語言基礎 126
5.2.1 匯編語言的語句格式 126
5.2.2 匯編語言的源程序框架 128
5.2.3 匯編語言的開發(fā)過程 132
5.2.4 DEVC中C語言的開發(fā)過程 137
5.3 匯編語言的常量和變量 141
5.3.1 常量表達 141
5.3.2 變量應用 143
5.4 數據尋址 150
5.4.1 立即數尋址 150
5.4.2 寄存器尋址 151
5.4.3 存儲器尋址 151
5.4.4 數據尋址的組合 158
5.5 通用數據處理指令 159
5.5.1 數據傳送類指令 160
5.5.2 算術運算類指令 164
5.5.3 位操作類指令 168
習題 172
第6章 匯編語言程序設計 177
6.1 順序程序結構 177
6.2 分支程序結構 181
6.2.1 指令尋址 181
6.2.2 無條件轉移指令 182
6.2.3 條件轉移指令 184
6.2.4 單分支程序結構 190
6.2.5 雙分支程序結構 191
6.2.6 多分支程序結構 192
6.3 循環(huán)程序結構 195
6.3.1 循環(huán)指令 195
6.3.2 計數控制循環(huán) 198
6.3.3 條件控制循環(huán) 199
6.3.4 多重循環(huán) 200
6.4 子程序 201
6.4.1 子程序指令 202
6.4.2 子程序設計 205
6.4.3 寄存器傳遞參數 208
6.4.4 共享變量傳遞參數 210
6.4.5 堆棧傳遞參數 212
6.4.6 堆棧幀 215
習題 223
第7章 存儲系統(tǒng) 229
7.1 存儲系統(tǒng)的層次結構 229
7.1.1 技術指標 230
7.1.2 層次結構 231
7.1.3 局部性原理 232
7.2 主存儲器 235
7.2.1 讀寫存儲器 236
7.2.2 ROM 241
7.2.3 半導體存儲器的連接 245
7.3 高速緩沖存儲器 249
7.3.1 高速緩存的工作原理 249
7.3.2 地址映射 252
7.3.3 替換算法 257
7.3.4 寫入策略 258
7.4 存儲管理 261
7.4.1 虛擬存儲器 261
7.4.2 段式存儲管理 262
7.4.3 頁式存儲管理 264
習題 267
第8章 輸入/輸出接口 269
8.1 I/O接口概述 269
8.1.1 I/O接口的典型結構 269
8.1.2 I/O端口的編址 271
8.1.3 I/O指令 273
8.2 外設數據的傳送方式 274
8.2.1 無條件傳送 275
8.2.2 程序查詢傳送 277
8.2.3 中斷傳送 279
8.2.4 中斷控制系統(tǒng) 283
8.2.5 DMA傳送 286
8.3 常用接口技術 289
8.3.1 定時控制接口 289
8.3.2 并行接口 297
8.3.3 異步串行通信接口 300
8.3.4 模擬接口 304
習題 305
第9章 處理器性能提高技術 308
9.1 精簡指令集計算機技術 308
9.1.1 復雜指令集和精簡指令集 308
9.1.2 MIPS處理器 311
9.2 指令流水線技術 313
9.2.1 指令流水線思想 313
9.2.2 80486的指令流水線 316
9.3 并行處理技術 318
9.3.1 并行性概念 318
9.3.2 數據級并行 319
9.3.3 指令級并行 321
9.3.4 線程級并行 325
習題 329
附錄A 32位通用指令列表 331
附錄B MASM偽指令和操作符列表 336