《微型計算機原理及應用》系統地介紹了80x86 PC的原理、匯編語言程序設計及接口技術,主要內容包括計算機基礎知識;匯編語言與匯編程序;程序設計技術;總線與主機;存儲器;輸入與輸出技術;中斷技術;常用可編程接口芯片等。本書內容精練、實例豐富,其中大量的接口電路和程序是作者多年來在科研和教學中反復提煉得來的,因而本書應用性很強,可作為大專院校和高職高專成人高等教育“匯編語言程序設計”、“微機原理及應用”、“接口技術”等課程的教學用書。也可以供從事電子技術、計算機應用與開發的科研人員和工程技術人員學習參考,還適于初學者自學使用。
前 言
通過多年來的教學實踐,尤其是近3年來課程改革的經驗,我們對教材內容和課程體系進行了深入的研究,并做了修改和更新。隨著電子技術和微型計算機技術的迅猛發展,從8086開始,80286、80386、80486、Pentium等系列微處理器不斷推出,本書在第3版的基礎上對原章節加寬加深,既保持了多年形成的比較成熟的課程體系,又適當地介紹了微型計算機中的新器件、新技術和新方法。
本書通過8086到Pentium微處理器和PC的硬件和軟件分析,闡明微型計算機的組成原理、匯編語言程序設計以及存儲器、輸入輸出接口芯片與微型計算機的接口方法,為學習者在微處理器和微型計算機的應用上打下堅實的基礎。
本書第4版內容包括可以分為下列4大部分。第1部分為計算機的基礎知識,內容包括計算機中的數和編碼、微型計算機的結構和工作原理。第2部分為16位微處理器和32位微處理器、總線、微機系統和主機。第3部分為匯編語言程序設計,匯編語言程序設計是微機應用系統的系統軟件和應用軟件的設計基礎。第4部分為接口技術,接口技術是微機應用系統硬件組成的設計基礎。這部分共有4章,第5章介紹存儲器及其與CPU的接口技術。第6章介紹輸入輸出和接口技術。第7章介紹中斷技術。第8章介紹常用可編程接口芯片及其與CPU的接口技術。
本書內容較全面,實例豐富。書中的程序和接口電路的設計包含了作者多年來在科研和教學中積累的經驗和技巧。學習微型計算機的匯編語言程序設計和接口技術必須理論聯系實際。本書在介紹基本概念的同時,列舉了大量典型而有意義的例題和習題。這些例題和習題,無論是匯編程序還是接口電路都在80x86和Pentium系列微機系統上調試通過。編寫本書時,注意了理論和實踐相結合,力求做到既有一定的理論基礎,又能運用理論解決實際問題;既掌握一定的先進技術,又著眼于當前的應用服務。
本書內容精練,實用性強。每章后均配有一定數量的、能達到檢驗和加深理解理論知識、培養解題和應用能力及訓練思維方式的習題。避免了煩瑣的文字敘述浩浩蕩蕩的題海,將學生從“學海無涯苦作舟”中解放出來,使他們做到一看就懂、一學就會、欲罷不能、興趣盎然。
本教材的參考學時數為80學時(不含實驗)。學時數較少的學校或專業可以不講授第2章和第3章中的以下內容:地址傳送指令、查表轉換指令、BIOS、串處理程序設計和宏功能程序設計等,本書后面沒有使用這些內容。為了適應非電子信息類的教學要求,本書的第1章中還補充了二進制數的邏輯運算與邏輯電路以及邏輯單元與邏輯部件等內容。
本書由朱定華為主編,負責全書的組織編寫、修改和最終定稿、統稿,蔡苗為副主編,協助主編工作。參加本書編寫工作的人員還有蔡紅娟、周斌、翟晟、黃松、呂建才、程萍、張德芳、林衛、李志文、林威等。
計算機的發展日新月異,新技術層出不窮,教學改革任重道遠。限于我們的水平和能力,不妥之處在所難免,懇請讀者批評指正,以便我們今后不斷改進。
編 者
2016年3月于武昌
朱定華,男,華中科技大學教授,具備多年的電子信息工程專業教學實踐經驗及教材編寫經驗,其在我社出版的《微型計算機原理及應用》一書已修訂至第四版,獲得市場廣泛認可。
第1章 微型計算機基礎 (1)
1.1 計算機中的數和編碼 (1)
1.1.1 計算機中的數制 (1)
1.1.2 符號數的表示法 (2)
1.1.3 二進制數的加減運算 (5)
1.1.4 二進制數的邏輯運算與邏輯電路 (7)
1.1.5 二進制編碼 (9)
1.1.6 BCD數的加減運算 (11)
1.2 邏輯單元與邏輯部件 (12)
1.2.1 觸發器 (12)
1.2.2 寄存器 (14)
1.2.3 移位寄存器 (15)
1.2.4 計數器 (15)
1.2.5 三態輸出門與緩沖放大器 (16)
1.2.6 譯碼器 (17)
1.3 微型計算機的結構和工作原理 (17)
1.3.1 微型計算機常用的術語 (17)
1.3.2 微型計算機的基本結構 (18)
1.3.3 計算機的工作原理 (21)
1.4 微處理器 (22)
1.4.1 8086/8088 (22)
1.4.2 80286 (23)
1.4.3 80386 (23)
1.4.4 80486 (24)
1.4.5 Pentium (24)
1.5 80x86的寄存器 (27)
1.5.1 8086/8088 的寄存器 (27)
1.5.2 80286的寄存器 (30)
1.5.3 80386的寄存器 (30)
1.5.4 80486的寄存器 (31)
1.5.5 Pentium的寄存器 (31)
1.6 80x86的工作方式與存儲器物理地址的生成 (37)
1.6.1 80x86的工作方式 (37)
1.6.2 80x86存儲器的分段和物理地址的生成 (39)
習題1 (42)
第2章 匯編語言與匯編程序 (44)
2.1 符號指令中的表達式 (44)
2.1.1 常量 (44)
2.1.2 標號 (45)
2.1.3 變量 (45)
2.2 符號指令的尋址方式 (48)
2.3 常用指令 (53)
2.3.1 數據傳送類指令 (53)
2.3.2 加減運算指令 (60)
2.3.3 邏輯運算指令 (63)
2.3.4 移位指令 (65)
2.3.5 位搜索和位測試指令 (69)
2.3.6 指令應用舉例 (69)
2.4 常用偽指令 (73)
2.5 常用系統功能調用和BIOS (79)
2.5.1 系統功能調用 (79)
2.5.2 常用系統功能調用應用舉例 (81)
2.5.3 BIOS (84)
習題2 (87)
第3章 程序設計的基本技術 (91)
3.1 順序程序設計 (91)
3.1.1 乘除法指令 (91)
3.1.2 BCD數調整指令 (94)
3.1.3 順序程序設計舉例 (100)
3.2 分支程序設計 (103)
3.2.1 條件轉移指令 (103)
3.2.2 無條件轉移指令 (105)
3.2.3 分支程序設計舉例 (105)
3.3 循環程序設計 (110)
3.3.1 循環程序的基本結構 (111)
3.3.2 重復控制指令 (112)
3.3.3 單重循環程序設計舉例 (113)
3.3.4 多重循環程序設計舉例 (126)
3.4 串處理程序設計 (132)
3.4.1 方向標志置位和清除指令 (132)
3.4.2 串操作指令 (132)
3.4.3 重復前綴 (134)
3.4.4 串操作程序設計舉例 (134)
3.5 子程序設計 (140)
3.5.1 子程序的概念 (140)
3.5.2 子程序的調用指令與返回指令 (142)
3.5.3 子程序及其調用程序設計舉例 (144)
3.6 宏功能程序設計 (154)
3.6.1 宏指令 (155)
3.6.2 條件匯編與宏庫的使用 (158)
3.6.3 宏功能程序設計舉例 (159)
習題3 (162)
第4章 總線與主機 (168)
4.1 總線概述 (168)
4.1.1 總線分類 (168)
4.1.2 總線操作 (169)
4.2 8086/8088的CPU總線 (169)
4.2.1 8086/8088的引線及功能 (169)
4.2.2 8088的CPU系統 (172)
4.2.3 8088的時序 (177)
4.3 Pentium的CPU總線 (181)
4.4 局部總線 (185)
4.4.1 ISA(Industry Standard Architecture)局部總線 (185)
4.4.2 PCI(Peripheral Component Interconnect)局部總線 (187)
4.4.3 視頻接口總線AGP (191)
4.4.4 PCI Express總線 (192)
4.5 輸入輸出接口總線 (192)
4.5.1 ATA總線 和SATA總線 (192)
4.5.2 SCSI總線和SAS總線 (193)
4.5.3 通用串行總線USB (194)
4.6 微型計算機系統 (195)
4.6.1 以北橋和南橋芯片組構建的PCI總線型的微型計算機系統 (195)
4.6.2 以北橋和南橋芯片組構建的專用總線型的微型計算機系統 (196)
4.6.3 單芯片組構建的微型計算機系統 (197)
4.7 PC主機和主板 (198)
4.7.1 PC主機結構 (198)
4.7.2 主板的結構 (198)
4.7.3 常用的CPU及其在主板上的插座 (199)
4.7.4 主板上的芯片組 (200)
4.7.5 主板上的總線擴展插槽 (200)
4.7.6 主板上的內存條及內存條插槽 (202)
4.7.7 主板上的其他接口 (203)
習題4 (205)
第5章 半導體存儲器 (206)
5.1 存儲器概述 (206)
5.2 常用的存儲器芯片 (208)
5.2.1 半導體存儲器芯片的結構 (208)
5.2.2 只讀存儲器ROM (208)
5.2.3 隨機讀寫存儲器RAM (210)
5.3 存儲器與CPU的接口 (213)
習題5 (218)
第6章 輸入輸出和接口技術 (219)
6.1 接口的基本概念 (219)
6.1.1 接口的功能 (219)
6.1.2 接口控制原理 (220)
6.1.3 接口控制信號 (222)
6.2 I/O指令和I/O地址譯碼 (222)
6.3 數字通道接口 (226)
6.3.1 數據輸出寄存器 (226)
6.3.2 數據輸入三態緩沖器 (226)
6.3.3 三態緩沖寄存器 (227)
6.3.4 寄存器和緩沖器接口的應用 (227)
6.3.5 打印機適配器 (233)
6.4 模擬通道接口 (237)
6.4.1 數模轉換器及其與微型計算機的接口 (237)
6.4.2 模數轉換器ADC及其與微型計算機的接口 (243)
習題6 (248)
第7章 中斷技術 (251)
7.1 中斷和中斷系統 (251)
7.1.1 中斷的概念 (251)
7.1.2 中斷源 (251)
7.1.3 中斷系統的功能 (252)
7.2 中斷的處理過程 (252)
7.2.1 CPU對中斷的響應及中斷過程 (252)
7.2.2 中斷控制器8259A (253)
7.3 80x86微型計算機的中斷系統和80x86的中斷指令 (257)
7.3.1 外部中斷 (257)
7.3.2 內部中斷 (258)
7.3.3 中斷向量表 (259)
7.3.4 中斷響應和處理過程 (260)
7.4 可屏蔽中斷服務程序的設計 (260)
7.4.1 中斷服務程序入口地址的裝入 (261)
7.4.2 中斷屏蔽與中斷結束的處理 (261)
7.4.3 中斷服務程序設計舉例 (262)
習題7 (268)
第8章 常用可編程接口芯片 (269)
8.1 可編程并行接口8255A (269)
8.1.1 8255的組成與接口信號 (269)
8.1.2 8255的工作方式與控制字 (271)
8.1.3 3種工作方式的功能 (274)
8.2 可編程計數器/定時器8253 (280)
8.2.1 8253的組成與接口信號 (280)
8.2.2 計數器的工作方式及其與輸入輸出的關系 (282)
8.2.3 8253的控制字和初始化編程 (284)
8.2.4 8253的應用 (285)
8.3 串行通信與異步通信控制器8250的應用 (290)
8.3.1 PC的串行口 (291)
8.3.2 異步通信控制器8250 (293)
8.3.3 8250與微型計算機及RS-232接口信號的連接 (299)
8.3.4 異步串行通信程序設計 (300)
8.3.5 PC之間的通信? (302)
8.3.6 PC與MCS-51單片機之間的通信 (304)
8.4 鍵盤/顯示控制器8279 (307)
8.4.1 8279的組成和接口信號 (307)
8.4.2 8279的操作命令 (309)
8.4.3 8279在鍵盤和顯示器接口中的應用 (310)
習題8 (314)
附錄A 80x86指令系統表 (316)
附錄B 80x86指令按字母順序查找表 (321)
附錄C 80x86算術邏輯運算指令對狀態標志位的影響 (326)