微型計算機原理及應用 第1章.ppt_第1頁
微型計算機原理及應用 第1章.ppt_第2頁
微型計算機原理及應用 第1章.ppt_第3頁
微型計算機原理及應用 第1章.ppt_第4頁
微型計算機原理及應用 第1章.ppt_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、微型計算機原理及應用 (第三版),新世紀計算機基礎教育叢書 主編 譚浩強,總 目 錄,第1章計算機基礎知識 第2章微型計算機的基本組成電路 第3章微型計算機的基本工作原理 第4章16位微處理器 第5章86系列微型計算機的指令系統(tǒng) 第6章微型計算機的程序設計 第7章微型計算機匯編語言及匯編程序 第8章輸入/輸出接口 第9章中斷控制器、計數/定時控制器及DMA控制器,第10章A/D及D/A轉換器 第11章32位微處理器 第12章PC總線及整機結構 第13章 MCS-51單片計算機 第14章 微型計算機在自動控制系統(tǒng)中的應用,第1章計算機與信息化社會,1.1數制 1.2邏輯電路 1.3布爾代數 1.

2、4二進制數的運算及其加法電路 習題,現代計算機是在微電子學高速發(fā)展與計算數學日臻完善的基礎上形成的,可以說現代計算機是微電子學與計算數學相結合的產物。微電子學的基本電路元件及其逐步向大規(guī)模發(fā)展的集成電路是現代計算機的硬件基礎,而計算數學的數值計算方法與數據結構則是現代計算機的軟件基礎。 微電子學與計算數學發(fā)展至今已是內容繁多、體系紛紜,已有不少專著分別闡述。本章只是簡要地闡述計算機中最基本的電路元件及最主要的數學知識。對于已學過這些知識的讀者,本章將起到復習和系統(tǒng)化的作用。對于未曾接觸過這些內容的讀者,本章的內容是必要的入門知識,因為這些內容都是以下各章的基礎。本章的目的是使本書能夠自成系統(tǒng),

3、讀者不必依賴于更多的參考書籍。,1.1 數制,數制是人們利用符號來記數的科學方法。數制可以有很多種,但在計算機的設計與使用上常使用的則為十進制、二進制、八進制和十六進制。,十萬 萬 千 百 十 個,1.1.1 數制的基與權,數制所使用的數碼的個數稱為基;數制每一位所具有的值稱為權。 十進制(decimal system)的基為“10”,即它所使用的數碼為0,1,2,3,4,5,6,7,8,9,共有10個。十進制各位的權是以10為底的冪,如下面這個數:,其各位的權為個、十、百、千、萬、十萬,即以10為底的0冪、1冪、2冪等。故有時為了簡便而順次稱其各位為0權位、1權位、2權位等。 二進制(bin

4、ary system)的基為“2”,即其使用的數碼為0,1,共兩個。 二進制各位的權是以2為底的冪,如下面這個數:,1 1 0 1 1 1,25 24 23 22 21 20,32 16 8 4 2 1,二進制 十進制,其各位的權為1,2,4,即以2為底的0次冪、1次冪、2次冪等。故有時也依次稱其各位為0權位、1權位、2權位等。 八進制(octave system)的基為“8”,即其數碼共有8個:0,1,2,3,4,5,6,7。八進制的權為以8為底的冪,有時也順次稱其各位為0權位、1權位、2權位等。 十六進制(hexadecimal system)的基為“16”,即其數碼共有16個:0,1,2

5、,3,4,5,6,7,8,9,A,B,C,D,E,F。十六進制的權為以16為底的冪,有時也稱其各位的權為0權、1權、2權等。 在微型計算機中這些數制都是經常用到的,但在本書后面的內容中,二進制和十六進制更為常用,希望初學者注意。,1.1.2 為什么要用二進制,電路通常只有兩種穩(wěn)態(tài):導通與阻塞、飽和與截止、高電位與低電位等。具有兩個穩(wěn)態(tài)的電路稱為二值電路。因此,用二值電路來計數時,只能代表兩個數碼:0和1。如以1代表高電位,則0代表低電位,所以,采用二進制,可以利用電路進行計數工作。而用電路來組成計算機,則有運算迅速、電路簡便、成本低廉等優(yōu)點。,1.1.3 為什么要用十六進制,用十六進制既可簡化

