數(shù)據(jù)表示方法-歡迎光臨長春金融高等專科學(xué)校_第1頁
數(shù)據(jù)表示方法-歡迎光臨長春金融高等??茖W(xué)校_第2頁
數(shù)據(jù)表示方法-歡迎光臨長春金融高等專科學(xué)校_第3頁
數(shù)據(jù)表示方法-歡迎光臨長春金融高等??茖W(xué)校_第4頁
數(shù)據(jù)表示方法-歡迎光臨長春金融高等??茖W(xué)校_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第二章 數(shù)據(jù)表示方法2-1 數(shù)據(jù)表示方法和運算器數(shù)據(jù)表示方法和運算器 2-2 邏輯部件邏輯部件 2-3 控制部件控制部件 21 數(shù)據(jù)表示方法和運算器數(shù)據(jù)表示方法和運算器 2 21 11 1計算機中數(shù)據(jù)的表示方法計算機中數(shù)據(jù)的表示方法 當(dāng)前的計算機所采用的存儲器件都是兩態(tài)器件,所以適合于存放二進制數(shù)據(jù)。盡管為了方便起見,也使用其他進制,如十進制、十六進制,但是在計算機內(nèi)部數(shù)據(jù)還是以二進制的形式存放和處理。二進制只使用了兩個不同的數(shù)字符號,易于用物理器件來實現(xiàn):在物理世界中具有兩個穩(wěn)定狀態(tài)的物理器件很多,如晶體管的“截止”與“導(dǎo)通”、電容的“充電”與“放電”、電壓信號的“高”與“低”、脈沖的“有”

2、與“無”,電磁單元的“正向磁化”與“反向磁化”等等,只要規(guī)定其中一種穩(wěn)定狀態(tài)表示“1”,另一種穩(wěn)定狀態(tài)表示“0”,就可以用來表示二進制數(shù)位了。其次,二進制的運算規(guī)則非常簡單,易于用電子器件來實現(xiàn)。數(shù)據(jù)的類型多種多樣,如文件、圖、表、樹、陣列、鏈表、棧、向量、串、實數(shù)、整數(shù)、布爾數(shù)、字符等。計算機里用到的數(shù)據(jù)類型主要可分為兩類:表示數(shù)量的數(shù)值數(shù)據(jù)和非數(shù)值性的符號數(shù)據(jù)。所有的數(shù)據(jù)都是以二進制的形式在計算機里處理和存儲。本節(jié)主要講述數(shù)值數(shù)據(jù)在計算機里的表示方法。 1數(shù)值數(shù)據(jù)表示方法數(shù)值數(shù)據(jù)表示方法 在計算機中表示數(shù)時,需要考慮以下幾個因素:要表示的數(shù)的類型(小數(shù)、整數(shù)、實數(shù)和復(fù)數(shù))、符號如何表示以及

3、小數(shù)點的位置;可能遇到的數(shù)值范圍;數(shù)值精確度;數(shù)據(jù)存儲和處理所需要的硬件代價。計算機中表示數(shù)值符號的方法是占用一位二進制位,1表示負號、0表示正號。常用的數(shù)值數(shù)據(jù)表示格式有兩種,根據(jù)小數(shù)點的位置是固定不變還是浮動變化的分為定點格式和浮點格式。一般來說,定點格式容許的數(shù)值范圍有限,但要求的處理硬件比較簡單。而浮點格式容許的數(shù)值范圍很大,但要求的處理硬件比較復(fù)雜。 (1) (1) 定點數(shù)的表示方法定點數(shù)的表示方法 所謂定點格式,即約定機器中所有數(shù)據(jù)的小數(shù)點位置是固定不變的。由于約定在固定的位置,小數(shù)點就不再使用記號“”來表示。原理上講,小數(shù)點位置固定在哪一位都可以,但是通常將數(shù)據(jù)表示成純小數(shù)或純整

4、數(shù)。 例如用一個n1位字來表示一個定點數(shù)x,其中一位x0用來表示數(shù)的符號,其余位數(shù)代表它的量值。為了將整個n1位統(tǒng)一處理起見,符號位x0放在最左位置,并用數(shù)值 0和1分別代表正號和負號,這樣,對于任意定點數(shù)x=x0 x1x2xn,在定點機中可表示為如下形式: x0 x1 x2 xn-1 xn符號 數(shù)量值 如果數(shù)x表示的是純小數(shù),那么小數(shù)點位于x0和x1之間。當(dāng)x0 x1x2xn各位均為0時,數(shù)x的絕對值最小,當(dāng)各位均為1時,x的絕對值最大,故數(shù)的表示范圍為 0 x12n 如果數(shù)x表示的是純整數(shù),那么小數(shù)點位于最低位xn的右邊,此時數(shù)x的表示范圍為 0 x2n1,目前計算機中多采用定點純整數(shù)表示

5、,因此將定點數(shù)表示的運算簡稱為整數(shù)運算。 (2) 浮點數(shù)的表示方法浮點數(shù)的表示方法 采用浮點表示法表示的數(shù)據(jù)叫做浮點數(shù),采用浮點數(shù)進行運算的機器叫做“浮點機”。浮點數(shù)是指小數(shù)點位置可以改變的數(shù),顯然浮點數(shù)可用來表示帶符號的實數(shù)。例如:表示8位字長的二進制浮點數(shù)可以寫成 0.10110101 2111 尾 數(shù) 階碼 任意一個十進制數(shù)N可以寫成 N = 10ZX ,同樣,在計算機中一個任意進制數(shù)N可以寫成 N = Bz X其中X稱為浮點數(shù)的尾數(shù),是一個純小數(shù)。z是比例因子的指數(shù),稱為浮點的指數(shù),是一個整數(shù)。比例因子的基數(shù)B是一個常數(shù),一般規(guī)定只為2,8或16。在機器中表示一個浮點數(shù)時,一是要給出尾

6、數(shù),用定點小數(shù)形式表示。尾數(shù)部分給出有效數(shù)字的位數(shù),因而決定了浮點數(shù)的表示精度。二是要給出指數(shù),用整數(shù)形式表示,常稱為階碼,階碼指明小數(shù)點在數(shù)據(jù)中的位置,因而決定了浮點數(shù)的表示范圍。浮點數(shù)也要有符號位。因此一個機器浮點數(shù)應(yīng)當(dāng)由階碼和尾數(shù)及其符號位組成: 3232位浮點數(shù)的標(biāo)準(zhǔn)格式為: Z0Z1 Z2 Zn-1 ZnX0X1 X2 Xn-1 Xn階符 階碼 數(shù)符 尾數(shù) 3130 2322 032位浮點數(shù)F Z X 64位浮點數(shù)的標(biāo)準(zhǔn)格式為: 6362 5251 064位浮點數(shù)F Z X 不論是32位浮點數(shù)還是64位浮點數(shù),規(guī)定基數(shù)B2。由于基數(shù)2是固定常數(shù),不必用顯示方式來表示它。 32位的浮點

