叢書序
為什么開發深入淺出系列叢書?
目的是從讀者角度寫書,開發出高質量的、適合閱讀的圖書。
“不積跬步,無以至千里;不積小流,無以成江海!敝R的學習是一個逐漸積累的過程,只有堅持系統地學習知識,深入淺出,堅持不懈,持之以恒,才能把一類技術學習好。堅持的動力源于所學內容的趣味性和講法的新穎性。
計算機課程的學習也有一條隱含的主線,那就是“提出問題→分析問題→建立數學模型→建立計算模型→通過各種平臺和工具得到最終正確的結果”,培養計算機專業學生的核心能力是“面向問題求解的能力”。由于目前大學計算機本科生培養計劃的特點,以及受教學計劃和課程設置的原因,計算機科學與技術專業的本科生很難精通掌握一門程序設計語言或者相關課程。各門課程設置比較孤立,培養的學生綜合運用各方面的知識能力方面有欠缺。傳統的教學模式以傳授知識為主要目的,能力培養沒有得到充分的重視。很多教材受教學模式的影響,在編寫過程中,偏重概念講解比較多,而忽略了能力培養。為了突出內容的案例性、解惑性、可讀性、自學性,本套書努力在以下方面做好工作。
1. 案例性
所舉案例突出與本課程的關系,并且能恰當反映當前知識點。例如,在計算機專業中,很多高校都開設了高等數學、線性代數、概率論,不言而喻,這些課程對于計算機專業的學生來說是非常重要的,但就目前對不少高校而言,這些課程都是由數學系的老師講授,教材也是由數學系的老師編寫,由于學科背景不同和看待問題的角度不同,在這些教材中基本都是純數學方面的案例,作為計算機系的學生來說,學習這樣的教材缺少源動力并且比較乏味,究其原因,很多學生不清楚這些課程與計算機專業的關系是什么;诖,在編寫這方面的教材時,可以把計算機上的案例加入其中,例如,可以把計算機圖形學中的三維空間物體圖像在屏幕上的伸縮變換、平移變換和旋轉變換在矩陣運算中進行舉例;可以把雙機熱備份的案例融入馬爾科夫鏈的講解;把密碼學的案例融入大數分解中等。
2. 解惑性
很多教材中的知識講解注重定義的介紹,而忽略因果性、解釋性介紹,往往造成知其然而不知其所以然。下面列舉兩個例子。
(1) 讀者可能對OSI參考模型與TCP/IP參考模型的概念產生混淆,因為兩種模型之間有很多相似之處。其實,OSI參考模型是在其協議開發之前設計出來的,也就是說,它不是針對某個協議族設計的,因而更具有通用性。而TCP/IP模型是在TCP/IP協議棧出現后出現的,也就是說,TCP/IP模型是針對TCP/IP協議棧的,并且與TCP/IP協議棧非常吻合。但是必須注意,TCP/IP模型描述其他協議棧并不合適,因為它具有很強的針對性。說到這里讀者可能更迷惑了,既然OSI參考模型沒有在數據通信中占有主導地位,那為什么還花費這么大的篇幅來描述它呢?其實,雖然OSI參考模型在協議實現方面存在很多不足,但是,OSI參考模型在計算機網絡的發展過程中起到了非常重要的作用,并且,它對未來計算機網絡的標準化、規范化的發展有很重要的指導意義。
[1]〖2〗深入淺出微機原理與接口技術(第2版)[1]叢書序〖2〗(2) 再例如,在介紹原碼、反碼和補碼時,往往只給出其定義和舉例表示,而對最后為什么在計算機中采取補碼表示數值?浮點數在計算機中是如何表示的?字節類型、短整型、整型、長整型、浮點數的范圍是如何確定的?下面我們來回答這些問題(以8位數為例),原碼不能直接運算,并且0的原碼有+0和-0兩種形式,即00000000和10000000,這樣肯定是不行的,如果根據原碼計算設計相應的門電路,由于要判斷符號位,設計的復雜度會大大增加,不合算;為了解決原碼不能直接運算的缺點,人們提出了反碼的概念,但是0的反碼還是有+0和-0兩種形式,即00000000和11111111,這樣是不行的,因為計算機在計算過程中,不能判斷遇到0是+0還是-0;而補碼解決了0表示的唯一性問題,即不會存在+0和-0,因為+0是00000000,它的補碼是00000000,-0是10000000,它的反碼是11111111,再加1就得到其補碼是100000000,舍去溢出量就是00000000。知道了計算機中數用補碼表示和0的唯一性問題后,就可以確定數據類型表示的取值范圍了,仍以字節類型為例,一個字節共8位,有00000000~11111111共256種結果,由于1位表示符號位,7位表示數據位,正數的補碼好說,其范圍從00000000~011111111,即0~127;負數的補碼為10000000~11111111,其中,11111111為-1的補碼,10000001為-127的補碼,那么到底10000000表示什么最合適呢?8位二進制數中,最小數的補碼形式為10000000;它的數值絕對值應該是各位取反再加1,即為01111111+1=10000000=128,又因為是負數,所以是-128,即其取值范圍是-128~127。
3. 可讀性
圖書的內容要深入淺出,使人愛看、易懂。一本書要做到可讀性好,必須做到“善用比喻,實例為王”。什么是深入淺出?就是把復雜的事物簡單地描述明白。把簡單事情復雜化的是哲學家,而把復雜的問題簡單化的是科學家。編寫教材時要以科學家的眼光去編寫,把難懂的定義,要通過圖形或者舉例進行解釋,這樣能達到事半功倍的效果。例如,在數據庫中,第一范式、第二范式、第三范式、BC范式的概念非常抽象,很難理解,但是,如果以一個教務系統中的學生表、課程表、教師表之間的關系為例進行講解,從而引出范式的概念,學生會比較容易接受。再例如,在生物學中,如果純粹地講解各個器官的功能會比較乏味,但是如果提出一個問題,如人的體溫為什么是37℃?以此為引子引出各個器官的功能效果要好得多。再例如,在講解數據結構課程時,由于定義多,表示抽象,這樣達不到很好的教學效果,可以考慮在講解數據結構及其操作時用程序給予實現,讓學生看到直接的操作結果,如壓棧和出棧操作,可以把PUSH()和POP()操作實現,這樣效果會好很多,并且會激發學生的學習興趣。
4. 自學性
一本書如果適合自學學習,對其語言要求比較高。寫作風格不能枯燥無味,讓人看一眼就拒人千里之外,而應該是風趣、幽默,重要知識點多舉實際應用的案例,說明它們在實際生活中的應用,應該有畫龍點睛的說明和知識背景介紹,對其應用需要注意哪些問題等都要有提示等。
一書在手,從第一頁開始的起點到最后一頁的終點,如何使讀者能快樂地閱讀下去并獲得知識?這是非常重要的問題。在數學上,兩點之間的最短距離是直線。但在知識的傳播中,使讀者感到“阻力最小”的書才是好書。如同自然界中沒有直流的河流一樣,河水在重力的作用下一定沿著阻力最小的路徑向前進。知識的傳播與此相同,最有效的傳播方式是傳播起來損耗最小,閱讀起來沒有阻力。
歡迎聯系清華大學出版社白立軍老師投稿: bailj@tup.tsinghua.edu.cn。
2014年12月15日隨著電子計算機科技的迅速普及和發展,微型計算機的性能已達到或超過以前的大中型機,并被廣泛應用于科學計算、數據處理、辦公自動化、工程控制、輔助系統、仿真,甚至日常通信等諸多領域。人類已進入到以計算機技術為主導的信息社會。
計算機科技幾乎每隔一段時間就有一個重大變化,最近十年更是處于加速發展階段。這一點也為編者帶來了巨大的困難。計算機科學與技術發展到今天,單純的微機操作技能已經在社會生活中得到普及,單純的軟件編程人才已不能滿足社會的需求,而軟硬件結合的計算機科學技術人才供不應求。
因此,微型計算機原理及接口技術為高等學校理工科眾多學科類專業大學生必修的一門專業基礎課。
本書按照本科的教學大綱的要求和教學特點進行編寫。
學習本課程的目的在于讓學生從理論與實際結合的基礎上理解與掌握微型計算機的基本組成、工作原理、各類接口部件的功能,以及構建微機系統等方面的知識,使學生初步具有微機應用系統軟硬件綜合開發的能力。
為了給讀者奉獻一本高質量的教材,我們在編寫中努力堅持以下幾個原則。
。1) 努力追蹤微機快速發展的歷程,努力反映計算機科技的最新成果。讀者可以從每一章中看到這一點。
(2) 以應用為目的,刪繁就簡,突出重點、內容少而精。加強基本概念、基本分析方法基本技術手段的闡述;密切結合計算機專業實際。
。3) 微型計算機原理及接口技術類的教材甚多,但鑒于計算機科技的深奧,本書為降低其難度,在語言描述上下了大工夫。本書努力貫徹啟發式的教學原則,使邏輯線索簡明、清晰、合理;物理概念清楚,深入淺出;語言生動流暢,通俗易懂。并注重典型電路和芯片的介紹。
。4) 注重實踐技能的培養和分析問題解決問題能力的培養。
(5) 圖表精選,說明性強。
本書共分為13章,主要內容如下。
第1章介紹計算機的分類及應用、微型計算機的基本組成、微型計算機中數制轉換、數和字符的編碼等內容。第2章介紹CPU。為了說明CPU的復雜結構和工作原理,我們從最簡單、最容易說明問題的典型芯片8086/8088微處理器說起,敘述了CPU相關的基礎知識,討論了CPU的主流技術術語(諸如超標量流水線技術、指令分支預測技術、Pentium Pro的亂序執行、RISC、SIMD以及MMX、SSE(SSE2)、64位新體系等新理論和[1]〖2〗深入淺出微機原理與接口技術(第2版)[1]前言〖2〗新技術等),回顧了CPU發展的輝煌歷程以及CPU發展的潮流和未來。第3章討論微型計算機的尋址方式和指令系統。第4章討論了匯編語言初步。第5章討論了總線與主板,介紹了總線與主板結構的新變化和新技術。第6章討論了存儲器及管理模式,介紹了USB 2.0和移動存儲等等新技術。第7章討論了中斷技術,介紹了PCI中斷等新技術。第8章概述了微型計算機接口技術并討論了直接存儲器訪問技術,并從實踐的角度介紹了常用微機外部實用接口,討論了USB接口、IEEE 1394串行接口、SCSI接口、SATA接口和PCI接口等等新技術。第9章討論了并行通信及接口芯片。第10章討論了串行數據接口。第11章討論了8253可編程定時計數器。第12章討論了數/模、模/數轉換器及其與CPU的接口。
微型計算機原理及接口技術是一門實踐性很強的課程。為了加強對學習的輔導和實踐能力的培養,本書配有《深入淺出微機原理與接口技術(第2版)實驗與解題指導》一書。
本書適合高等學校理工科電子類和電氣自動化類以及信息類各專業,特別是涉及單片機、嵌入式等芯片級計算機應用各類專業大學生本科的學生使用,也可供相關專業的應用型本科生選用,還可供廣大工程技術人員學習參考。
本書為任課教師配有電子教案,此教案用PowerPoint制作。
本書由何超教授主編,鐘建、龍君芳、徐昊、孔令美、鐘桂鳳、張艷紅、何翔等參編。
限于編者的水平,書中錯誤和不妥之處在所難免,敬請廣大讀者和專家批評指正。
編者
2016年10月
第1章概述1
1.1計算機及其基本組成1
1.1.1信息社會和計算機1
1.1.2計算機的分類2
1.1.3計算機的基本組成4
1.1.4微型計算機的硬件系統和軟件系統5
1.2進位計數制7
1.2.1數制7
1.2.2數在不同進制之間的轉換9
1.3微型計算機中數的編碼和字符的表示12
1.3.1二進制數值數據的編碼12
1.3.2十進制數值數據的編碼——BCD碼17
1.3.3定點數與浮點數在計算機中的表示19
1.3.4計算機中非數值數據的編碼22
1.4計算機和微型計算機的發展概況24
1.4.1計算機的發展24
1.4.2微型計算機的發展27
1.4.3計算機的應用范圍28
習題130
第2章微處理器34
2.1微處理器概述34
2.1.1CPU的基本概念34
2.1.28086 CPU的編程結構37
2.1.3通用CPU的組成42
2.1.4微型計算機的存儲器組織44
2.1.58086的工作模式和引腳功能48
2.1.68086 CPU的總線時序55
2.1.78086的總線控制權60[1]〖2〗深入淺出微機原理與接口技術(第2版)[1]目錄〖2〗2.1.8指令系統62
2.1.9CPU的架構和封裝方式63
2.1.10CPU主流技術術語淺析66
2.2典型的CPU及其發展歷程72
2.2.1Intel CPU73
2.2.2Intel CPU型號的標注法76
2.2.3AMD CPU76
2.2.4AMD CPU型號的編號78
2.2.5從CPU表面看其性能指標80
2.2.6龍芯CPU81
2.3CPU的潮流與未來82
2.3.1多核的發展82
2.3.2APU83
2.3.3向量機84
習題284
第3章微型計算機指令系統88
3.1匯編語言源程序的3種語句88
3.2指令語句的操作數的表現形式——尋址方式92
3.2.1與數據有關的尋址方式93
3.2.2程序轉移地址的尋址方式之一——JMP無條件跳轉指令98
3.38086/8088處理器的指令系統101
3.3.1數據傳送指令101
3.3.2算術運算指令105
3.3.3邏輯運算指令110
3.3.4移位指令111
3.3.5串操作指令113
3.3.6控制轉移指令115
3.3.7循環指令117
3.3.8過程調用和返回指令117
3.3.9中斷指令118
3.3.10處理機控制指令119
3.3.1132位新增指令簡介119
3.48086/8088微機系統的偽指令120
3.4.1段定義偽指令120
3.4.2ASSUME偽指令121
3.4.3數據定義偽指令123
3.4.4符號定義偽指令123
3.4.5用偽指令LABEL定義變量和標號125
3.4.6PTR操作符、LABEL偽指令與THIS操作符的區別126
3.4.7置匯編地址計數器偽指令127
3.4.8地址定位偽操作128
3.4.9基數控制偽指令130
3.4.10子程序定義偽指令PROC和ENDP130
習題3131
第4章匯編語言及匯編程序設計139
4.1匯編語言概述139
4.1.1從機器語言到匯編語言139
4.1.2匯編環境介紹140
4.1.3匯編語言上機過程140
4.2系統功能調用141
4.2.1系統功能調用概述141
4.2.2基本系統功能INT 21H調用142
4.3匯編語言源程序的設計的基本步驟146
4.3.1源程序的基本框架146
4.3.2匯編語言源程序設計的基本步驟148
4.4順序結構的匯編語言源程序的編寫149
4.5分支結構的匯編語言源程序的編寫153
4.5.1條件轉移指令153
4.5.2匯編語言分支結構程序的編寫155
4.6循環結構的匯編語言源程序的編寫162
4.6.1循環控制指令162
4.6.2程序的循環結構163
4.6.3控制程序循環的方法164
4.6.4多重循環173
4.7匯編與C/C++接口175
4.7.1高級語言與匯編語言的接口需要解決的問題176
4.7.2C語言與匯編語言的接口176
習題4176
第5章總線和主板179
5.1總線基本概念179
5.1.1總線和微機系統的總線結構179
5.1.2總線分類和性能指標182
5.2總線工作原理185
5.2.1總線的控制與總線仲裁185
5.2.2數據傳送188
5.3微機的系統總線標準190
5.3.1系統總線標準190
5.3.2芯片級總線191
5.3.3常見系統總線標準193
5.3.4外部總線204
5.4主板結構規范215
5.4.1主板結構規范215
5.4.2主板上的芯片217
5.4.3主板的插槽218
5.4.4主板對外接口部分219
5.5主板控制芯片組220
5.5.1概念及結構220
5.5.2流行芯片組221
5.5.3BIOS與CMOS227
5.6主板發展趨勢228
5.6.1主板總線速度的提升228
5.6.2主板超頻穩定性能的成熟230
5.6.3主板安全穩定性能的增強230
5.6.4主板方便性能的提高231
5.6.5主板能源功能的改進231
5.6.6整合技術日新月異232
習題5233
第6章存儲器237
6.1存儲器的概念、分類和指標237
6.1.1計算機存儲系統簡介237
6.1.2半導體存儲器的分類238
6.1.3存儲器的工作時序240
6.1.4選擇存儲器件的指標242
6.2內存儲器244
6.2.1隨機讀寫存儲器(RAM)基本結構244
6.2.2靜態RAM(SRAM)245
6.2.3動態RAM(DRAM)249
6.2.4RAM技術的發展及芯片類型251
6.3高速緩沖存儲器253
6.3.1高速緩沖存儲器Cache的由來254
6.3.2Cache的命中率255
6.3.3Cache與主存的地址映射255
6.4只讀存儲器(ROM)259
6.4.1掩膜式ROM(Mask ROM)259
6.4.2可編程的ROM(Programmable ROM,PROM)260
6.4.3可擦除可編程的ROM(EPROM)261
6.4.4電可擦可編程的ROM(EEPROM)263
6.4.5閃速存儲器(Flash Memory)263
6.5通用微機中的存儲器、擴展存儲器及其管理269
6.5.1內存條的構成和空間的分配269
6.5.2ROM子系統272
6.5.3RAM子系統275
6.5.4雙通道內存技術276
6.5.5存儲器的管理277
6.6CPU與存儲器的連接280
6.6.1CPU與存儲器連接時應注意的問題280
6.6.2存儲器片選信號的產生方式和譯碼電路281
6.6.3CPU與存儲器的連接282
6.7外存儲器288
6.7.1早期的外存儲器設備發展概況288
6.7.2磁盤存儲器289
6.7.3光盤存儲器292
6.7.4納米存儲器296
6.7.5電子硬盤297
6.7.6移動存儲器297
6.7.7網絡存儲與云存儲298
習題6299
第7章中斷系統303
7.1中斷系統基本概念303
7.1.1中斷的概念和作用303
7.1.2中斷的分類304
7.2中斷的全過程306
7.2.1中斷請求與中斷屏蔽307
7.2.2中斷源識別與中斷優先級的管理308
7.2.3中斷服務的過程312
7.3中斷向量及其操作314
7.3.1中斷向量的設置314
7.3.2中斷向量的修改315
7.3.3中斷類型號的獲取316
7.4Intel 8259A可編程中斷控制器316
7.4.18259A的框圖和引腳317
7.4.28259A中斷響應過程319
7.4.38259A中斷觸發方式321
7.4.48259A工作方式322
7.4.5屏蔽中斷源的方式323
7.4.6結束中斷處理的方式324
7.4.7中斷級聯方式325
7.4.88259A初始化命令字和操作方式命令字326
7.4.98259A在以80x86為CPU的計算機中的應用333
習題7336
第8章微型計算機接口技術概述和直接存儲器訪問339
8.1微機接口的基礎知識339
8.1.1微機接口概念、類型及功能339
8.1.2輸入/輸出接口的編址方式341
8.2CPU和外部設備的數據傳輸方式及匯編語言指令格式344
8.2.1程序控制方式344
8.2.2中斷傳送方式348
8.2.3直接存儲器訪問(DMA)方式349
8.2.4I/O處理機方式349
8.3輸入/輸出接口邏輯電路的地址譯碼349
8.3.1I/O端口地址譯碼349
8.3.2Intel CPU的輸入輸出時序353
8.3.3I/O保護354
8.4DMA傳送和DMA控制器8237356
8.4.1概述DMA主要用于需要大批量高速度數據傳輸的場合356
8.4.2可編程DMA控制器Intel 8237358
8.5硬盤接口和常見微機外部接口372
8.5.1常見微機外部實用接口372
8.5.2硬盤接口376
習題8380
第9章并行通信及接口芯片384
9.1并行通信的概念與簡單并行接口384
9.1.1并行通信的概念384
9.1.2簡單并行接口384
9.1.3簡單并行口芯片8212385
9.2可編程并行接口芯片8255A388
9.2.18255A的結構框圖388
9.2.28255A的控制字389
9.3并行接口芯片8255A應用舉例396
9.3.1PC系統板上的8255A396
9.3.2PC/XT中的并行打印機接口電路399
9.3.3PC/XT中的微機與鍵盤的接口404
9.3.48255A與32位CPU連接408
習題9410
第10章串行數據接口413
10.1串行通信概述413
10.1.1串行通信的概念413
10.1.2串行通信的連接方式415
10.1.3同步通信和異步通信416
10.2串行接口標準RS232C和可編程串行接口芯片8251A419
10.2.1串行接口標準RS232C419
10.2.2一般串行通信接口常見的幾種連接方式424
10.3串行接口芯片426
10.3.1串行接口芯片UART和USART426
10.3.2可編程串行接口芯片8251A426
習題10438
第11章8253可編程定時計數器440
11.1概述440
11.1.18253的結構框圖440
11.1.28253的引腳441
11.28253的編程控制字和工作方式443
11.2.18253的控制字443
11.2.28253的工作方式444
11.2.38253的讀操作449
11.2.4PC/XT中8253的應用449
習題11450
第12章數/模、模/數轉換器及其與CPU的接口452
12.1數/模轉換器及其與CPU的接口452
12.1.1D/A轉換器(DAC)的基本原理及其轉換特性452
12.1.2D/A芯片的性能參數和術語453
12.1.3DAC和微處理器接口中需要考慮的問題454
12.1.4D/A芯片簡介455
12.1.5DAC與微處理器接口實例455
12.2模/數轉換器及其與CPU的接口458
12.2.1采樣、量化和編碼459
12.2.2A/D芯片460
習題12463
附錄A虛地址保護方式詳述466
附錄BASCII字符碼表500
附錄CPentium指令系統一覽表501
附錄DDOS功能調用508
參考文獻516