6、書寫,又便于記憶。如下列一些等值的數:1000(2)=8(16)(即8(10) 1111(2)=F(16)(即15(10) 11 0000(2)=30(16)(即48(10),1.1.4 數制的轉換方法,由于我們習慣用十進制記數,在研究問題或討論解題的過程時,總是用十進制來考慮和書寫的。當考慮成熟后,要把問題變成計算機能夠“看得懂”的形式時,就得把問題中的所有十進制數轉換成二進制代碼。這就需要用到“十進制數轉換成二進制數的方法”。在計算機運算完畢得到二進制數的結果時,又需要用到“二進制數轉換為十進制數的方法”,才能把運算結果用十進制形式顯示出來。 1. 十進制數轉換成二進制數的方法 一般可用下

7、列方法求一個十進制數的二進制代碼: 用2除該十進制數可得商數及余數,則此余數為二進制代碼的最小有效位(LSB)的值。 再用2除該商數,又可得商數和余數,則此余數為LSB左鄰的二進制數代碼。 用同樣的方法繼續(xù)用2除下去,就可得到該十進制數的二進制代碼。,【例1.1】求13的二進制代碼。其過程如下: 結果為:1101。,上面是十進制整數轉換成二進制數的“除2取余法”。 如果十進制小數要轉換成二進制小數,則要采取“乘2取整法”: 一個十進制的小數乘以2之后可能有進位使整數位為1(當該小數大于0.5時),也可能沒有進位,其整數位仍為零(當該小數小于0.5時)。這些整數位的結果即為二進制的小數位結果。舉

8、例如下: 【例1.2】求十進制數0.625的二進制數。 用乘法的豎式計算,步驟如下:,至此就不用再算下去了。如果小數位不是0.00,則還得繼續(xù)乘下去,直至變成0.00為止。因此,一個十進制小數在轉換為二進制小數時有可能無法準確地轉換。如十進制數0.1轉換為二進制數時為0.0001100110。因此,只能近似地以0.00011001來表示。 2. 二進制數轉換成十進制數的方法 由二進制數各位的權乘以各位的數(0或1)再加起來就得到十進制數。 【例1.3】求二進制數101011的十進制數。,101011 權: 25 24 23 22 21 20 乘積:32 0 8 0 2 1 累加: 43 結果:

9、43(10) 二進制小數轉換為十進制時也可用同樣的方法,不過二進制數小數各位的權是2-1,2-2。 【例1.4】求二進制數0.101的十進制數。,01 0 1 權: 20 2-1 2-2 2-3 乘積:0 0.5 0 0.125 累加: 0.625 結果:0.625(10) 由此可得出兩點注意事項: (1) 一個二進制數可以準確地轉換為十進制數,而一個帶小數的十進制數不一定能夠準確地用二進制數來表示。 (2) 帶小數的十進制數在轉換為二進制數時,以小數點為界,整數和小數要分別轉換。 此外,還有其他各種數制之間的轉換,其方法和上述方法差不多,都可以從數制的定義中找到轉換方法。,1.2 邏輯電路,

10、邏輯電路由其3種基本門電路(或稱判定元素)組成。圖1.1是基本門電路的名稱、符號及表達式。,圖1.1,在這3個基本門電路的基礎上,還可發(fā)展成如圖1.2那樣更復雜的邏輯電路。其中,最后一個叫作緩沖器(buffer),為兩個非門串聯(lián)以達到改變輸出電阻的目的。如果A點左邊電路的輸出電阻很高,則經過這個緩沖器之后,在Y點處的輸出電阻就可以變得低許多倍,這樣就能夠提高帶負載的能力。,圖1.2,1.3 布爾代數,布爾代數也稱為開關代數或邏輯代數,和一般代數一樣,可以寫成下面的表達式: Y=f(A,B,C,D) 但它有兩個特點: (1) 其中的變量A,B,C,D等均只有兩種可能的數值:0或1。布爾代數變量的

11、數值并無大小之意,只代表事物的兩個不同性質。如用于開關,則:0代表關(斷路)或低電位;1代表開(通路)或高電位。如用于邏輯推理,則:0代表錯誤(偽);1代表正確(真)。 (2) 函數f只有3種基本方式:“或”運算,“與”運算及“反”運算。下面分別講述這3種運算的規(guī)律。,1.3.1 “或”運算,由于A,B只有0或1的可能取值,所以其各種可能結果如下: Y=0+0=0Y=0 Y=0+1=1 Y=1+0=1Y=1 Y=1+1=1 上述第4個式子與一般的代數加法不符,這是因為Y也只能有兩種數值:0或1。 上面4個式子可歸納成兩句話,兩者皆偽者則結果必偽,有一為真者則結果必真。這個結論也可推廣至多變量,

12、如A,B,C,D,各變量全偽者則結果必偽,有一為真者則結果必真。寫成表達式如下:,設Y=A+B+C+D+ 則Y=0+0+0=0 Y=0 Y=1+0+0=1 Y=0+1+0=1Y=1 Y=1+1+1+1=1 這意味著,在多輸入的“或”門電路中,只要其中一個輸入為1,則其輸出必為1?;蛘哒f只有全部輸入均為0時,輸出才為0。 或運算有時也稱為“邏輯或”。當A和B為多位二進制數時,如: A=A1A2A3An,B=B1B2B3Bn 則進行“邏輯或”運算時,各對應位分別進行“或”運算: Y=A+B =(A1+B1)(A2+B2)(A3+B3)(An+Bn) 【例1.5】 設 A=10101 B=11011

13、 則Y=A+B =(1+1)(0+1)(1+0)(0+1)(1+1) =11111,寫成豎式則為 1 0 1 0 1 +)1 1 0 1 1 1 1 1 1 1 注意,1“或”1等于1,是沒有進位的。,1.3.2 “與”運算,根據A和B的取值(0或1)可以寫出下列各種可能的運算結果: Y=00=0 Y=10=0Y=0 Y=01=0 Y=11=1Y=1,這種運算結果也可歸納成兩句話:二者為真者結果必真,有一為偽者結果必偽。同樣,這個結論也可推廣至多變量:各變量均為真者結果必真,有一為偽者結果必偽。寫成表達式如下: 設Y=ABCD 則 Y=000=0 Y=100=0Y=0 Y=010=0 Y=11

14、11=1Y=1,這意味著,在多輸入“與”門電路中,只要其中一個輸入為0,則輸出必為0,或者說,只有全部輸入均為1時,輸出才為1。 與運算有時也稱為“邏輯與”。當A和B為多位二進制數時,如: A=A1A2A3An B=B1B2B3Bn 則進行“邏輯與”運算時,各對應位分別進行“與”運算: Y=AB =(A1B1)(A2B2)(A3B3)(AnBn),【例1.6】 設A=11001010 B=00001111 則Y=AB =(10)(10)(00)(00)(11)(01)(11)(01) =00001010 寫成豎式則為 1 1 0 0 1 0 1 0 ) 0 0 0 0 1 1 1 1 0 0

15、0 0 1 0 1 0,由此可見,用“0”和一個數位相“與”,就是將其“抹掉”而成為“0”;用“1”和一個數位相“與”,就是將此數位“保存”下來。這種方法在計算機的程序設計中經常會用到,稱為“屏蔽”。上面的B數(0000 1111)稱為“屏蔽字”,它將A數的高4位屏蔽起來,使其都變成0了。,1.3.3 “反”運算,如果一件事物的性質為A,則其經過“反”運算之后,其性質必與A相反,用表達式表示為: Y=A 這實際上也是反相器的性質。所以在電路實現上,反相器是反運算的基本元件。 反運算也稱為“邏輯非”或“邏輯反”。 當A為多位數時,如: A=A1A2A3An 則其“邏輯反”為:Y=A1A2A3An

16、 【例1.7】設:A=11010000 則:Y=00101111,1. 恒等式 A0=0A1=AAA=A A+0=A A+1=1A+A=A A+A=1 AA=0 A=A,1.3.4 布爾代數的基本運算規(guī)律,2. 運算規(guī)律 與普通代數一樣,布爾代數也有交換律、結合律、分配律,而且它們與普通代數的規(guī)律完全相同。 (1) 交換律: AB=BA A+B=B+A (2) 結合律: (AB)C=A(BC)=ABC (A+B)+C=A+(B+C)=A+B+C (3) 分配律: A(B+C)=AB+AC (A+B)(C+D)=AC+AD+BC+BD 利用這些運算規(guī)律及恒等式,可以化簡很多邏輯關系式。,【例1.

17、8】A+AB=A(1+B)=A A+AB=A+AB+AB=A+(A+A)B=A+B 【例1.9】如果原設計繼電器線路如圖1.3(a),現用邏輯關系,化簡線路。,圖1.3,首先,把圖1.3(a)中觸點(如同開關)和燈的關系用布爾代數表示如下: Y=(A+AB)B 其中A與A是同一繼電器的常開與常閉觸點。一般把常開觸點定為變量A,B,則相應的常閉觸點為A,B。 下面,用布爾代數進行簡化: Y=(A+AB)B =AB+ABB =AB+0 =AB 因此可以用圖1.3(b)中的電路,代替原設計的圖1.3(a)的電路。電路大大簡化了,但能起到同樣的作用。,1.3.5 摩根定理,在電路設計時,人們手邊有時沒

18、有“與”門,而只有“或”門和“非”門;或者只有“與”門和“非”門,沒有“或”門。利用摩根定理,可以解決元件互換的問題。 二變量的摩根定理為: A+B=AB AB=A+B 推廣到多變量: A+B+C+=ABC,ABC=A+B+C+ 至于多變量的摩根定理,用相同的方法同樣可以得到證明。 這個定理可以用一句話來記憶:頭上切一刀,下面變個號。 【例1.10】 AB=A+B=A+B A+B+C=ABC,1.3.6 真值表及布爾代數式的關系,當人們遇到一個因果問題時,常常把各種因素全部考慮進去,然后再研究結果。真值表也就是這種方法的一種表格形式。 例如,考慮兩個一位的二進制數A和B相加,其本位的和S及向高

19、一位進位C的結果如何? 全面考慮兩個一位二進制數,可能出現四種情況:或A=0,B=0;或A=0,B=1;或A=1,B=0;或A=1,B=1(一般n個因素可有2n種情況)。這實質是兩個一位數(可為零,也可為1)的排列。然后,對每一種情況進行分析。當A和B都為0時,S為0,進位C也為0;當A為0且B為1時,S為1,進位C為0;當A為1且B為0時,S為1,進位C為0;當A為1且B也為1時,由于S是一位數所以為0,而有進位C=1。,對于C,因為只有A與B都為1時,它才為1,所以經過分析即可知C=AB。 對于S,因為在表中第2行或第3行都可能為1,而第2行要求A=0與B=1,在寫布爾代數式時要使S為1,

20、顯然只有AB=01=1。所以第2行布爾代數式就是AB。對于第3行要求A=1與B=0,在寫布爾代數式時要使S為1,顯然只有AB=10=1。所以第3行布爾代數式就是AB。從而我們可以寫出S和A,B的關系式為S=AB+AB。 這種從真值表寫出布爾代數式的方法可以用下面兩段話來描述: (1) 寫布爾代數式先看真值表中結果為1的項,有幾項就有幾個“或”項。,(2) 每一項各因素之間是“與”關系。寫該項時每個因素都寫上,然后加“反”。至于哪個因素要加“反”(上橫線)要看該因素在這項里是否為“0”狀態(tài),是“0”狀態(tài)則加“反”,否則不加“反”。 寫出布爾代數式后,要反過來去檢查寫得對不對。例如,將第1項A=0

21、和B=0代入式S=AB+AB,則S=00+00=0;將表中第2項A=0和B=1代入式S=AB+AB則S=01+01=1+0=1;依次類推地代入檢查。如果4項都對,則式子S=AB+AB確實代表了真值表中S和A,B之間的邏輯關系。 通常,用真值表描述問題,不僅全面,而且通過它來寫布爾代數式也很簡便。,1.4 二進制數的運算及其加法電路,眾所周知,算術的基本運算共有4種:加、減、乘和除。在微型計算機中常常只有加法電路,這是為了使硬件結構簡單而成本較低。不過,只要有了加法電路,也能完成算術的4種基本運算。 1.4.1二進制數的相加 兩個二進制數相加的幾個例子: 【例1.11】 (1)(2) 1 A 0

22、 1A +)1 B+) 1 0B 1 0 S 1 1S 進位,(3)(4) 1 1 C 11 A0 1 1 A +) 11 B+) 0 1 1 B 110 S 1 1 0S 進位 進位 例1.11(1)中,加數A和被加數B都是1位數,其和S變成2位數,這是因為相加結果產生進位之故。 例1.11(2)中,A和B都是2位數,相加結果S也是2位數,因為相加結果不產生進位。 例1.11(3)中,A和B都是2位數,相加結果S是3位數,這也是產生了進位之故。,例1.11(4)中,是例1.11(3)的另一種寫法,以便看出“進位”究竟是什么意義。第1位(或稱0權位)是不可能有進位的,要求參與運算的就只有兩個數