7、數(shù)中,F(xiàn)是浮點數(shù)的符號位,占1位,安排在最高位,F(xiàn)0表示正數(shù),F(xiàn)1表示負數(shù)。X是尾數(shù),放在低位部分,占用23位,用小數(shù)表示,小數(shù)點放在尾數(shù)域的最前面。Z是階碼,占用8位,階符采用隱含方式,即采用移碼方法來表示正負指數(shù)。移碼方法對兩個指數(shù)大小的比較和對階操作都比較方便,因為階碼域值大者其指數(shù)值也大。采用這種方式時,將浮點數(shù)的指數(shù)值z變成階碼Z時,應(yīng)將指數(shù)z加上一個固定的偏移值127(01111111),即Zz127。一個規(guī)格化的32位浮點數(shù)X的值可表示為X(1)F(1X) 2E127 其中尾數(shù)域所表示的值是1X。因為規(guī)格化的浮點數(shù)的尾數(shù)域最左位也即最高有效位總是1,故這一位經(jīng)常不予存儲,而認為隱

8、藏在小數(shù)點的左邊。 64位的浮點數(shù)中符號位1位,階碼域11位,尾數(shù)域52位,指數(shù)偏移值是1023。因此規(guī)格化的64位浮點數(shù)X的真值為X=(1)F (1X) 2E1O23 zE1023 若不對浮點數(shù)的表示作出明確規(guī)定,同一個浮點數(shù)的表示就不是惟一的。例如05也可以表示成005101,50102等等。為了提高數(shù)據(jù)的表示精度,當(dāng)尾數(shù)的值不為0時,其絕對值應(yīng)05,即尾數(shù)域的最高有效位應(yīng)為1,否則要以修改階碼同時左右移小數(shù)點的辦法,使其變成這一要求的表示形式,這稱為浮點數(shù)的規(guī)格化表示。當(dāng)一個浮點數(shù)的尾數(shù)為0,不論其階碼為何值,或者當(dāng)階碼的值遇到比它能表示的最小值還小時,不管其尾數(shù)為何值,計算機都把該浮點

9、數(shù)看成零值,稱為機器零。 浮點數(shù)所表示的范圍遠比定點數(shù)大的多。假設(shè)(考慮符號位)機器中的數(shù)由8位二進制數(shù)表示時:在定點機中這8位全部用來表示有效數(shù)字(包括符號);在浮點機中若階符階碼占3位,數(shù)符尾數(shù)占5位。在此情況下,若只考慮正數(shù)值,定點機小數(shù)表示的數(shù)的范圍是00000000到01111111,相當(dāng)于十進制數(shù)的0到127,而浮點機所能表示的數(shù)的范圍是21100001到21101111,相當(dāng)于十進制數(shù)的112875。顯然,都用8位,浮點機能表示的數(shù)的范圍比定點機大得多。 一臺計算機中究竟采用定點表示還是浮點表示,要根據(jù)計算機的使用條件來確定。一般在高檔微機以上的計算機中同時采用定點、浮點表示,由

10、使用者進行選擇。而單片機中多采用定點表示。 【例21】若浮點數(shù)X0的二進制存儲格式為(43240000)16,求其32位浮點數(shù)的十進制值。 解: 將16進制數(shù)展開后,可得二制數(shù)格式為 0 100 0011 0 010 0100 0000 0000 0000 0000 F 階碼(8位) 尾數(shù)(23位) 指數(shù)z階碼127100001100111111100000111(7)10。包括隱藏位1的尾數(shù)1X1010 0100 0000 0000 0000 00001010010 于是有 X0(1)F 1X 2z(1010010) 2710100100(187)10。 【例22】將十進制數(shù)1659375轉(zhuǎn)

11、換成32位浮點數(shù)的二進制格式來存儲。 解:首先分別將整數(shù)和分數(shù)部分轉(zhuǎn)換成二進制數(shù):16593751000010011移動小數(shù)點,使其在第1位和第2位之間10000100111000010011 24 z4 所以:F=0,E=4127 =131,X=000010011 則得到的32位浮點數(shù)的二進制存儲格式為: 0100 0001 1000 0100 1100 0000 0000 0000 = (4184C000)16 (3)定點數(shù)據(jù)的編碼方法定點數(shù)據(jù)的編碼方法 真值與機器碼機器碼是數(shù)在計算機中的表示形式。對于數(shù)值數(shù)據(jù)而言,無論以定點形式表示或是以浮點形式表示,都需要通過某種編碼 方法,以計算機所

12、能處理的0和1二進制位來表示其數(shù)值大小。通常一個數(shù)值數(shù)據(jù)的機內(nèi)表示形式稱為其機器碼,而一個機器碼所代表的數(shù)值稱為該機器碼的真值。計算機中只有機器碼,不存在數(shù)的真值。假設(shè)機器碼的寬度為n,最高位為符號位,下面分別介紹實際應(yīng)用中常見的4種機器碼編碼方法:原碼、反碼、補碼和移碼。 原碼表示法定點整數(shù)原碼表示法定點整數(shù)原碼的定義如下所示: X 原= X 0X2n1 X 原=2n1X 2n1X0 由定義可以看出,正整數(shù)的原碼就是其自身,負整數(shù)的原碼只需把其絕對值的原碼的符號位置為1即可。( 用0表示正號,用1表示負號)。原碼表示方法的定點整數(shù)的取值范圍為(2n1)X2n11。注意在原碼表示法中,零有正零

