《計算機組成原理與匯編語言程序設計(第3版)》是普通高等教育“十一五”國家級規劃教材。全書從微體系結構層、指令系統層、匯編語言層三個層次,以及CPU、存儲系統、輸入/輸出系統及其互連三大系統出發,建立整機的概念,并體現軟硬結合的思想。全書分3篇共8章,系統介紹基礎知識(緒論、計算機中的信息表示),計算機系統分層結構(微體系結構層——CPU組織、指令系統層、匯編語言層),存儲系統和輸入/輸出系統(存儲系統、輸入/輸出系統、I/O設備和I/O程序設計)。
《計算機組成原理與匯編語言程序設計(第3版)》適合作為高等學校計算機及相關專業教材,也可作為IT技術人員的參考書。
本書是2007年出版的“十一五”國家級規劃教材《計算機組成原理與匯編語言程序設計》的第3版。本書第一版是電子部“九五”規劃教材。本書將傳統教學計劃中的兩門主干課程《計算機組成原理》與《匯編語言程序設計》有機地組織成一門課程,其目的是圍繞機器指令級(指令系統層)及與此緊密相關的微操作級(微體系結構層)和匯編語言級(層),更好地體現軟硬結合的思想,將計算機內部工作機制與編程求解問題結合起來。書中將輸入/輸出(I/O)系統作為《計算機組成原理》與《匯編語言程序設計》的結合點,既包含硬件接口設計,又包含I/O驅動程序等軟件設計,體現了兩部分的緊密關聯和目前匯編語言程序設計的主要應用場合。本次修編時,對各章內容做了修改和增刪,以便更好地與現代計算機技術相吻合,特別是對原書第8章輸入/輸出設備內容進行了精簡,并將其合并到第7章,但仍在基本結構、主要內容和風格上保持了原書的特點。
本書主要涵蓋了ACM/IEEE-CS中的“AR計算機組織與體系結構”這一知識體中的5個核心知識單元:
AR2數據的機器級表示
AR3 匯編機器組織
AR4存儲系統組織和結構
AR5接口和通信
AR6功能組織
本書還涉及匯編語言層的PF程序設計基礎知識領域中的一個核心知識單元--PF1程序設計基本結構。因此,本書適用于“計算機學科教學計劃”推薦的16門核心課程中的《計算機組成基礎》課程。
多年來,我們跟蹤分析了國外經典教材與國內優秀教材,這些教材一般可分為兩種體系:“分層體系”和“功能部件組成體系”。本書的框架體系采用這兩種體系相結合的方案,從三個層次(微體系結構層、指令系統層和匯編語言層)和三大子系統(CPU、存儲系統、輸入/輸出系統及其互連)出發建立整機概念。本書第2篇按照微體系結構層、指令系統層和匯編語言層三個層次,討論計算機系統的組成,從而在CPU級建立整機概念。然后,通過第3篇存儲系統與輸入/輸出系統的學習,從而在系統級上建立整機概念。
全書由基礎知識、計算機系統分層結構、存儲系統和輸入/輸出系統3篇共7章組成。其編寫順序體現了下述的教學思路:
第1篇包括第1、2章,介紹計算機系統組成的基本概念和信息表示。
第1章仍然強調計算機的兩個重要基本概念:信息數字化、存儲程序工作方式。在介紹計算機系統的硬件、軟件組成之后,引入了現代計算機的一種分層結構模型,它自下而上分為5層:微體系結構層、指令系統層、操作系統層、匯編語言層和面向問題的語言層,本書第2篇內容就是根據其中的三層來組織的。第1章還對計算機的工作過程、特點、性能指標和發展史等做了介紹。
第2章講述數據信息和指令信息的表示,包括帶符號數、小數點及字符的表示方法,以及指令格式、尋址方式和指令類型,并介紹了Pentium與SPARC的指令格式。
第2篇包括第3、4、5章,分別從微體系結構層、指令系統層和匯編語言層深入討論計算機系統的組成和工作機制。
第3章微體系結構層,將CPU作為整體來討論,弱化運算方法與運算器。主要以一個教學模型機為例,從寄存器級描述CPU的內部邏輯組成,在指令流程和微操作兩個層次上分析CPU的工作原理。根據當前計算機的發展趨勢,更強調組合邏輯控制方式,對微程序控制方式只做一般原理性介紹,并以UltraSPARC CPU為典型例子,說明RISC的微體系結構及其指令系統。
第4章以80x86 CPU為背景討論指令系統層。并將80x86、Pentium系列CPU的微體系結構做了類比,用歸納和概括的方式介紹該系列CPU的尋址方式和指令系統。這一章作為第3章與第5章的橋梁,由CPU模型過渡到實際機器80x86,并為學習匯編語言奠定了相關基礎。
第5章匯編語言層,以 80x86、Pentium系列CPU為背景,精練地闡述了匯編語言的基礎知識、偽指令與宏指令、匯編語言程序設計基本技術。
第3篇包括第6、7章,討論存儲系統和輸入/輸出(I/O)系統。
第6章首先簡介了各種存儲器存儲信息的基本原理,芯片級主存儲器的邏輯設計方法。按三級存儲體系:高速緩存Cache、主存、外存分別介紹其工作原理,并從物理層與虛擬層這兩個層次討論存儲系統的組織。特別是,本章在分別介紹主存儲器、Cache和虛擬存儲器時,都是以Pentium為實例進一步分析相應的工作機制。本章還引入了高級DRAM、磁盤冗余陣列RAID、并行存儲技術等。
第7章介紹輸入/輸出系統。采用硬軟結合的方式,既討論硬件接口與I/O設備的邏輯組成及工作原理,也介紹軟件調用方法與相應的I/O程序設計。詳細闡述了I/O接口的主要控制方式:直接程序控制方式、程序中斷方式和DMA方式。系統介紹了總線分類、標準、時序以及實例。簡介了常用I/O設備:鍵盤、鼠標器、打印機和液晶顯示器工作原理,并以鍵盤為例分析其驅動程序的設計。引入了典型外設接口ATA接口和SCSI接口。
由于篇幅所限,與本書有關的一些輔助資料將以網上電子文檔方式提供給讀者,歡迎免費下載。網上輔助資料包括:80x86指令系統一覽表,偽操作與操作符表,中斷向量地址一覽表,DOS系統功能調用(INT 21H),BIOS功能調用等。
本課程的參考教學時數約為70~90學時,全書內容可能比教學時數所允許的份量稍多一些,可供選取或讓學生自學,部分實例可隨技術發展而更新。本書為教師免費提供電子教案,歡迎到華信教育資源網注冊下載。
本書由徐潔、俸遠禎主編并負責全書的統稿。徐潔編寫第1、2章;魯珂編寫第3、4、5章;葉婭蘭編寫第6、7章。重慶大學袁開榜教授擔任主審,他認真仔細地審閱了全稿,提出了許多寶貴的修改意見。教材的輔助資料和電子文檔由鄧亮和于穎制作。本書編輯童占梅老師熱情、專業和細致的工作態度保證了教材的編輯質量和水平。教材的編寫還得到了北京航空航天大學楊文龍教授、電子科技大學龔天富教授的熱情指導和幫助。在編寫過程中,我們還得到了電子科技大學計算機學院領導和老師的熱情支持。在此,謹向所有給予我們支持和幫助的同志表示衷心的感謝。
書中還會存在錯誤與不足之處,懇請讀者與同行給予批評指正。
主編
于成都電子科技大學計算機學院
第1篇 基礎知識
第1章 緒論
1.1 計算機的基本概念
1.1.1 存儲程序工作方式
1.1.2 信息的數字化表示
1.2 計算機系統的硬、軟件組成
1.2.1 計算機硬件系統
1.2.2 計算機軟件系統
1.3 層次結構模型
1.3.1 從計算機系統組成角度劃分層次結構
1.3.2 從語言功能角度劃分層次結構
1.3.3 軟、硬件在邏輯上的等價
1.4 計算機的工作過程
1.4.1 處理問題的步驟
1.4.2 指令執行過程
1.5 數字計算機的特點與性能指標
1.5.1 數字計算機的特點
1.5.2 計算機的性能指標
1.6 計算機的發展與應用
1.6.1 計算機的發展歷程
1.6.2 提高計算機性能的若干技術
1.6.3 計算機應用舉例
習題1
第2章 計算機中的信息表示
2.1 數值型數據的表示
2.1.1 帶符號數的表示
2.1.2 定點數與浮點數
2.2 字符的表示
2.2.1 ASCII碼
2.2.2 UNICODE編碼
2.2.3 漢字編碼簡介
2.3 指令信息的表示
2.3.1 指令格式
2.3.2 常用尋址方式
2.3.3 指令類型
2.3.4 PentiumⅡ指令格式
2.3.5 SPARC指令格式
習題2
第2篇 計算機系統分層結構
第3章 微體系結構層--CPU組織
3.1 CPU的組成和功能
3.1.1 CPU的組成
3.1.2 指令執行過程
3.1.3 時序控制方式
3.1.4 指令流水線
3.2 算術邏輯部件ALU和運算方法
3.2.1 算術邏輯部件ALU
3.2.2 定點數運算方法
3.2.3 浮點數運算方法
3.2.4 十進制數加減運算
3.3 CPU模型機的組成及其數據通路
3.3.1 基本組成
3.3.2 數據傳送
3.4 組合邏輯控制器原理
3.4.1 模型機的指令系統
3.4.2 模型機的時序系統
3.4.3 指令流程
3.4.4 微命令的綜合與產生
3.4.5 小結
3.5 微程序控制器原理
3.5.1 微程序控制概念
3.5.2 微指令編碼方式
3.5.3 微程序的順序控制
3.5.4 微指令格式
3.5.5 典型微指令舉例--模型機微指令格式
3.6 精簡指令集計算機(RISC)
3.6.1 RISC與CISC的概念
3.6.2 UltraSPARC CPU的微體系結構
習題3
第4章 指令系統層
4.1 80x86 CPU
4.1.1 8086/8088 CPU
4.1.2 80386/80486 CPU
4.1.3 Pentium系列CPU
4.2 80x86 CPU的寄存器和主存儲器
4.2.1 80x86 CPU的寄存器
4.2.2 80x86的主存儲器
4.3 80x86 CPU指令系統
4.3.1 80x86尋址方式
4.3.2 80x86 CPU指令系統
習題4
第5章 匯編語言層
5.1 概述
5.2 匯編語言語句格式
5.3 80x86宏匯編語言數據、表達式和運算符
5.3.1 常數
5.3.2 變量
5.3.3 標號
5.3.4 表達式與運算符
5.4 80x86 宏匯編語言偽指令
5.4.1 符號定義語句
5.4.2 處理器選擇偽指令
5.4.3 段結構偽指令(SEGMENT/ENDS)
5.4.4 段組偽指令(GROUP)
5.4.5 內存模式和簡化段定義偽指令
5.4.6 定位和對準偽指令
5.4.7 過程定義偽指令(PROC/ENDP)
5.4.8 包含偽指令(INCLUDE)
5.4.9 標題偽指令(TITLE)
5.5 宏指令
5.6 匯編語言程序設計基本技術
5.6.1 程序設計步驟
5.6.2 順序程序設計
5.6.3 分支程序設計
5.6.4 循環程序設計
5.6.5 子程序設計
5.6.6 系統功能子程序的調用
5.6.7 匯編語言程序的開發
習題5
第3篇 存儲系統與輸入/輸出系統
第6章 存儲系統
6.1 概述
6.1.1 存儲器的分類
6.1.2 主存的主要技術指標
6.2 存儲原理
6.2.1 半導體存儲器的存儲原理
6.2.2 磁表面存儲器的存儲原理
6.2.3 光存儲器的存儲原理
6.3 主存儲器的組織
6.3.1 主存儲器的邏輯設計
6.3.2 主存儲器與CPU的連接
6.3.3 Pentium CPU與存儲器組織
6.3.4 高級DRAM
6.4 高速緩沖存儲器Cache
6.4.1 Cache的工作原理
6.4.2 Cache的組織
6.4.3 PentiumⅡCPU的Cache組織
6.5 外部存儲器
6.5.1 硬磁盤存儲器
6.5.2 光盤存儲器
6.5.3 磁帶存儲器
6.6 物理存儲系統的組織
6.6.1 存儲系統的層次結構
6.6.2 磁盤冗余陣列
6.6.3 并行存儲技術
6.7 虛擬存儲系統的組織
6.7.1 概述
6.7.2 虛擬存儲器的組織方式
6.7.3 Pentium CPU支持的虛擬存儲器
6.7.4 存儲管理部件(MMU)
習題6
第7章 輸入/輸出系統
7.1 概述
7.1.1 主機與外圍設備間的連接方式
7.1.2 I/O接口的功能和分類
7.1.3 接口的編址和I/O指令
7.2 直接程序控制方式
7.2.1 立即程序傳送方式
7.2.2 程序查詢方式
7.3 程序中斷方式
7.3.1 中斷的基本概念
7.3.2 中斷的過程
7.3.3 中斷接口模型
7.3.4 中斷接口舉例
7.4 DMA方式
7.4.1 DMA方式的一般概念
7.4.2 DMA過程
7.4.3 DMA接口組成
7.4.4 DMA控制器編程及應用
7.5 通道與IOP
7.5.1 通道
7.5.2 IOP與外圍處理機
7.6 總線
7.6.1 總線的功能與分類
7.6.2 總線標準及信號組成
7.6.3 總線操作時序
7.6.4 典型總線舉例
7.7 典型外設接口
7.7.1 ATA接口
7.7.2 SCSI接口
7.8 I/O設備與I/O程序設計
7.8.1 概述
7.8.2 鍵盤
7.8.3 鼠標器
7.8.4 打印機
7.8.5 液晶顯示器
習題7
附錄A ASCII碼字符表
參考文獻