23、A0和B0,其結果為S0。第2位(或稱1權位)就是3個數A1,B1及C1參與運算了。其中C1是由于第1位相加的結果產生的進位。此3個數相加的結果其總和為S1=1,同時又產生進位C2,送入下一位(第3位)。第3位(或稱2權位)也是3個數A2,B2及C2參加運算。由于A2及B2都是0,所以C2即等于第3位的相加結果S2。 從以上幾例的分析可得出下列結論: (1) 兩個二進制數相加時,可以逐位相加。如二進制數可以寫成:,A=A3A2A1A0 B=B3B2B1B0 則從最右邊第1位(即0權位)開始,逐位相加,其結果可以寫成: S=S3S2S1S0 其中各位是分別求出的: S0=A0+B0進位C1 S1

24、=A1+B1+C1進位C2 S2=A2+B2+C2進位C3 S3=A3+B3+C3進位C4 最后所得的和是:,C4S3S2S1S0=A+B (2) 右邊第1位相加的電路要求: 輸入量為兩個,即A0及B0; 輸出量為兩個,即S0及C1。 這樣的一個二進制位相加的電路稱為半加器(half adder)。 (3) 從右邊第2位開始,各位可以對應相加。各位對應相加時的電路要求: 輸入量為3個,即Ai,Bi,Ci; 輸出量為兩個,即Si,Ci+1。 其中i=1,2,3,n。這樣的一個二進制位相加的電路稱為全加器(full adder)。,1.4.2 半加器電路,要求有兩個輸入端,用以兩個代表數字(A0,

25、B0)的電位輸入;有兩個輸出端,用以輸出總和S0及進位C1。 這樣的電路可能出現的狀態(tài)可以用圖1.4中的表來表示。此表在布爾代數中稱為真值表。 考察一下C1與A0及B0之關系,即可看出這是“與”的關系,即: C1=A0B0 再看一下S0與A0及B0之關系,也可看出這是“異或”的關系,即: S0=A0B0 =A0B0+A0B0,即只有當A0及B0二者相異時,才起到或的作用;二者相同時,則其結果為0。因此,可以用“與門”及“異或門”(或稱“異門”)來實現真值表的要求。圖1.4就是這個真值表及半加器的電路圖。,圖1.4,1.4.3 全加器電路,全加器電路的要求是:有3個輸入端,以輸入Ai,Bi和Ci