13、和負零之分。000000,010000。定點小數(shù)的原碼表示法定點小數(shù)原碼的定義如下所示:X 原 X 0X1X 原1X 1X0 正的純小數(shù)的原碼就是其自身,而負的純小數(shù)的原碼可以通過把其絕對值的原碼的符號位置1來得到。其取值范圍為(12(n1)X(12(n1)。綜上可以看出一個數(shù)的原碼是由符號位加上數(shù)值位絕對值組成,符號位為0代表正數(shù),符號位為1代表負數(shù)。由于0有0和0兩種表示方法,n位二進制數(shù)可以表示2n1個原碼。 用原碼實現(xiàn)乘除運算規(guī)則較簡單,但做加減運算不方便。原碼表示法的一個主要優(yōu)點在于其真值和機器碼表示之間對應(yīng)關(guān)系很直觀,容易轉(zhuǎn)換。補碼表示法定點整數(shù)的補碼表示定點整數(shù)補碼的定義如下所示

14、:X 補 X 0X2n1X 補2nX 2n1X0 正整數(shù)的補碼就是其自身,負整數(shù)的補碼可以通過對其絕對值部分逐位求反,并在最低位加1求得。同樣,在補碼表示法中,符號位為0表示正號,為1表示負號。其表示的真值X的范圍為 2n1X2n11。在補碼表示中,0的機器碼是惟一的,沒有0和0之分。定點小數(shù)的補碼表示定點小數(shù)補碼的定義如下所示:X 補 X 0X1X 補2X 1X0定點小數(shù)的補碼求解方法與定點整數(shù)的補碼求解方法相類似。其表示的真值X的范圍為1X12-(n-1)。當(dāng)n8時,1的定點小數(shù)補碼表示為:10000000,而用定點整數(shù)的補碼表示1,則為11111111。 在補碼表示方法中,0的編碼是惟一

15、的,所以n位二進 制數(shù)可以表示2n個補碼。 反碼表示法定點整數(shù)的反碼表示定點整數(shù)反碼的定義如下所示: X 反 X 0X2n1 X 反(2n1)X 2n1X0同樣,正整數(shù)的反碼就是其自身,而負整數(shù)的反碼可以通過對其絕對值逐位求反來求得。在反碼表示法中,符號位仍然用0表示正號,1表示負號。其表示的真值范圍與原碼相同:(2n11)X2n-11。數(shù)值0用反碼表示亦有0和0之分。當(dāng)n8時,0反00000000,0反11111111。定點小數(shù)的反碼表示定點小數(shù)反碼的定義如下所示:X 反 X 0X1X 反(22n1)X 1X0定點小數(shù)的反碼求解方法類似定點整數(shù)的反碼求解方法。其表示的真值的取值范圍為:(12

16、(n1)X(12(n1)。反碼表示法中,由于0占有了兩個不同的編碼,所以,n位二進制數(shù)可以表示2n1個反碼。移碼表示法定點整數(shù)的移碼表示 X 移2n1X 2n-1X2n1 定點小數(shù)的移碼表示 X 移1X 1X1移碼的符號位與其他三種編碼不同,用1表示正號而0表示負號。移碼的求法其實也很簡單,把其補碼的符號位直接變反即可。所以在移碼表示法中,0也有惟一的表示方法:10000000(n8) 【例】 設(shè)機器碼長度為8,求X(6)10的原碼、補碼、反碼和移碼。 解:解:X原碼原碼27(110)1000000011010000110 X補碼補碼28(110)1000000011011111010 X反碼

17、反碼(281)(110)1111111111011111001 X移碼移碼27(110)1000000011001111010【例】【例】 設(shè)機器碼長度為設(shè)機器碼長度為8,求,求X(03125)10(00101)2的原碼、補碼、反碼和移碼。的原碼、補碼、反碼和移碼。 解:解:X原碼原碼1X10(00101)1010110101000 X補碼補碼2X100(00101)1101111011000 X反碼反碼(227)X(10000000001)(00101)11010111 X移碼移碼1X10(00101)0101101011000 實際上求某個數(shù)的原碼、補碼、反碼和移碼時不僅可以利用其定義式采

18、求解,也可以通過這4個編碼間的相互關(guān)系來求得。比如移碼就可以通過把補碼的符號位變反來求,而對于正數(shù)來講其原碼、補碼和反碼是完全相同的;一個負數(shù)的補碼也可以很容易地從其原碼推知:除符號位外,各位取反,末位再加1即可。(4)浮點數(shù)據(jù)的編碼方法浮點數(shù)據(jù)的編碼方法計算機內(nèi)部浮點數(shù)據(jù)表示成如下形式:FXZX FX是尾數(shù)的符號位,0表示正號而l表示負號;Z是階碼,通常用移碼表示;X是定點小數(shù)形式的尾數(shù),一般用補碼或原碼表示?!纠?】 某浮點數(shù)機器碼10位,基數(shù)為2,階碼用4位移碼表示,尾數(shù)5位用補碼表示,符號位1位。求2100110l的編碼。解: 符號位FX0 階碼Z(10)移碼1010 尾數(shù)X(0110

19、1)補碼11010 則其編碼為0101011010【例 】 某浮點數(shù)機器碼為17位,基數(shù)為2,階碼用4位移碼表示,尾數(shù)用12位補碼表示,符號位1位。求275的浮點編碼形式。解:首先把275表示成浮點形式: (275)10(0687522)10(01011)22(10) FX1 Z(10)移碼1010 X(01011)補碼010100000000 編碼為11010010100000000 同一個浮點數(shù)可以有許多種不同的編碼表示(改變其階碼),所以需要對浮點數(shù)進行規(guī)格化處理,以統(tǒng)一其形式,同時提高數(shù)據(jù)的表示精度。規(guī)格化處理(基數(shù)為2)尾數(shù)部分以純小數(shù)形式表示,其絕對值應(yīng)滿足05X1。若不滿足該條件

20、,則需要修改階碼并對尾數(shù)進行移位,以使尾數(shù)滿足該條件; 當(dāng)尾數(shù)為正時,無論其使用原碼還是補碼表示,X應(yīng)滿足條件:05X1。以二進制形式表示為X01xx x(x為0或1); 用原碼表示的負尾數(shù),X滿足1X05,以二進制形式表示為M11 xx x(x為0或1);以補碼表示的負尾數(shù),X滿足1M05,以二進制形式表示為X10 xx x(x為0或1); 從上面的討論可以看出,如果規(guī)格化的尾數(shù)用原碼表示,則其最高位一定為1如果改用補碼表示,則尾數(shù)的最高位與其符號位相反,即為0。 2符號數(shù)據(jù)的表示方法符號數(shù)據(jù)的表示方法 現(xiàn)代計算機不僅處理數(shù)值領(lǐng)域的問題,而且處理大量非數(shù)值領(lǐng)域的問題。這樣一來,必然要引入文字

21、、字母以及某些專用符號,以便表示文字語言、邏輯語言等信息。例如人機交換信息時使用英文字母、標(biāo)點符號、十進制數(shù)以及諸如$,等符號。然而數(shù)字計算機只能處理二進制數(shù)據(jù),因此,上述信息應(yīng)用到計算機中時,都必須編寫成二進制格式的代碼,也就是字符信息用數(shù)據(jù)表示,稱為符號數(shù)據(jù)。最常見的編碼格式為ASC碼和EBCDIC碼。(1)ASC碼目前國際上普遍采用的一種字符系統(tǒng)是七單位的ASCII碼(美國國家信息交換標(biāo)準(zhǔn)字符碼),它包括10個十進制數(shù)碼,26個英文字母和一定數(shù)量的專用符號,如$,等,總共128個元素,因此二進制編碼需要7位,加上一個偶校驗位,共8位,剛好為一個字節(jié)。表21列出了七單位的ASCII碼字符編

22、碼表。 ASCII碼規(guī)定8個二進制位的最高一位為0,余下的7位可以給出128個編碼,表示128個不同的字符。其中95個編碼,對應(yīng)著計算機終端能輸人并且可以顯示的95個字符,打印機設(shè)備也能打印這95個字符,如大小寫各26個英文字母,09這10個數(shù)字符,通用的運算符和標(biāo)點符號,*,等等。 另外的33個字符,其編碼值為031和127,則不對應(yīng)任何一個可以顯示或打印的實際字符,它們被用作控制碼,控制計算機某些外圍設(shè)備的工作特性和某些計算機軟件的運行情況。 計算機里的存儲和傳送單位通常使用Byte(1Byte8 bit),所以7位的ASCII碼也用一個字節(jié)來表示。ASCII編碼和128個字符的對應(yīng)關(guān)系如

23、表21所示。表中編碼符號的排列次序為,最高1位沒有使用,通常填0;也可以把它用作校驗位或者用來擴展字符集。表中未給出,列為高位部分,行為低位部分。 ASCII的字符編碼表一共有2416行,238列。低4位編碼用作行編碼,而高3位用作列編碼。值得注意的一點是數(shù)字“0”到“9”的編碼:它們都位于3列 (011),從0行(0000)排列到9行(1001),即“0”的ASCII碼為(0110000)2(30)16,“9”的 ASCII碼為(0111001)2(39)16。把高3位屏蔽掉,低4位恰是“0”“9”的二進制碼??梢钥闯?,十進制的8421碼可以去掉(011)而得到。這個特點使得在數(shù)字符號(AS

24、CII碼)與數(shù)字值(二進制碼)之間進行轉(zhuǎn)換非常方便。 表21 ASC字符編碼表 0000010100111001011101110000NULDELSP0Pp0001SOHDC1!1AQaq0010STXDC22BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;Kk1100FFFS,Nn1111SIUS/?OoDEL字符串是指連續(xù)的一串字符,通常方式下,它們占用主

25、存中連續(xù)的多個字節(jié),每個字節(jié)存一個字符。當(dāng)主存字由2個或4個字節(jié)組成時,在同一個主存字中,既可按從低位字節(jié)向高位字節(jié)的順序存放字符串內(nèi)容,也可按從高位字節(jié)向低位字節(jié)的次序順序存放字符串內(nèi)容。這兩種存放方式都是常用方式,不同的計算機可以選用其中任何一種。例如下述字符串: 圖2-1字符串在主存中的存放 IF AB ELSEREAD (C) 就可以按圖21所示從高位字節(jié)到低位字節(jié)依次存放在主存中。其中主存單元長度由4個字節(jié)組成。每個字節(jié)中存放相應(yīng)字符的ASCII值,文字表達式中的空格“”在主存中也占一個字節(jié)的位置。因而每個字節(jié)分別存放十進制的73,70,32,65,62,66,32,69,76,83

26、,69,32,82,69,65,68,40,67,41,32。(2)EBCDIC碼EBCDIC(Extended Binary Coded Decimal Interchange Code)即所謂擴展的二十進制交換碼。采用8 bit編碼來表示一個字符,共可以表示28256個不同符號,但EBCDIC中并沒有使用全部編碼,只選用了其中一部分,剩下的保留作擴充用。EBCDIC碼常用于IBM大型機中。在EBCDIC碼制中,數(shù)字“0”“9”的高4位編碼都是1111,而低4位編碼則依次為0000到1001。把高四位屏蔽掉,也很容易實現(xiàn)從EBCDIC碼到二進制數(shù)字值的轉(zhuǎn)換。 3 3漢字的表示方法漢字的表示方

27、法(1 1) 漢字的輸入編碼漢字的輸入編碼為了能直接使用西文標(biāo)準(zhǔn)鍵盤把漢字輸入到計算機,就必須為漢字設(shè)計相應(yīng)的輸入編碼方法。當(dāng)前采用的方法主要有以下三類: 數(shù)字編碼 常用的是國標(biāo)區(qū)位碼,用數(shù)字串代表一個漢字輸入。區(qū)位碼是將國家 標(biāo)準(zhǔn)局公布的6763個兩級漢字分為94個區(qū),每個區(qū)分94位,實際上把漢字表示成二維數(shù)組,每個漢字在數(shù)組中的下標(biāo)就是區(qū)位碼。區(qū)碼和位碼各兩位十進制數(shù)字,因此輸入一個漢字需按鍵四次。例如“中”字位于第54區(qū)48位,區(qū)位碼為5448。數(shù)字編碼輸入的優(yōu)點是無重碼,且輸入碼與內(nèi)部編碼的轉(zhuǎn)換比較方便,缺點是代碼難以記憶。 拼音碼 拼音碼是以漢語拼音為基礎(chǔ)的輸入方法。凡掌握漢語拼音的

28、人,不需訓(xùn) 練和記憶,即可使用。但漢字同音字太多,輸入重碼率很高,因此按拼音輸入后還必須進行同音字選擇,影響了輸入速度。 字形編碼 字形編碼是用漢字的形狀來進行的編碼。漢字總數(shù)雖多,但是由一筆 一劃組成,全部漢字的部件和筆劃是有限的。因此,把漢字的筆劃部件用字母或數(shù)字進行編碼,按筆劃的順序依次輸入,就能表示一個漢字。例如五筆字型編碼是最有影響的一種字形編碼方法。 除了上述三種編碼方法之外,為了加快輸入速度,在上述方法基礎(chǔ)上,發(fā)展了詞組 輸入、聯(lián)想輸入等多種快速輸入方法。但是都利用了鍵盤進行“手動”輸入。理想的輸入方式是利用語音或圖像識別技術(shù)“自動”將拼音或文本輸入到計算機內(nèi),使計算機能認識漢字

29、,聽懂漢語,并將其自動轉(zhuǎn)換為機內(nèi)代碼表示。目前這種理想已經(jīng)成為現(xiàn)實。(2 2) 漢字的存儲(漢字內(nèi)碼)漢字的存儲(漢字內(nèi)碼) 漢字內(nèi)碼是用于漢字信息的存儲、交換、檢索等操作的機內(nèi)代碼,一般采用兩個字節(jié)表示。英文字符的機內(nèi)代碼是七位的ASCII碼,當(dāng)用一個字節(jié)表示時,最高位為“0”。為了與英文字符能相互區(qū)別,漢字機內(nèi)代碼中兩個字節(jié)的最高位均規(guī)定為“1”。例如漢字操作系統(tǒng)CCDOS中使用的漢字內(nèi)碼是一種最高位為“l(fā)”的兩字節(jié)內(nèi)碼。 有些系統(tǒng)中字節(jié)的最高位用于奇偶校驗位,這種情況下用三個字節(jié)表示漢字內(nèi)碼。 (3 3) 漢字的輸出(漢字字模碼)漢字的輸出(漢字字模碼) 字模碼是用點陣表示的漢字字形代碼

30、,它是漢字的輸出形式。根據(jù)漢字輸出的要求不同,點陣的多少也不同。簡易型漢字為16 16點陣,提高型漢字為24 24點陣、32 32點陣,甚至更高。因此字模點陣的信息量是很大的,所占存儲空間也很大。以16 16點陣為例,每個漢字要占用32個字節(jié),國標(biāo)兩級漢字要占用 256K字節(jié)。因此字模點陣只能用來構(gòu)成漢字庫,而不能用于機內(nèi)存儲。字庫中存儲了每個漢字的點陣代碼。當(dāng)顯示輸出或打印輸出時才檢索字庫,輸出字模點陣,得到字形。圖 22示出了“大”字的點陣及編碼。注意,漢字的輸入編碼、漢字內(nèi)碼、字模碼是計算機中用于輸入、內(nèi)部處理、輸出三種不同用途的編碼,不要混為一談。 圖22漢字的字模點陣及編碼 4校驗碼

31、校驗碼 元件故障、噪聲干擾等各種因素常常導(dǎo)致計算機在處理信息過程中出現(xiàn)錯誤。例如將1位x從部件A傳送到部件B,可能由于傳送信道中的噪聲干擾而受到破壞,以至于在接收部件B收到的是而不是x。為了防止這種錯誤,可將信號采用專門的邏輯線路進行編碼以檢測錯誤,甚至校正錯誤。通常的方法是,在每個字上添加一些校驗位,用來確定字中出現(xiàn)錯誤的位置。計算機中常用這種檢錯或糾錯技術(shù)進行存儲器讀寫正確性或傳輸信息的檢驗。這里僅介紹檢錯碼中的奇偶校驗碼。最簡單且應(yīng)用廣泛的檢錯碼是采用一位校驗位的奇校驗或偶校驗。設(shè)X(x0 x1 xn-1)是一個n位字,則奇校驗位 定義為 C x0 x1xn-1 式中代表按位加,表明只有

32、當(dāng)X中包含有奇數(shù)個1時,才能使 1,即C0。 同理,偶校驗位C定義為Cx0 x1xn-1 即X中包含偶數(shù)個1時,才使C0。 假設(shè)一個字X從部件A傳送到部件B。在源點A,校驗位C可用上面公式算出來,并合在一起將( x0 x1 xn-1 C )送到B。假設(shè)在B點真正接收到的是X( x0 x1 xn-1 C ),然后計算 F( x0 x1 xn-1 C )若F1,意味著收到的信息有錯,例如(x0 x1 xn-1)中正巧有一位變“反”時就會出現(xiàn)這種情況。若F0,表明X字傳送正確。奇偶校驗可提供單個錯誤檢測,但無法檢測多個錯誤,更無法識別錯誤信息的位置。 【例】 已知下表中左面一欄有5個字節(jié)的數(shù)據(jù)。請分

33、別是用奇校驗和偶校驗進行編碼,填在中間一欄和右面一欄。 解:假定最低一位為校驗位,其余高8位為數(shù)據(jù)位,列表如下。從中看出,校驗位的值取。還是取1,是由數(shù)據(jù)位中1的個數(shù)決定的。 數(shù)據(jù)偶校驗編碼奇校驗編碼10101010101010100101010101010101000101010010101010000000000000000000000000000101111111011111111011111110111111111111111101111111112 21 12 2 計算機中計算機中算術(shù)運算和邏輯運算算術(shù)運算和邏輯運算1 1二進制數(shù)的算術(shù)運算二進制數(shù)的算術(shù)運算(1 1) 定點數(shù)運算定點

34、數(shù)運算 定點數(shù)加法減法運算定點數(shù)的加法和減法運算使用補碼較為方便。對于定點小數(shù)的運算規(guī)則如下: 加法:XY補X補y補 mod 2 減法:XY補X補y補 mod 2當(dāng)運算結(jié)果超過了定點數(shù)的表示范圍時,則產(chǎn)生溢出(Overflow),常用的溢出檢測機制主要有以下兩種:進位判決法: 令Cn1表示次高位(最高數(shù)值位)向最高位(符號位)的進位,Cn則表示符號位的進位,則結(jié)果是否溢出的判決表如表22所示,即CnCn11時溢出。這里,表示異或。 表22 溢出的判決表 CnCn1OverflowCnCn100無溢出01溢出10溢出11無溢出 【例.】X(100)10(01100100)2,Y(50)10(00

35、110010)2,求XY。解: X補01100100,y補00110010 XY補X補y補10010110 CnCn11,表示結(jié)果溢出?!纠?】X(100)l0(01100100)2,Y(50)l0(00110010)2,求XY。解: X補10011100,y補00110010 XY補X補Y補11001110 CnCn10,因此沒有溢出。雙符號位判決法: 采用兩位二進制位來表示符號位:00正號,11負號,根據(jù)運算結(jié)果的符號位也可以判定其是否溢出,其判決表如表23所示。 表23 雙符號位判決表 運算結(jié)果的符號位Overflow運算結(jié)果的符號位Overflow00無溢出10溢出01溢出11無溢出

36、【例2.1】X(100)l0(01100100)2,Y(50)l0(00110010)2,求XY。解: X補001100100 Y補000110010 XY補X補y補010010110 其符號位為0 1,說明結(jié)果溢出。 定點數(shù)乘法運算在作定點數(shù)的乘法運算時采用原碼比較方便。通常使用原碼一位乘法來求兩個定點數(shù)的乘積。 運算規(guī)則:乘積的符號位等于乘數(shù)和被乘數(shù)的符號位進行異或;乘積的值等于兩數(shù)絕對值之積,即乘數(shù)和被乘數(shù)的絕對值進行移位相加。算法:(用絕對值進行運算) 令X表示被乘數(shù),Y表示乘數(shù),P表示部分積以存放中間結(jié)果,flag用作判別位,count用作計數(shù)。 令P0;count0;flag0;

37、P和Y一起右移一位(P為高位部分,Y為低位部分),右移時P的最高位補0,P的最低位移入Y的最高位,Y的最低位移入到flag中; 如果flag1同PPX,否則P不變; countcount1,如果count超過Y的位數(shù)則運算停止,否則轉(zhuǎn)到上述第2步繼續(xù)執(zhí)行; P和Y的內(nèi)容就是所求乘積的絕對值,其中P存放積的高位,而Y存放積的低位?!纠?X(10)l0(1010)2,Y(6)10(0110)2,求X,Y。解: X原1010,Y原0110乘積的符號位S 0 1 1。 表24 定點數(shù)乘法運算表 執(zhí)行動作部分積P乘數(shù)Y判別位Flagcounter初始化0000011000右移0000001101右移0

38、000000112P+X1010 右移0101000013P+X1111 右移0111100004右移0011110005則所得乘積為(00111100)2(60)l0 定點數(shù)除法運算定點數(shù)的除法通常也常用原碼進行。下面介紹常用的加減交替法求兩個數(shù)X和Y 的商。運算規(guī)則:商的符號位同定點數(shù)原碼乘法的處理方法,由兩數(shù)的符號位進行異或;兩數(shù)的絕對值部分進行相除;算法:(求XY,設(shè)X、Y的數(shù)值部分長度為N) 令及RX,counter0; RRY;若R為正則商1,否則商0; R左移一位,countercounter1; 若上一次商為1則RRY,否則RRY; R為正則商1,否則商0; 若R0或者coun

39、terN則結(jié)束,否則轉(zhuǎn)到上述第3步執(zhí)行。 (2) 浮點數(shù)運算浮點數(shù)運算在進行浮點運算之前,應(yīng)先對浮點數(shù)進行規(guī)格化。浮點數(shù)的加減運算設(shè)有浮點數(shù)XM2i,YN2j,求XY或XY,其運算過程如下: 對階:使兩個數(shù)的階碼相同。令Kij,把階碼小的數(shù)的尾數(shù)右移K位,其階碼加上K。當(dāng)右移尾數(shù)時,若尾數(shù)用補碼表示則符號位參加移位,符號位不變,如果是原碼,則符號位不參加移位,尾數(shù)的最高位補0。 尾數(shù)進行加、減運算: 規(guī)格化處理:若尾數(shù)所得結(jié)果不是規(guī)格化的數(shù),則需對其進行規(guī)格化處理。當(dāng)尾數(shù)溢出時,尾數(shù)向右規(guī)格化位,階碼加1;當(dāng)尾數(shù)用補碼表示,尾數(shù)的最高位與符號位相同時,應(yīng)向左規(guī)格化,尾數(shù)每向左移一位,階碼減1,

40、直到尾數(shù)最高位與符號位相反。 舍入操作:舍入的方法常用0舍1入,即當(dāng)向右規(guī)格化時,若移掉的最高位為1,則在尾數(shù)末位加1,否則舍去。另一種則是“恒1”法,即不管移走的數(shù)據(jù)為何值,尾數(shù)最末位恒置1。 溢出判斷:以階碼為準(zhǔn)。若階碼上溢,則結(jié)果溢出;若階碼下溢,則結(jié)果為0;否則結(jié)果正確無溢出。 浮點數(shù)的乘除運算 浮點數(shù)相乘,其積的階碼為兩數(shù)階碼相加,積的尾數(shù)為兩尾數(shù)相乘。浮點數(shù)相除,其商的階碼為兩數(shù)階碼之差,商的尾數(shù)為兩尾數(shù)相除。其結(jié)果都需要進行規(guī)格化處理,同時還需要判斷其階碼是否溢出。 2邏輯代數(shù)及邏輯運算 邏輯代數(shù)是1849年英國數(shù)學(xué)家喬治布爾提出的以代數(shù)的方式對邏輯變量進行描述和分析的數(shù)學(xué)工具,

41、又稱布爾代數(shù)。邏輯變量的取值只有“真”和“假”,通常以1和0表示。 (1) 基本的邏輯運算基本的邏輯運算 “與”(AND)運算 又稱為邏輯乘運算,其運算符號通常用AND、或等表示。兩個變量的“與”運算的運算規(guī)則如表24所示。即當(dāng)A、B中任一變量取0值時,其運算結(jié)果為0。 表25 “與”運算表 表26 “或”運算表 ABZ=AB000010100111ABZ=A+B000011101111“或”(OR)運算 又稱為邏輯加運算,其運算符號為OR、U、V或等。兩個變量的“或”運算規(guī)則如表25所示。即當(dāng)A、B中任意一個取1值時,其運算結(jié)果為l。“非”(NOT)運算 又稱為邏輯求反運算。常用表示對變量A

42、進行求反。其運算規(guī)則很簡單:0,。 “異或”運算 常用的還有“異或”運算,又稱為半加運算,其運算符號為XOR或。異或運算是一種復(fù)合邏輯運算,可用上述基本邏輯運算表示如下:AB A BA B 22 邏輯部件邏輯部件 221 寄存器寄存器 1寄存器組寄存器組(register block)概述概述CPU中的寄存器通??梢苑譃閮深悾河脩艨梢姷募拇嫫?user-visible registers)和狀態(tài)控制寄存器(control and status registers)。 (1) 用戶可見的寄存器用戶可見的寄存器用戶能夠通過機器語言來訪問這些寄存器。合理優(yōu)化地使用這些寄存器可以減少對主存的訪問次數(shù),

43、從而提高程序的執(zhí)行速度。按其功能可以分為4類:通用寄存器(general purpose register)通用寄存器的用途由程序員編程決定,例如可以用來存放操作數(shù),也可以用作尋址寄存器。數(shù)據(jù)寄存器(dataregister)數(shù)據(jù)寄存器僅能用來存放數(shù)據(jù)而不能用來對操作數(shù)的地址進行計算。 地址寄存器(addressregister) 地址寄存器用來存放操作數(shù)的地址,一般而言地址寄存器又可以分為段地址寄存器(segment pointer register)、間址寄存器(index register)和堆棧寄存器(stack pointer register)。段地址寄存器用在采用段式內(nèi)存管理的計

44、算機中,存放著某一段內(nèi)存區(qū)域的基地址。間址寄存器用在間接尋址(indexed addressing)方式下。堆棧寄存器用以存放堆棧棧頂?shù)牡刂?,使得在使用堆棧操?如push,pop)時無須顯式地給出操作數(shù)的地址(即其地址是隱含的)。標(biāo)志寄存器(flagcondition codes register)標(biāo)志寄存器中的位是由CPU硬件根據(jù)運算的結(jié)果而設(shè)立的一些指示位,以反映該次運算的某些特征:結(jié)果為正、負、零、溢出等等,并可以用作分支跳轉(zhuǎn)的依據(jù)。一般而言,標(biāo)志寄存器允許編程者進行讀操作,但不允許對其直接進行寫操作。 (2)狀態(tài)控制寄存器狀態(tài)控制寄存器(CSR)這些寄存器被控制器(control u

45、nit)用來控制CPU的操作。通常是程序員不可見的,但也有某些寄存器在某種特定的狀態(tài)下可以由某些特權(quán)指令進行訪問。常見的CSR有:程序計數(shù)器(program counter,PC)、指令寄存器(instruction register,IR)、存儲器地址寄存器(memoryaddress,register,MAR)、存儲器緩沖寄存器(memory buffer register,MBR)以及程序狀態(tài)字(programstatusword,PSW)。PC中存放著下一條待取指令的地址。當(dāng)程序順序執(zhí)行時,CPU在取回一條指令后,會自動修改PC中的值以使其指向下一條指令。而程序中的分支或跳轉(zhuǎn)指令也是通

46、過修改PC中的值來達到改變流程的目的。IR中存放著CPU剛?cè)』氐闹噶?,以供指令譯碼使用。CPU和存儲器之間的數(shù)據(jù)交換通過MAR和MBR來實現(xiàn)。MAR中存放著待訪問的內(nèi)存單元的地址而MBR則存放從內(nèi)存中讀人的數(shù)據(jù)或要寫回內(nèi)存單元的數(shù)據(jù)。這4個寄存器(PC、IR、MAR、MBR)用來實現(xiàn)在CPU和存儲器(memory)之間的數(shù)據(jù)交換。另外CPU內(nèi)部,在ALU與MBR、用戶可見的寄存器之間也可能存在用作輸入/輸出緩沖寄存器。 2寄存器邏輯組成寄存器邏輯組成 寄存器是計算機的一個重要部件,用于暫存數(shù)據(jù)、指令等。它由觸發(fā)器和一些控制門組成。在寄存器中,常用的是正邊沿觸發(fā)D觸發(fā)器和鎖存器。 圖23所示是由

47、正沿觸發(fā)的D觸發(fā)器組成的四位寄存器。在CP正沿作用下,外部數(shù)據(jù)才能進入寄存器。D是復(fù)位端,CP 是 D觸發(fā)器的脈沖端,CK 是增加了個與邏輯門電路來取正沿脈沖的輸入端。四D寄存器的功能見表27,其中代表正脈沖,也即正沿。 圖23四D寄存器 表27 四D寄存器功能表 控制和輸入輸出R DCK1D2D3D4D1Q2Q3Q4Q11D2D3D4D1D2D3D4D00000事實上,在計算機中常要求寄存器有移位功能。如在進行乘法時,要求將部分積右移;在將并行傳送的數(shù)轉(zhuǎn)換成串行數(shù)時也需移位。有移位功能的寄存器稱為移位寄存器。222 計數(shù)器計數(shù)器計數(shù)器是計算機、數(shù)字儀表中常用的一種電路。計數(shù)器按時鐘作用方式來

48、分,有同步計數(shù)器和異步計數(shù)器兩大類。在異步計數(shù)器中,由于高位觸發(fā)器的時鐘信號是由低一位觸發(fā)器的輸出來提供的,但是結(jié)構(gòu)簡單。同步計數(shù)器中各觸發(fā)器的時鐘信號是由同一脈沖來提供的,因此,各觸發(fā)器是同時翻轉(zhuǎn)的,它的工作頻率比異步計數(shù)器高,但結(jié)構(gòu)較復(fù)雜。計數(shù)器按計數(shù)順序來分,有二進制、十進制兩大類。在計算機中較少使用異步計數(shù)器,這里著重介紹有并行輸入數(shù)據(jù)功能的正向同步十進制計數(shù)器。圖24是用主從JK觸發(fā)器構(gòu)成的同步十進制集成化計數(shù)器。同步計數(shù)器是采用快速進位方式來計數(shù)的,觸發(fā)器及實現(xiàn)快速進位的邏輯電路是它的核心。 圖24十進制同步計數(shù)器 “預(yù)置數(shù)”是集成化同步計數(shù)器的一個重要功能。一般設(shè)置控制端L,用來