26、,有兩個輸出端,即Si及Ci+1。其真值表可以寫成如圖1.5所示。由此表分析可見,其總和Si可用“異或門”來實現,而其進位Ci+1則可以用3個“與門”及一個“或門”來實現,其電路圖也畫在圖1.5中。,圖1.5,這里遇到了3個輸入的“異或門”的問題。如何判斷多輸入的“異或門”的輸入與輸出的關系呢?判斷的方法是:多輸入A,B,C,D,中為“1”的輸入量的個數為零及偶數時,輸出為0;為奇數時,輸出為1。,圖1.6,1.4.4 半加器及全加器符號,圖1.6(a)為半加器符號,圖1.6(b)為全加器符號。,1.4.5 二進制數的加法電路,設A=1010=10(10) B=1011=11(10) 則可安排

27、如圖1.7所示的加法電路。,圖1.7,A與B相加,寫成豎式算法如下: A:1 0 1 0 B:1 0 1 1 (+ S:10 1 0 1 即其相加結果為S=10101。 從加法電路,可看到同樣的結果: S=C4S3S2S1S0 =10101,1.4.6 二進制數的減法運算,在微型計算機中,沒有專用的減法器,而是將減法運算改變?yōu)榧臃ㄟ\算。其原理是:將減數B變成其補碼后,再與被減數A相加,其和(如有進位的話,則舍去進位)就是兩數之差。 補碼是什么呢?對于二進制數來說,簡言之,可用下式來表示: 補碼=反碼+1 這就是說,如有一個二進制數為A,這就是原碼,則其反碼為,于是補碼A可以寫成: A=A+1,