49、選擇電路是執(zhí)行計數(shù)還是執(zhí)行預(yù)置數(shù):當(dāng)L1,執(zhí)行同步計數(shù);L0,執(zhí)行預(yù)置數(shù)。由于JK觸發(fā)器數(shù)據(jù)輸入是雙端的,所以要將單端的預(yù)置數(shù)AD經(jīng)兩級“與非”門變成互補信號,再加在J,K端。圖24所示與非門411就是為此目的而設(shè)置的。當(dāng)L1時,這些與非門被封鎖,快速進位電路輸出經(jīng)或門1215進入觸發(fā)器,電路執(zhí)行計數(shù);當(dāng)L0,門411打開,快速進位被封鎖,電路執(zhí)行置數(shù)。 能夠方便地擴展位數(shù)是集成化計數(shù)器的一個特點。下面介紹擴展方法。計數(shù)器擴展應(yīng)滿足以下條件。 首先,要有標(biāo)志計數(shù)器已計至最大數(shù)的進位輸出端RC,對二進制、十進制計數(shù)器,RC分別為: 二進制計數(shù)器:RCQAQBQCQD 十進制計數(shù)器:RCQAQD其

50、次,計數(shù)器應(yīng)有保持功能。圖24計數(shù)器中設(shè)置了“計數(shù)允許”端P和T,用來控制計數(shù)器快速進位電路和RC形成門:當(dāng)P,T均為“1”,快速進位電路才能打開(見表28),此時若L1,則電路處于計數(shù)狀態(tài);若P0,T1,則快速進位電路封鎖,電路不能計數(shù),此時若L1,預(yù)置數(shù)也被封鎖,又由于T1時RC形成門不封鎖,所以各觸發(fā)器狀態(tài)及RC均保持。有了RC,P,T端,就可以方便地對計數(shù)器進行擴展。 表28 同步計數(shù)器功能表PTLRDCK功能1111計數(shù)01并行輸入數(shù)據(jù)0111保持011觸發(fā)器保持,RC=01異步清“0”223 譯碼器譯碼器譯碼器有n個輸入變量,2n個(或少于2n個)輸出,每個輸出對應(yīng)于n個輸入變量的

51、一個最小項。當(dāng)輸入為某一組合時,對應(yīng)的僅有一個輸出為“1”(或為“0”),其余輸出均為“0”(或為“1”)。譯碼器的用途是把輸入代碼譯成相應(yīng)的控制電位,以實現(xiàn)代碼所要求的操作。圖25給出了2輸入4輸出譯碼器的邏輯圖。譯碼器中常設(shè)置“使能”控制端正,當(dāng)該端為“1”時,譯碼器功能被禁止,此時所有輸出均為“1”。使能端的一個主要功能是用來擴充輸人變量數(shù)。23 控制部件控制部件 控制器(見圖26)負責(zé)控制整個計算機系統(tǒng)的運行,讀取指令寄存器、狀態(tài)控制寄存器以及從外部來的控制信號(例如中斷信號),發(fā)布外控制信號控制CPU與存儲器、IO設(shè)備進行數(shù)據(jù)交換,發(fā)布內(nèi)控制信號控制寄存器間的數(shù)據(jù)交換,控制ALU完成

52、指定的運算功能,并且管理其他的CPU內(nèi)部操作。231 控制器的基本功能控制器的基本功能 控制器的基本功能就是時序(sequencing)控制和執(zhí)行(execution)控制。根據(jù)當(dāng)前運行的程序,控制器使CPU按一定的時序關(guān)系執(zhí)行一系列的微操作(micro-operation),從而完成程序規(guī)定的動作。 控制器的輸入信號有:時鐘信號、指令寄存器、標(biāo)志位、控制總線上的控制信號??刂破鞯妮敵鲂盘柊ǎ篊PU內(nèi)的控制信號、發(fā)往控制總線的控制信號。 時鐘信號時鐘信號 控制器根據(jù)由時鐘電路產(chǎn)生的時鐘信號進行定時,以控制各種操作按指定的時序進行。計算機的基本功能是執(zhí)行程序,而程序由一連串的指令組成;計算機的