28、補碼并非只有二進制數才有。在十進制、十六進制等各種進制中都是存在的。如在十進制中原碼為6的補碼是4,原碼為64的補碼是36,原碼為642的補碼是358等。 由此可見:原碼+補碼的結果如下: 6+4=10 64+36=100 642+358=1000 即原碼與補碼互相補充而能得到一個進位數: 1位數的原碼加補碼得到的是2位數10; 2位數的原碼加補碼得到的是3位數100; 3位數的原碼加補碼得到的是4位數1000。,在做十進制減法時,也可以利用補碼而將減法運算變成加法運算。例如73-15,可利用15的補碼85而使減法變成加法:73+85=158,把進位位1去掉,58即為73與15之差。不過在十進

29、制中用電路由原碼求補碼不十分方便,所以沒有人用這個規(guī)律去算減法。 在二進制中,將原碼每位變反,可得反碼。如10100的反碼為01011,用2位電路很容易做到,而原碼與反碼相加正好差1而未有進位(無溢出)。如上例: 原碼:10100 反碼:01011 原碼+反碼=11111,如果反碼加1后再去與原碼相加就得: 原碼+(反碼+1)=10100+01100 所以,在二進制中,常用反碼加1的方法來獲得補碼。 這在計算機中非常方便,因為二進制電路由原碼求反碼是很容易的,這在下面就會看到。 有了補碼,就可以將減法變成加法來運算了。請看下面的例子。 【例1.12】求Y=8(10)-4(10)=? 解:因為A

30、=8(10)=1000(2) B=4(10)=0100(2) 則B=1011+1=1100(2),于是Y=A-B =A+B =1000+1100 =10100 進位,應舍去 =0100(2)=4(10) 【例1.13】求Y=F(H)-A(H)=?(即求15減10之差) 設A=F(H)=1111(B)=15(D) B=A(H)=1010(B)=10(D) 則B=0101+1=0110(B) 所以Y=1111+0110,= 10101 = 進位,舍去 = 0101(B)(結果為5),1.4.7 可控反相器及加法減法電路,利用補碼可將減法變?yōu)榧臃▉磉\算,因此需要有這么一個電路,它能將原碼變成反碼,并使其最小位加1。 圖1.8的可控反相

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論