53、執(zhí)行過程由一連串的指令周期組成,每一指令周期完成一條機器指令。這些指令周期又可進一步細分為更小的單元,直到微操作(microoperation)CPU完成的基本的原子操作。時鐘電路由時鐘脈沖發(fā)生器、分頻電路及各種外圍電路組成。時鐘脈沖發(fā)生器的晶振頻率稱為機器的主頻,它產(chǎn)生的時鐘脈沖信號是整個機器的時間基準(zhǔn),其周期T稱為該計算機的時鐘周期。執(zhí)行一條機器指令所需的時間稱為一個指令周期(instructioncycle),因為CPU機器指令的執(zhí)行的時間通?;ゲ幌嗤蚨渲噶钪芷谝哺鞑幌嗤?。為了便于控制和管理,把指令周期進行分解,細化為各種原子操作(微操作,op),每一op都與CPU的寄存器相關(guān)。完

54、成一個微操作的時間就稱為CPU周期(機器周期)。例如一條指令周期通常可分為取指子周期、執(zhí)行子周期、保存結(jié)果子周期,而每一個子周期又由若干原子周期CPU周期組成。 2指令寄存器指令寄存器(R)控制器需要完成取指令、分析指令和執(zhí)行指令的操作??刂破鞲鶕?jù)程序計數(shù)器PC中的內(nèi)容(指令地址)從存儲器中取出該指令;然后對指令進行譯碼以確定所需執(zhí)行的 op;最后控制器根據(jù)分析的結(jié)果發(fā)出一系列的控制信號控制各相關(guān)部件(運算器、存儲器、IO設(shè)備)完成規(guī)定的操作;同時產(chǎn)生下一條指令的地址。MAR(PC)MBRMemoryIR(MBR)PC(PC)13中斷控制邏輯中斷控制邏輯計算機系統(tǒng)通常都提供了中斷機制,允許某一

55、事件的發(fā)生(如由IO設(shè)備提出服務(wù)請求)可以中止CPU正在執(zhí)行的程序,轉(zhuǎn)去對該事件進行處理,然后再返回原程序被中止處繼續(xù)執(zhí)行。中斷機制的主要作用就是提高CPU的處理效率;使CPU與IO設(shè)備并行工作,當(dāng)進行IO操作時CPU可以處理其他事務(wù);同時使CPU能夠及時地響應(yīng)各種預(yù)先不知的異常事件,并進行處理;還可以實現(xiàn)分時操作等等。 (1) 中斷處理過程中斷處理過程 如圖27所示,如果系統(tǒng)允許響應(yīng)中斷請求,那么在每條指令執(zhí)行完成后,控制器都要檢查是否有中斷發(fā)生,如果沒有中斷請求信號,控制器則轉(zhuǎn)去取下一條指令,如果有中斷事件發(fā)生,則暫停執(zhí)行當(dāng)前程序并保護其現(xiàn)場狀態(tài)信息(如下一條指令的地址、相關(guān)寄存器的內(nèi)容等

56、等),然后轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。當(dāng)完成中斷服務(wù)后,再恢復(fù)以前保存的現(xiàn)場信息,從原程序被中止處(斷點)繼續(xù)執(zhí)行。 圖27 計算機的中斷機制 通常把CPU中斷處理過程分為兩個階段:中斷響應(yīng)過程和中斷服務(wù)過程。中斷響應(yīng)過程CPU接受中斷請求后,就暫停執(zhí)行當(dāng)前程序,進人中斷響應(yīng)過程:關(guān)閉中斷:為了使CPU在中斷服務(wù)后能夠返回原程序斷點處繼續(xù)執(zhí)行,在中斷響應(yīng)期間,保存斷點信息之前,需要關(guān)閉中斷允許,禁止CPU響應(yīng)新的中斷請求。保存斷點信息:當(dāng)CPU進入中斷響應(yīng)過程,關(guān)閉中斷允許后,控制器要保護當(dāng)前正在執(zhí)行的程序的斷點信息;把程序的斷點即PC里的內(nèi)容,以及PSW里的內(nèi)容等推入系統(tǒng)堆棧。中斷返回以后,再從堆

57、棧中恢復(fù)現(xiàn)場信息,繼續(xù)執(zhí)行主程序。把中斷服務(wù)程序的入口地址置人PC中:控制器保存完斷點信息后,接著就把相應(yīng)的中斷服務(wù)程序入口地址置入程序計數(shù)器中去,CPU馬上要執(zhí)行的下一條指令就是中斷服務(wù)程序的第一條指令。 中斷服務(wù)過程當(dāng)PC中置入中斷服務(wù)程序的入口地址之后,接著保留現(xiàn)場信息,CPU開放中斷允許響應(yīng)新的中斷請求,然后就轉(zhuǎn)入中斷服務(wù)程序,對中斷事件進行處理。中斷服務(wù)完成之后,CPU再次禁止中斷,以恢復(fù)現(xiàn)場和斷點信息,使之返回到原主程序斷點處繼續(xù)執(zhí)行。 4總線控制邏輯總線控制邏輯計算機各個部件通過總線(BUS)相互連接起來,傳遞信息協(xié)調(diào)工作,共同完成操作。CPU內(nèi)部各器件之間互連的總線稱為內(nèi)部總線

58、,CPU與其他部件之間互連的總線稱為外部總線(又稱系統(tǒng)總線)。由于總線是共享的傳輸通道,任意一時刻只能由一個器件負責(zé)發(fā)送數(shù)據(jù),所以需要由總線控制器采協(xié)調(diào)各部件申請使用總線。當(dāng)發(fā)生多個設(shè)備爭用總線時,仲裁電路會依據(jù)某種策略(如優(yōu)先級)來決定使用總線的先后順序。常用的仲裁方式主要有中央仲裁和分布式仲裁兩種。232控制器的實現(xiàn)控制器的實現(xiàn)(硬布線邏輯微程序控制硬布線邏輯微程序控制)控制器的作用就是根據(jù)輸入的時鐘信號、指令信息以及各種狀態(tài)信號產(chǎn)生相應(yīng)的控制信號去控制各個部件完成特定的操作。控制器的邏輯設(shè)計中包括時序邏輯(控制微操作的時序關(guān)系)、譯碼邏輯(對指令操作碼進行譯碼分析)、執(zhí)行邏輯(按一定的順

59、序執(zhí)行微操作)和決策邏輯(根據(jù)ALU等部件的標(biāo)志位來決定下一步的動作)??刂破鞯膶崿F(xiàn)方法主要有兩種:硬布線邏輯(hard wired implementation)和微程序控制(microprogrammed implementation)。 1硬布線邏輯硬布線邏輯在這種機制下,控制器基本上由組合電路實現(xiàn),因此這種方法又稱之為組合邏輯實現(xiàn)(圖28)。(1)指令譯碼指令譯碼控制器分析每條待執(zhí)行的指令,對不同的操作碼產(chǎn)生不同的控制信號。為了簡化設(shè)計,可以由一個譯碼器來完成操作碼的識別功能,一個n位輸入的譯碼器可以識別2n條不同的指令操作碼,為每一條操作碼產(chǎn)生不同的輸出信號。(2)定時定時(一個指令所產(chǎn)生的輸出控制信號是有時序關(guān)系的一個指令所產(chǎn)生的輸出控制信號是有時序關(guān)系的)控制器利用輸入的時鐘信號作為產(chǎn)生各種控制信號的定時信號。因為控制器在一個指令周期內(nèi),需要在不同的時刻發(fā)出不同的控制信號,所以采用一個定時電路根據(jù)時鐘信號依次產(chǎn)生定時信號如T1,T2, ,Tn。控制器就在T1,T2, ,Tn的作用下,順序產(chǎn)生各種控制信號。在指令周期的末尾,控制器要復(fù)位定時電路,以便在下一個指令周期開始時,定時電路又可以重新產(chǎn)生定時信號T1,T

溫馨提示

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

評論

0/150

提交評論