《80X86微機原理與接口技術(shù)》課件第1章_第1頁
《80X86微機原理與接口技術(shù)》課件第1章_第2頁
《80X86微機原理與接口技術(shù)》課件第1章_第3頁
《80X86微機原理與接口技術(shù)》課件第1章_第4頁
《80X86微機原理與接口技術(shù)》課件第1章_第5頁
已閱讀5頁,還剩149頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章微機基礎(chǔ)知識1.1二進制數(shù)和十六進制數(shù)1.2十進制數(shù)1.3字符1.4微型計算機系統(tǒng)的基本組成1.5存儲器的基本結(jié)構(gòu)1.6微機工作原理1.7小結(jié)1.1二進制數(shù)和十六進制數(shù)

微機中的數(shù)使用器件的兩個不同物理狀態(tài)表示。具有兩個狀態(tài)的雙穩(wěn)態(tài)觸發(fā)器、可分別為高電平或低電平的信號線、極板上有無存儲電荷的電容等等一些具有兩種不同穩(wěn)定狀態(tài)且能相互轉(zhuǎn)換的器件,都可以用于表示一位二進制數(shù)。微機只能識別二進制數(shù)。但是,由于書寫、鍵入、讀出二進制數(shù)極易出差錯,而微機的字長又都是4的整數(shù)倍數(shù),分別為4位、8位、16位、32位和64位等等,考慮到24=16,因此在書寫時使用十六進制數(shù),既方便又不易出錯。例如一個8位二進制數(shù)可以表示成2位十六進制數(shù),一個16位二進制數(shù)可以表示成4位十六進制數(shù)??紤]到23=8,在一些大型機、巨型機中還使用八進制數(shù)。此外,人們對十進制數(shù)最為熟悉,鍵入和輸出微機的數(shù),就經(jīng)常使用十進制數(shù)表示。表1-1各種進制數(shù)間的關(guān)系

二進制數(shù)、八進制數(shù)、十進制數(shù)和十六進制數(shù)之間的對應(yīng)關(guān)系如表1-1所示。1.1.1二進制有符號數(shù)的機器碼表示微機中區(qū)別不同的數(shù)制有3種方法。第一種方法是在數(shù)的后面加上英文單詞的第一個字母。二進制數(shù)(Binary)用B,如101.1B;八進制數(shù)(Octal)用Q,如57.4Q(手寫時O和0易混淆,故用Q);十進制數(shù)(Decimal)用D或省略D,如134.3D或134.3;十六進制數(shù)(Hexadecimal)用H,如3AB.AH。第二種方法是在數(shù)的右下角寫出基數(shù)。101.1B、57.4Q、134.3、3AB.AH可分別寫成(101.1)2、(57.4)8、(134.3)10、(3AB.A)16。第三種方法是在二進制數(shù)和十六進制數(shù)的前面加上前綴。二進制數(shù)前用%,如%101.1;十六進制數(shù)前用$,如$21。本書使用第一種和第二種表示方法。1.二進制數(shù)和十六進制數(shù)各位的權(quán)二進制數(shù)有兩個不同的數(shù)碼0和1,逢2進1。計數(shù)時每到2往左進一位,左邊一位的權(quán)是右邊一位權(quán)的兩倍。同一個數(shù)碼在不同數(shù)位上所代表的值是不同的,例如101.1B,小數(shù)點右邊第一位的“1”位于2-1位,代表的值為1×2-1;小數(shù)點左邊第一位的“1”位于20位,代表的值為1×20;左邊第2位的“0”位于21位,代表的值為0×21;左邊第三位的“1”位于22位,代表的值為1×22。各位的權(quán)從左到右依次為4、2、1、0.5。其它進制數(shù)有相類似的表示方法。

一個十六進制數(shù)有16個不同的數(shù)碼0~9和A~F,逢16進1。計數(shù)時每到16往左進一位,左邊一位的權(quán)是右邊一位權(quán)的16倍。例如3AB.AH各位的權(quán)從左至右依次為256、16、1、0.0625。為了區(qū)分數(shù)字和符號,以字母開頭的十六進制數(shù),前面應(yīng)添加一個0,如A46.5H應(yīng)寫作0A46.5H。一個八進制數(shù)有8個不同的數(shù)碼0~7,逢8進1。例如八進制數(shù)57.4Q各位的權(quán)從左至右依次為64、8、0.125。一個十進制數(shù)的基本特征為有10個不同的數(shù)碼0~9,逢10進1。例如134.3D各位的權(quán)從左至右依次為100、10、1、0.1。

表1-2和表1-3分別列出了二進制數(shù)和十六進制數(shù)各位的權(quán)與對應(yīng)十進制數(shù)之間的關(guān)系。210常用1?K表示,1?K=210=1024;同樣有64?K=216=65?536,1M=220=1KK=1048576;1G=230=1KM=1073741824;1T=240=1MM=1099511627776。這種表示方法更多地用于表示存儲器的存儲容量。表1-2二進制數(shù)各位的權(quán)表1-3十六進制數(shù)各位的權(quán)1)各種進制數(shù)轉(zhuǎn)換為十進制數(shù)將各種進制數(shù)按權(quán)展開后相加可得相應(yīng)的十進制數(shù)。例如:(10.1)2=1×21+0×20+1×2–1=(2.5)10(10.1)16=1×161+0×160+1×16–1=(16.0625)10(10.1)8=1×81+0×80+1×8–1=(8.125)10(10.1)5=1×51+0×50+1×5–1=(5.2)10

2)二進制數(shù)、八進制數(shù)、十六進制數(shù)之間的相互轉(zhuǎn)換二進制數(shù)轉(zhuǎn)換為十六進制數(shù)(或八進制數(shù)),只需從小數(shù)點開始分別向左及向右,每4(或3)位為一組,每組用1位十六進制數(shù)(或八進制數(shù))代替。整數(shù)部分最高位不足4(或3)位的一組在前面補0;小數(shù)部分最低位不足4(或3)位的一組在后面補0。例如:11101011010.10001B可分組轉(zhuǎn)換為011101011010.10001000B=75A.88H;11101011010.10001B可分組轉(zhuǎn)換011101011010.100010B=3532.42Q。十六進制數(shù)或八進制數(shù)轉(zhuǎn)換為二進制數(shù)時,只需將每位的十六進制數(shù)或八進制數(shù)用相應(yīng)二進制數(shù)代替即可。如3AB.AH=001110101011.1010B;57.4Q=101111.100B。十六進制數(shù)和八進制數(shù)之間進行轉(zhuǎn)換,可通過先轉(zhuǎn)換成二進制數(shù)進行。3)十進制數(shù)轉(zhuǎn)換為二進制數(shù)、八進制數(shù)和十六進制數(shù)十進制數(shù)轉(zhuǎn)換為二進制數(shù),要把十進制數(shù)的整數(shù)部分和小數(shù)部分分開處理。整數(shù)部分使用“輾轉(zhuǎn)相除法”。不斷地用2去除,直至商等于0為止。每做一次除法,記下所得余數(shù)。以第一次用2除所得余數(shù)為最低位,最后一次所得余數(shù)為最高位,依次從最高位到最低位寫出,就是整數(shù)部分的二進制數(shù)。小數(shù)部分使用“乘2取整法”。不斷地用2相乘,每次相乘后取出整數(shù),剩下的小數(shù)再去用2乘。第一次用2乘了以后取出的整數(shù)為最高位,最后一次所取得的整數(shù)為最低位。依次從最高位到最低位寫出,就是小數(shù)部分的二進制數(shù)。在絕大多數(shù)情況下,最后一次乘積的結(jié)果都不會為0。為此提出一定的精度要求,獲得小數(shù)部分的二進制數(shù)近似表達式?!纠?-1】將134.3D轉(zhuǎn)換為二進制數(shù),要求其誤差不大于2?–5。整數(shù)部分小數(shù)部分算式余數(shù)算式整數(shù)134/2=67 b0=0(最低位)0.3×2=0.6b–1=0(權(quán)為2?–1,最高位)67/2=33 b1=1 0.6×2=1.2b–2=133/2=16 b2=1 0.2×2=0.4b–3=016/2=8 b3=0 0.4×2=0.8b–4=08/2=4 b4=0 0.8×2=1.6b–5=1(權(quán)為2?–5,最低位)4/2=2 b5=02/2=1 b6=01/2=0 b7=1(最高位)所以134.3D=10000110.01001B?!纠?-2】將134.3D轉(zhuǎn)換為十六進制數(shù),要求誤差不大于16?–2。 整數(shù)部分 小數(shù)部分算式余數(shù)算式整數(shù)134/16=8H0=6(最低位)0.3×16=4.8H–1=4(最高位)8/16=0H1=8(最高位)0.8×16=12.8H–2=12(權(quán)為16?–2,最低位)所以134.3D=86.4CH。把十進制數(shù)轉(zhuǎn)換為十六(八)進制數(shù)有兩種方法:第一種,整數(shù)部分使用“輾轉(zhuǎn)相除法”,小數(shù)部分使用“乘16(8)取整法”;第二種,先將十進制數(shù)轉(zhuǎn)換為二進制數(shù),再將二進制數(shù)轉(zhuǎn)換為十六(八)進制數(shù)。2.二進制有符號數(shù)的機器碼二進制數(shù)表示無符號數(shù)時,所有位數(shù)全部為數(shù)值位;二進制數(shù)表示有符號數(shù)時,規(guī)定其最高位為符號位,余下位為數(shù)值位,且最高位為0表示正數(shù),最高位為1表示負數(shù)。例如使用8位二進制數(shù)D7~D0表示有符號數(shù),規(guī)定D7為符號位,D6~D0為數(shù)值位。同樣對于16位二進制數(shù)D15~D0,規(guī)定D15為符號位,D14~D0為數(shù)值位。已經(jīng)符號數(shù)碼化了的二進制數(shù)稱為機器數(shù),相應(yīng)二進制數(shù)或十進制數(shù)的值稱為機器數(shù)的真值。機器數(shù)有3種表示法:原碼、反碼和補碼。表1-4和表1-5分別列出了原碼、反碼和補碼以及二進制數(shù)的表示范圍。表1-48位二進制數(shù)的原碼、反碼和補碼表1-58位和16位二進制數(shù)表示無符號數(shù)和有符號數(shù)的范圍1)原碼最高位表示符號位(0表示正數(shù),1表示負數(shù))、其余數(shù)字表示數(shù)值位的二進制數(shù)碼,叫做機器數(shù)的原碼。[+76]原=01001100B=4CH[-76]原=11001100B=CCH0的原碼有兩種表示:[+0]原=00000000B=00H[-0]原=10000000B=80H

雖然原碼簡單易懂,且與真值間轉(zhuǎn)換方便,但因微機為簡化結(jié)構(gòu)只配備了加法器,使原碼減法運算無法進行,為此引進了反碼和補碼。2)反碼正數(shù)的反碼與原碼相同。負數(shù)的反碼為負數(shù)的原碼除符號位外各位按位取反。[+76]反=[+76]原=01001100B=4CH[―76]反=10110011B=B3H0的反碼有兩種表示:[+0]反=[+0]原=00000000B=00H[-0]反=11111111B=FFH【例1-3】設(shè)[X]反=EAH,求X的真值。因[X]反=11101010B,[X]原=10010101B,則X=-0010101B=-21?!纠?-4】設(shè)X為8位有符號二進制數(shù)的真值,則[X]反+[-X]反=FFH。3)補碼正數(shù)的補碼與原碼相同。負數(shù)的補碼為其反碼在最低位加1。[+76]補=[+76]原=01001100B=4CH[-76]補=[-76]反+1=10110011B+1=B4H0的補碼僅有一種表示:[+0]補=[+0]原=00000000B=00H[-0]補=[-0]反+1=11111111B+1=100000000B=00000000B=00H對于8位二進制數(shù),最高位進位將“自然丟失”?!纠?-5】10000000B是哪個數(shù)的補碼?此數(shù)因符號位為1,所以為負數(shù),考慮到

[-126]補=[-126]反+1=10000001B+1=10000010B[-127]補=[-127]反+1=10000000B+1=10000001B

由此定義10000000B是-128的補碼,不是-0的補碼。

【例1-6】[X]補+[-X]補=100H=00H,式中1自然丟失,X為8位有符號二進制數(shù)。已知負數(shù)的補碼求原碼有兩種方法:

(1)原路退回,將補碼減1再除符號位外逐位求反;

(2)對補碼求補,除符號位外逐位求反再加1?!纠?-7】已知[X]補=D2H,[Y]補=2FH,求X、Y。

X的補碼為11010010,看符號位,X<0,除符號位外逐位求反得10101101,末位加1得原碼10101110,X=-46。Y的補碼為00101111,看符號位,Y>0,得Y=+47。

【例1-8】已知[X]補=D2H,[Y]補=2FH,若X、Y改用32位二進制數(shù)表示,求[X]補,[Y]補?。只需進行符號位擴展,[X]補=FFFFFFD2H,[Y]補=0000002FH。1.1.2補碼運算和溢出判斷1.二進制數(shù)的數(shù)學(xué)運算1)加法運算二進制數(shù)的加法規(guī)則為:0+0=0;0+1=1;1+0=1;1+1=10。

【例1-9】10010111B+11010011B=101101010B(97H+0D3H=16AH),兩個8位二進制數(shù)相加,結(jié)果是和為8位、進位位為1位。第9位表示“進位”位,既可以是0(無進位),也可以是1(有進位),存放在標志寄存器的進(借)位標志CF內(nèi)。2)減法運算二進制數(shù)的減法規(guī)則為:0-0=0;1-0=1;1-1=0;0-1=1,向高位有借位。向高位借1到本位的大小等于十進制數(shù)的2。

【例1-10】?10101011B-00110101B=01110110B(0ABH-35H=76H)?!纠?-11】00110101B-10101011B=110001010B=-01110110B(35H-0ABH=-76H)。兩個8位無符號二進制數(shù)相減,差依舊是8位,借位位為1位。若被減數(shù)大于或等于減數(shù),則結(jié)果為正,且CF=0無借位,如果不足8位,則需前面補0(補足8位);如果被減數(shù)小于減數(shù),則需向第9位借位,CF=1,結(jié)果為負,這時對8位數(shù)值位求補得到它的真值。兩個8位有符號二進制數(shù)相減,數(shù)值位只有7位,但是只要所有參加運算的數(shù)都以補碼形式出現(xiàn),就能把減法轉(zhuǎn)化為加法,符號位也和數(shù)值位一樣相加和進位,結(jié)果也是補碼。3)乘法運算二進制數(shù)的乘法規(guī)則為:0×0=0;0×1=0;1×0=0;1×1=1。只有當兩個1相乘時,積才為1,否則為0。乘法操作過程從乘數(shù)的低位開始,用每一位分別去乘被乘數(shù),每次相乘所得中間結(jié)果稱為部分積,把部分積的最低有效位與相應(yīng)乘數(shù)對齊后,同時相加得到乘積。兩個8位二進制數(shù)相乘,結(jié)果為16位,如果乘積不足16位,則在乘積的前面補0(補足16位)。【例1-12】1010B乘以1101B的過程為1010B×1101B=1010+00000+101000+1010000=10000010B

微機中用兩種方法實現(xiàn)上例乘法:第一種用被乘數(shù)左移加部分積的方法作乘法,如果是兩個n位二進制數(shù)相乘,需要2n個加法器,因為2n位都有可能在進行加法操作;第二種用部分積右移加被乘數(shù)的方法作乘法,如果是兩個n位二進制數(shù)相乘,需要n個加法器,因為只有n位有可能在進行加法操作,另外n位只需要寄存器或存儲單元即可。4)除法運算二進制數(shù)除法分3步進行。除法做完以后需要分別存放除數(shù)、余數(shù)和商數(shù)。第一步,從被除數(shù)最高位開始,檢查并確定大于除數(shù)的位數(shù)。找到這一位時,商上1,并把選定的被除數(shù)減除數(shù),得余數(shù);第二步,把被除數(shù)下一位移到余數(shù)上,將余數(shù)減除數(shù),不夠減時商上0,夠減時商上1;第三步,重復(fù)第二步,直至被除數(shù)的所有的位下移完為止。

【例1-13】111010除以110的結(jié)果為

111010÷110=1001余1002.二進制數(shù)的邏輯運算邏輯變量的兩個取值“0”和“1”表示邏輯分析的兩種對立狀態(tài),不表示數(shù)學(xué)中0和1的數(shù)值大小。邏輯運算特征是按位進行,無高低位之分,無進(借)位。

1)邏輯“與”運算“與”運算的運算符號用“∧”、“

”或“×”表示,又稱邏輯乘。其運算規(guī)則為:0∧0=0;0∧1=0;1∧0=0;1∧1=1。只有當兩個邏輯變量都為1時,“與”運算結(jié)果才為1。

【例1-14】10001110B∧01010011B=00000010B2)邏輯“或”運算“或”運算的運算符號用“∨”或“+”表示,又稱邏輯加。其運算規(guī)則為:0+0=0;0+1=1;1+0=1;1+1=1。只要有一位為1時,“或”運算結(jié)果就會為1。

【例1-15】10001110B∨01010011B=11011111B3)邏輯“非”運算“非”運算的運算符號是在邏輯變量上方加一橫線表示。其運算規(guī)則為:=1;=0。

【例1-16】設(shè)A=10001110B,則=01110001B。4)“異或”運算“異或”運算的符號用“

”表示。其運算規(guī)則為:0

0=0;0

1=1;1

0=1;1

1=0。相同兩個邏輯變量“異或”,結(jié)果為0;不同的兩個邏輯變量“異或”,結(jié)果為1。

【例1-17】10001110B

01011101B=11010011B3.十六進制數(shù)的運算十六進制數(shù)運算的種類同于二進制數(shù),并且所有運算都可以轉(zhuǎn)化為二進制數(shù)進行。加法運算時逢16進1。減法運算時從高位借1(相當于本位的十進制數(shù)16)。乘除法運算沒有十進制數(shù)那種“乘法九九口訣表”,通常先化為二進制數(shù)比較方便。

【例1-18】兩數(shù)0B5F0H和0A427H相加的過程為:

0B5F0H+0A427H=15A17H【例1-19】數(shù)0B5F0H減去0A427H的過程為

0B5F0H-0A427H=11C9H4.補碼加減運算規(guī)則

(1)兩數(shù)相減,可以轉(zhuǎn)化為補碼相加,結(jié)果也是補碼:X-Y=[X]補+[-Y]補。

【例1-20】設(shè)X=+64,Y=+10。直接相減有X-Y=54。補碼相加有[X]補=01000000B,[-Y]補=11110110B,[X]補+[-Y]補=100110110B,最高位1自然丟失,結(jié)果00110110B正是54的補碼。補碼的這種“1×28自然丟失”的運算稱為“模28運算”?!纠?-21】設(shè)X=+7,Y=-19,用補碼求X+Y。[X]補=00000111B,[Y]補=11101101B[X]補+[Y]補=11110100B=[X+Y]補[X+Y]補符號位為1,所以,X+Y=-12。把減法轉(zhuǎn)化為加法的一般算式為X-Y

=X+(-Y)=X+(-Y)+2n(mod2n)則[X-Y]補=[X+(-Y)]補=[X]補+[-Y]補

由于補碼減法運算能夠變?yōu)檠a碼加法運算,因此計算機內(nèi)的有符號數(shù)都表示成補碼的形式,并且把有符號數(shù)和無符號數(shù)統(tǒng)一對待。做加法時直接進行;做減法時將減數(shù)變成補碼再和被減數(shù)相加來完成。有符號數(shù)以補碼形式參加運算時,具有和無符號數(shù)相同的進位規(guī)律。二進制數(shù)乘法運算可分解成加法和移位;除法運算可分解成減法和移位。當使用補碼將減法轉(zhuǎn)換為加法時,二進制數(shù)的數(shù)學(xué)運算只用加法和移位兩種基本操作便能完成。(2)“模28運算”規(guī)則:一個8位二進制數(shù)X和它的補碼之間存在如下關(guān)系:

[X]補=28+X(mod28)

式中mod28讀作“模28”。日常生活中的時鐘就是“模12”補碼運算,例如從10點撥到2點,有兩種撥法:順時針撥4點,越過12點:10+4=12+2=2(mod12),式中12自然丟失;逆時針撥8點,10-8=2=10+(12-8)(mod12)。比較兩式得4【例1-22】設(shè)X為正數(shù),X=+101D=1100101B,[X]補=01100101B,28+X為式中自然丟失。1【例1-23】設(shè)X為負數(shù),X=-101D=-1100101B,[X]補=10011011B,28+X為(3)兩數(shù)補碼之和等于兩數(shù)和的補碼:[X]補+[Y]補=2n+X+2n+Y=2n+(X+Y)=[X+Y]補

【例1-24】設(shè)X=+64,Y=+8,用補碼求X+Y。因[X]補=01000000B,[Y]補=00001000B,則[X]補+[Y]補為(4)兩數(shù)補碼之差等于兩數(shù)差的補碼:

[X]補-[Y]補=2n+X-(2n+Y)=X-Y+2n

=[X-Y]補=[X]補+[-Y]補

(5)雙精度數(shù)和符號擴展:計算機中為了擴大數(shù)的表示范圍,常用兩個機器字表示一個機器數(shù),這種32位數(shù)稱為雙字長數(shù)或雙精度數(shù),其表示范圍是-231≤N≤231-1,格式為

位數(shù)擴展指一個數(shù)從較少位擴展到較多位。用補碼表示的數(shù)在擴展時只需要進行符號位擴展,數(shù)值位不變。正數(shù)的在前面補0,負數(shù)在前面補1。例如機器數(shù)字長為8位時,

[+76]補=4CH,[-76]補=B4H。改用機器數(shù)字長為16/32/64位時,

[+76]補=004CH/0000004CH/000000000000004CH[-76]補=FFB4H/FFFFFFB4H/FFFFFFFFFFFFFFB4H5.溢出兩個n位有符號二進制數(shù)補碼相加,既存在進位問題也存在溢出問題。進位和溢出是兩個不同的概念。進位是逢2進1。所謂溢出是指補碼運算結(jié)果超出了二進制數(shù)的表示范圍(-2n–1~+2n–1-1),運算發(fā)生了錯誤。有溢出時,標志寄存器的溢出標志位OF=1;無溢出時OF=0。

兩個補碼相加時,設(shè)Ca是數(shù)值位向符號位的進位,Cy是符號位向進位位CF的進位。借助兩個進位Ca和Cy,能正確判斷溢出是否產(chǎn)生。兩個補碼相加可以歸納為三種情況:兩個正數(shù)相加;兩個負數(shù)相加;一個正數(shù)一個負數(shù)相加。只有在前兩種情況下才有可能產(chǎn)生溢出,下面舉了4個例子分別討論。對于“一個正數(shù)一個負數(shù)相加”這種加法類型,肯定不會發(fā)生溢出。【例1-25】兩個正數(shù)相加,結(jié)果為正數(shù),無溢出。設(shè)[X]補=04H,[Y]補=06H,求X+Y。此時X=4,Y=6,正確值為10。

運算結(jié)果正確,所以無溢出,溢出標志位OF=0。進位特征是Ca=0,Cy=0?!纠?-26】兩個正數(shù)相加,結(jié)果為負數(shù),這時發(fā)生的溢出叫“正”溢出。設(shè)[X]補=40H,[Y]補=41H,求X+Y。此時X=+64,Y=+65,正確值為129。

運算結(jié)果錯誤,發(fā)生溢出,OF=1,原因是129>+127。進位特征是Ca=1,Cy=0。【例1-27】兩個負數(shù)相加,結(jié)果為正數(shù),這時發(fā)生的溢出叫“負”溢出。設(shè)[X]補=86H,[Y]補=0F0H,求X+Y。此時X=-122,Y=-16,正確值為-138。運算結(jié)果錯誤,發(fā)生溢出,OF=1,原因是-138<-128。進位特征是Ca=0,Cy=1?!纠?-28】兩個負數(shù)相加,結(jié)果為負數(shù),無溢出。設(shè)[X]補=ABH,[Y]補=FFH,求X+Y。此時X=-85,Y=-1,正確值是-86。運算結(jié)果正確,無溢出,OF=0。進位特征是Ca=1,Cy=1。

綜合上述4種情況,可以得到判斷補碼運算是否有溢出的方法有3種:

(1)溢出標志法:檢查溢出標志位OF。若OF=0,則無溢出;若OF=1,則有溢出。指令系統(tǒng)中有兩條條件轉(zhuǎn)移指令就是依據(jù)OF的值確定程序走向的。

(2)符號法:看運算前后的符號位。兩個正數(shù)相加得負數(shù),或兩個負數(shù)相加得正數(shù),必有溢出;兩個正數(shù)相加得正數(shù),或兩個負數(shù)相加得負數(shù),或一個正數(shù)一個負數(shù)相加,必?zé)o溢出。這種方法常用于編制程序時快速判斷。例如47H和60H相加,使用心算就可判斷必有正溢出。(3)雙進位法:看Ca、Cy的值。若Ca=Cy,則無溢出;若Ca≠Cy,則有溢出。微機中常用“Ca異或Cy”線路,判斷有無溢出。溢出問題限制了數(shù)的運算和使用,尤其是在處理一個大數(shù)時,不能依靠增加二進制數(shù)的位數(shù)來擴大數(shù)的表示范圍,只能改用十進制數(shù)的BCD碼形式存放和運算。兩個n位無符號二進制數(shù)相加,如果和大于或者等于2n,超出了n位二進制無符號數(shù)的最大表示范圍,那么這時要向n+1位進位。例如8位二進制無符號數(shù)10010010B(=146D)和10000001B(=129D)相加,結(jié)果為100010011B(=275D),此時向第9位有進位。在無符號數(shù)運算里面,只有進位問題而無溢出問題。1.1.3定點、浮點表示

1.定點表示任意一個二進制數(shù)N都可以表示成N=2P×S,式中S為數(shù)N的尾數(shù),P為數(shù)N的階碼。S集合了數(shù)N的全部有效數(shù)字,P確定了小數(shù)點的位置。例如32可寫成20×100000,這時P=0,S為純整數(shù)。也可寫成26×0.10000,這時P=6,S為純小數(shù)。用定點法表示二進制數(shù)時,必須事先約定階碼P的值固定不變,這樣剩下來的事就是如何表示尾數(shù),同樣規(guī)定最高位為符號位,其余是數(shù)值位。字長為n的定點純整數(shù)表示范圍為-(2n–1-1)~+(2n–1-1);字長為n的定點純小數(shù)表示范圍為-(1-2–(n–1))~+(1-2–(n–1))?!纠?-29】尾數(shù)-0.1010111和+0.1010111在定點計算機中表示為-0.1010111→11010111 +0.1010111→0 1010111

符號位 數(shù)值位 符號位數(shù)值位2.浮點表示使用浮點表示時,除了表示尾數(shù)外,還要將階碼表示出來:【例1-30】二進制數(shù)1011.101B=2100B×0.1011101B=11.625的浮點表示:3.定點表示與浮點表示的比較

(1)浮點數(shù)的表示范圍比定點表示的大。以32位二進制數(shù)為例,使用定點表示時,最高位為符號位,其余31位為數(shù)值位,因此所表示數(shù)的范圍為-(231-1)~+(231-1)。使用浮點表示時,設(shè)階碼P占8位(有1位符號位,7位數(shù)值位)、尾數(shù)S占24位(有1位符號位,23位數(shù)值位),因此所表示數(shù)的范圍為-2127×(223-1)~+2127×(223-1)。在計算機字長相同的時候,浮點表示比定點表示的范圍大得多。如果階碼P的位數(shù)多一些,則所能表示數(shù)的范圍更大一些,但要注意尾數(shù)S的位數(shù)少了,有效數(shù)字相應(yīng)少了,計算結(jié)果精度要下降。應(yīng)當按照實際情況分配階碼P和尾數(shù)S的位數(shù)。(2)浮點運算必須對齊階碼,即小數(shù)點對齊,才能加減。定點運算無對階問題。

【例1-31】設(shè)X=2100B×1010100B,Y=2011B×0100100B=2100B×0010010B,則(3)比較運算精度,浮點運算比定點運算高。例如兩個4位二進制數(shù)小數(shù)相乘,結(jié)果為8位小數(shù)。但在定點運算中,小數(shù)點位置固定,僅保留小數(shù)點后4位,其余各位將忽略;而在浮點運算中,可以改變相應(yīng)的階碼,小數(shù)點后面8位均可作為有效位保留,運算精度自然高得多。

【例1-32】設(shè)X=0.0001B,Y=0.0011B,則定點運算:XY=0.0001B×0.0011B=0.00000011B=0.0000B

自然丟失浮點運算:XY=0.0001B×0.0011B=0.00000011B=2–110B×0.1100B

(4)浮點計算機成本高,維護工作量大。浮點計算機同時具有階碼運算和尾數(shù)運算電路,因此運算器和相應(yīng)控制器電路復(fù)雜一些,成本也比定點計算機高一些,日常維護工作量也大一些。當代微機多使用定點運算,也使用浮點運算,這樣既滿足常用要求,又能降低成本;大型機、巨型機以浮點運算為主,這樣可以增強功能,滿足不同層次大型計算的需要。1.2十進制數(shù)1.2.1十進制數(shù)的BCD碼表示表1-68421BCD碼表1-7幾種常見的1位十進制數(shù)BCD碼4位二進制數(shù)有16種不同的狀態(tài),從0000B~1111B,可以編出16個碼,表示1位十進制數(shù)只需要10個碼,還有6個是多余的。去掉6個多余碼的方法很多,由此產(chǎn)生了多種不同的BCD編碼方法。常用的BCD碼有8421碼、2421碼、余3代碼等等,前兩種編碼是有權(quán)碼,后一種編碼是無權(quán)碼。

8421BCD碼的每一位都有固定的權(quán),從左到右權(quán)重依次為8,4,2,1。實際使用的8421BCD碼分成兩類。

(1)組合(或壓縮)的BCD碼。簡稱為BCD碼,用8位二進制數(shù)表示2位BCD碼。例如(10010111)8421BCD表示97。

(2)未組合(或非壓縮)的BCD碼。用8位二進制數(shù)表示1位BCD碼,其中高4位為0000,低4位為8421BCD碼。例如(0000100100000111)未組合8421BCD表示97?!纠?-33】(00000101)未組合8421BCD+(00000111)未組合8421BCD=(0000000100000010)未組合8421BCD8421BCD碼的編碼規(guī)律和二進制數(shù)相同,個位與十位之間是“逢十進一”。在書寫8421BCD碼的時候,4位二進制數(shù)的每一位都是必不可少的。例如十進制數(shù)的5,應(yīng)寫成(0101)8421BCD,不能寫成(101)8421BCD,最高位的“0”不能省略。如果表示多位十進制數(shù),每4位二進制數(shù)之間應(yīng)有空格隔開,不要連寫在一起。8421BCD碼在運算時不能和二進制數(shù)混淆起來。例如(00010101)8421BCD=1×10+5×1=15而00010101B=1×24+1×22+1×20=21

計算(00010101)8421BCD等值的二進制數(shù),依舊可以用按權(quán)展開式:

(00010101)8421BCD=0001B×101+0101B×100=1111B2421BCD碼從左至右各位的權(quán)依次為2,4,2,1。這種編碼的特征是碼值具有自補性,相加為10的兩個碼值自補。如2和8,2的編碼0010求補后得1110,恰是8的編碼。余3代碼也是一種自補碼,由8421碼加上0011而得,特點是十進制數(shù)運算簡單。兩位十進制數(shù)相加,先按二進制數(shù)加法相加,然后看相加結(jié)果有無進位,有進位時加上3,無進位時減去3,即可得到正確結(jié)果。1.2.2十進制數(shù)在微機中的運算微機的硬件電路采用二值邏輯元件制成,它的運算器只能進行二進制數(shù)的運算。要想讓微機完成十進制數(shù)運算,必須在技術(shù)上解決十進制數(shù)的輸入、存儲、輸出等問題。

1.十進制數(shù)的存放把十進制數(shù)存放在微機存儲器里有兩種存儲方式:一種方式是以BCD碼的形式出現(xiàn);一種方式是以二進制數(shù)的形式出現(xiàn)。下面舉兩個例子分別說明以兩種不同形式出現(xiàn)時,十進制數(shù)的輸入輸出過程。為分析方便起見,設(shè)存儲器的每個存儲單元由8級觸發(fā)器組成?!纠?-34】從鍵盤上輸入十進制數(shù)56,做法是依次鍵入5、6。

(1)以BCD碼形式存放,微機進行存放的過程為:第一步,將擊鍵擊入的“5”以0101B的形式送入存儲單元;第二步,將存儲單元的內(nèi)容0101左移4位,每左移1位時最低位補0,得01010000B,即50H或80D;第三步,上步所得與第二次擊鍵擊入的“6”(以0110B的形式出現(xiàn))執(zhí)行“或”操作,結(jié)果為01010110B,即56H或86D,存放在存儲單元中,如圖1-1所示。圖1-1BCD碼形式存放56D(觸發(fā)器狀態(tài)為56H)(2)以二進制數(shù)形式存放,微機進行存放的過程為:第一步,將擊鍵擊入的“5”以0101B的形式送入存儲單元;第二步,將存儲單元的內(nèi)容5乘以10,得50D,即110010B存放在存儲單元中;第三步,將上步存儲內(nèi)容110010B與第二次擊鍵擊入的“6”(以0110B的形式出現(xiàn))相加,結(jié)果為00111000B,即38H或56D,存放在存儲單元中,如圖1-2所示。圖1-2二進制數(shù)形式存放56D(觸發(fā)器狀態(tài)為38H)

十進制數(shù)56在存儲器中,如果以BCD碼的形式存放,則存儲單元內(nèi)容為01010110,即(01010110)8421BCD;如果以二進制數(shù)的形式存放,則存儲單元內(nèi)容為00111000B。反之,如果已經(jīng)知道某個存儲單元觸發(fā)器的狀態(tài)為00111000B或38H,那么如何知道它代表十進制數(shù)38D(以BCD碼形式存放)還是代表56D(00111000B按權(quán)展開為56D)呢?解決這個問題的方法很簡單,就是依靠指令系統(tǒng)里的指令自動識別。微機的加、減、乘、除指令都是二進制數(shù)運算指令。如果00111000B是運算指令中的一個操作數(shù),CPU將自動把它當作二進制數(shù)對待,認為它是十進制數(shù)56D。如果使用十進制調(diào)整指令,CPU將自動把它當作BCD碼對待,認為它是十進制數(shù)38D。指令的先后順序至關(guān)重要。編程時要做十進制數(shù)加、減、乘運算時,十進制數(shù)調(diào)整指令應(yīng)當緊跟在二進制數(shù)運算指令之后。【例1-35】輸出十進制數(shù)56并顯示,設(shè)顯示器帶有譯碼器。輸出過程與輸入過程正好相反。

(1)十進制數(shù)以BCD碼形式存放,存儲內(nèi)容為56H。取出該數(shù)的過程為:第一步,將存儲單元的內(nèi)容01010110B取出并和00001111B進行邏輯“與”運算,結(jié)果為00000110B=6D輸出;第二步,將存儲單元的內(nèi)容01010110B右移4位,得00000101B;第三步,用邏輯“與”取出0101B=5D輸出。(2)十進制數(shù)以二進制數(shù)形式存放,存儲內(nèi)容為38H。取出該數(shù)的過程為:第一步,將存儲單元的內(nèi)容00111000B除以1010B(即十進制數(shù)10),商為0101B=5D,余數(shù)0110B=6D;第二步,依次輸出0110B和0101B,輸出56D。2.兩種存儲方式的比較使用BCD碼表示十進制數(shù),8位字長的字所能表示的最大無符號數(shù)為十進制數(shù)99;使用二進制數(shù)表示十進制數(shù),8位字長的字所能表示的最大無符號數(shù)為十進制數(shù)255。當需要存放并運算一個很大的十進制數(shù)時,用二進制數(shù)表示就顯得極為麻煩。例如一個16位十進制數(shù)7590321764798625,由于每個存儲單元通常為8位,因此占用8個存儲單元用BCD碼形式存放和參加運算要簡單直觀得多。3.BCD碼運算以加法為例說明兩個BCD碼相加過程,使用二進制數(shù)加法規(guī)則,看結(jié)果是否正確。

【例1-36】十進制數(shù)21和32的相加過程。因21D=(00100001)8421BCD,32D=(00110010)8421BCD。使用二進制數(shù)加法規(guī)則:00100001B+00110010B=01010011B→(01010011)8421BCD

按照組合BCD碼,讀數(shù)為53D,結(jié)果正確。【例1-37】十進制數(shù)27和36的相加過程。因27D=(00100111)8421BCD,36D=(00110110)8421BCD。使用二進制數(shù)加法規(guī)則:00100111B+00110110B=01011101B

按照組合BCD碼讀數(shù),低4位不能讀,其和1101B>1001B,成了一個非法的BCD碼。而BCD碼只用了4位二進制數(shù)16種狀態(tài)中的10種,還有6種沒有用,因此應(yīng)當將低4位1101進行加6調(diào)整:1101B+0110B=10011B。進位到十位的1還要與高4位的0101相加:0101B+1=0110B,最終結(jié)果為(01100011)8421BCD=63,加6調(diào)整后才正確?!纠?-38】用BCD碼完成28+19=47。本題要求實現(xiàn)(00101000)8421BCD+(00011001)8421BCD

=(01000111)8421BCD,按照同樣分析方法,求解步驟為:先按二進制數(shù)相加,結(jié)果(01000001)8421BCD=41D不正確。此時低4位和雖然小于1001B,但低4位向高位有進位,含進位時為10001,顯然大于1001B。在這種情況下,低4位也應(yīng)該加6調(diào)整,結(jié)果才為(01000111)8421BCD。

使用二進制數(shù)加法器實現(xiàn)BCD碼加法的步驟為:第一步,按二進制數(shù)規(guī)則相加。第二步,分別按下面兩種情況確定是否需要進行加6調(diào)整:檢查低4位,如果低4位的和大于1001B,或低4位向高4位有進位,則低4位加6;檢查高4位,如果高4位的和大于1001B,或高4位向CF位有進位,則高4位加6。

大多數(shù)微機都設(shè)計有專門的十進制調(diào)整指令實現(xiàn)上述第二步。例如有兩條指令:ADDAL,BLDAA

第一條指令為二進制數(shù)加法指令,含義為兩個8位寄存器AL和BL內(nèi)容相加,結(jié)果放到AL寄存器中。設(shè)指令執(zhí)行前AL=49H,BL=25H,指令執(zhí)行后,將有AL=6EH。

第二條指令為十進制調(diào)整指令,它把兩個寄存器的內(nèi)容49H和25H都視為十進制數(shù)49D和25D,指令執(zhí)行結(jié)果為49D+25D=74D。第二條指令執(zhí)行完,將有AL=01110100B。使用十進制數(shù)調(diào)整指令時,一定要求參加調(diào)整的兩個寄存器的內(nèi)容為合法BCD碼,否則不能進行調(diào)整,算式發(fā)生了原則性的錯誤。1.3字符

為了能進行文字處理,微機還應(yīng)當能夠表示和識別各種不同的字符,這些字符至少應(yīng)當包括:阿拉伯數(shù)字0~9;大小英文字母A~Z,a~z;運算符號+、-、*、/、>、<、(,)等;特殊符號CR(回車)、DEL(作廢)等。1.3.1字符的ASCII碼表示

ASCII碼是美國標準信息交換代碼(AmericanStandardCodeforInterchange)的簡稱,用于表示字符。ASCII碼可以由6位、7位或8位二進制數(shù)組成,其中使用最為普遍的是7位二進制數(shù)。6位ASCII碼是在7位ASCII碼字符表中去掉26個英文小寫字母構(gòu)成的;8位ASCII碼是在7位ASCII碼字符表基礎(chǔ)上加了1位奇偶校驗位構(gòu)成的。7位二進制數(shù)可以表示27=128個字符。每個字符由高3位b6b5b4和低4位b3b2b1b0組成,編碼表見表1-8。編碼表中包括了各種最常用到的字符。微機中通常把一個連續(xù)的8位二進制數(shù)叫做一個字節(jié),在用字節(jié)來表示7位ASCII碼時,最高位取0取1都可以,常把最高位b7取為0。例如字母a的ASCII碼為1100001B,記為‘a(chǎn)’=61H。數(shù)字6的ASCII碼為0110110B,記為‘6’=36H,單引號是ASCII碼字符的表示符號。8位ASCII碼比7位ASCII碼多了一個b7位,這一位主要用作奇偶校驗位。因此,8位ASCII碼又被稱為奇偶校驗碼。奇偶校驗碼分為兩種:奇校驗碼和偶校驗碼。所謂奇校驗碼,是指將奇偶校驗位b7置0或置1,使得每個ASCII碼“1”的個數(shù)為奇數(shù)。同理,偶校驗碼的特征是將奇偶校驗位b7置0或置1,使得每個ASCII碼“1”的個數(shù)為偶數(shù)。數(shù)字0~9的7位ASCII碼和8位ASCII偶校驗碼之間的一一對應(yīng)關(guān)系如表1-9所示。對于其它7位ASCII碼字符,也可以按照完全相同的方式一一列出。表1-87位ASCII碼編碼表注:表中的特殊符號含義如下:8位ASCII偶校驗碼的組成規(guī)則是保持“1”的個數(shù)繼續(xù)為偶數(shù),例如數(shù)字3的7位ASCII碼為0110011,因“1”的個數(shù)已為偶數(shù),因此將b7位置0。又如數(shù)字4的7位ASCII碼為0110100,因“1”的個數(shù)為奇數(shù),因此將b7位置1。其它字符的組成方法完全類似。同樣可以列出7位ASCII碼和8位ASCII奇校驗位之間的一一對應(yīng)關(guān)系。對于8位ASCII奇偶校驗碼,其中的b7位僅僅只有組成奇偶性之用,和字符內(nèi)容無關(guān),因此在信息傳送完畢需要對字符做出處理時,奇偶校驗位b7通常要屏蔽掉,屏蔽方法之一是將字符和01111111B進行邏輯“與”運算。表1-9數(shù)字0~9的7位ASCII碼和8位ASCII碼的偶校驗碼

奇偶校驗碼常常用于數(shù)據(jù)通信,檢測被傳送的一串代碼是否有錯。以偶校驗為例,由于發(fā)送方已經(jīng)把每一個字符“1”的個數(shù)設(shè)置成了偶數(shù),接收方在接收到一串字符后,逐個字符檢查“1”的個數(shù)是否為偶數(shù),如果是,則認為發(fā)出正確;如果不是,則認為傳送信息出了錯誤。但是,這種檢查存在兩個問題:一個是已經(jīng)知道字符發(fā)生了錯誤,但卻不能斷定8位二進制數(shù)中哪些位上的“0”或“1”錯了;另一個是當出現(xiàn)了兩個“1”差錯時,就不能檢查出,反而當作正確的字符在接收。1.3.2字符運算

BCD碼十進制數(shù)運算結(jié)果依舊是BCD碼;

ASCII碼十進制數(shù)字符運算結(jié)果是未組合的8421BCD碼。將兩個ASCII碼十進制數(shù)字符相加,為了得到正確的結(jié)果,通常需要三個步驟:第一步,按照二進制數(shù)加法規(guī)則將兩個ASCII碼十進制數(shù)字符相加;第二步,對第一步相加的結(jié)果進行分析,確定該結(jié)果是否需要進行十進制調(diào)整;第三步,對第二步的結(jié)果進行轉(zhuǎn)換,轉(zhuǎn)化成為未組合8421BCD碼形式?!纠?-39】分析十進制數(shù)3和8的相加過程,字符3和8的代碼分別為‘3’=33H和‘8’=38H。第一步,利用二進制加法規(guī)則相加,33H+38H=6BH;第二步,考察和的低4位1011B(>1001B=9)不是BCD碼的表達形式,而是一個非法的BCD碼,這時需加6調(diào)整:6BH+06H=71H;第三步,將第二步相加的結(jié)果變成未組合BCD碼,步驟如下:

高4位的0111>0110,因此必須將低4位進位到高4位的1單獨分離出來:01110001B00000001及01100001將3和8相加結(jié)果與00001111進行邏輯“與”運算,使其成為未組合BCD碼:61H∧0FH=01H,最終結(jié)果為(0000000100000001)未組合BCD,表示十進制數(shù)11D?!?’和‘8’相加后得71H低4位的進位1‘3’和‘8’相加結(jié)果61H【例1-40】分析十進制數(shù)2和3的相加過程,字符2和3的代碼分別為‘2’=32H和‘3’=33H。第一步,利用二進制加法規(guī)則相加,32H+33H=65H;第二步,考察和的低4位0101B<1001B=9,符合2+3=5的十進制運算規(guī)則,因此不需要作十進制調(diào)整;第三步,對上一步相加的結(jié)果01100101B轉(zhuǎn)化成未組合BCD碼(00000101)未組合BCD,方法是將其和00001111B進行邏輯“與”運算:65H∧0FH=05H=(00000101)未組合BCD,表示十進制數(shù)5?!纠?-41】分析十進制數(shù)8和9的相加過程,字符8和9的代碼分別為‘8’=38H和‘9’=39H。第一步,38H+39H=71H;第二步,低4位0001B<9,但低4位向高4位有進位1,需加6調(diào)整:71H+06H=77H;第三步,將第二步相加的結(jié)果轉(zhuǎn)化成為未組合BCD碼,首先將低4位進位到高4位的1單獨分離,再將8和9相加結(jié)果01100111B與00001111B進行“與”運算,使其成為未組合BCD碼,最終得(0000000100000111)未組合BCD,表示十進制數(shù)17。

通過以上3例可以看到,兩個ASCII碼十進制數(shù)字符按照二進制數(shù)加法規(guī)則相加后,如果低4位的和大于9或者向高4位有進位的時候,低4位要進行加6調(diào)整。此外由于ASCII碼十進制數(shù)字符的高4位都為0011,因此在轉(zhuǎn)換成為未組合BCD碼時,必須用邏輯“與”將它們?nèi)科帘蔚?,而從?位進位來的“1”,實際上是十進制數(shù)十位上的1,必須單獨用(00000001)未組合BCD來表示。完成上述三個步驟的指令及其執(zhí)行過程在指令系統(tǒng)中敘述。在ASCII碼字符中,除了十進制數(shù)字符可以參加加減運算外,其它所有字符都不能參加運算。但是所有ASCII碼字符都可以進行傳送、比較、查找等非數(shù)值處理。1.4微型計算機系統(tǒng)的基本組成圖1-3微型計算機系統(tǒng)的基本組成1.4.1常用術(shù)語位(Bit):二進制位,只有0、1兩種狀態(tài),是信息存儲的最小數(shù)據(jù)單位。若干個二進制位可以表示各種數(shù)據(jù)和字符。字節(jié)(Byte):簡寫為B,相鄰8位二進制數(shù)。1B=8位,或說1個字節(jié)的長度為8位。存儲器1個存儲單元通常為1B。字(Word):簡寫為W,微機內(nèi)進行數(shù)據(jù)處理的基本單位。一般情況下,相鄰16位二進制數(shù)為1個字。1?W=2?B=16位。1個字可分成低字節(jié)和高字節(jié)。雙字(DoubleWord):簡寫為DW,由相鄰32位二進制數(shù)組成。1DW=2W=4B=32位。雙字可分成低位字和高位字。

四字(QuadWord):簡寫為QW,由相鄰64位二進制數(shù)組成。1QW=2DW=4W=8B=64位。四字可分成低位雙字和高位雙字。雙四字(DoubleQuadWord):簡寫為DQW,由相鄰128位二進制數(shù)組成。1DQW=2QW=4DW=8W=16B=128位。四字可分成低位四字和高位四字。雙四字用于具有SSE擴展的PentiumⅢ及以上CPU結(jié)構(gòu)。字長:基本數(shù)據(jù)單元所包含的二進制位數(shù),通常和微機內(nèi)部寄存器、運算器、數(shù)據(jù)總線寬度相一致。8位機、16位機和32位機就是指字長分別為8位、16位和32位的機器。

位串(BitString):若干二進制數(shù)位的集合。一個位串最短是1位,最長包含232位。從“位”到“雙四字”都可以看作是位串的一種。位串存放在存儲器中,1個字節(jié)位串占1個存儲單元,在4GB存儲空間內(nèi)地址編號從X+228-1到X-228,其中X是第0~7位所在字節(jié)的地址,如圖1-4所示。1個字位串占2個存儲單元。依此類推,1個雙四字位串占16個存儲單元。圖1-4位串和位偏移量

位串中每一位都有自己的位地址,位地址采用邏輯地址表示法:位基址加偏移量。位基址通常為0,位偏移量就成為位地址,用32位有符號二進制數(shù)表示,取值范圍為-231~+(231-1)。如果知道一個位的位偏移量,就可以求得該位所在字節(jié)位串的地址。例如位偏移量為-122的位,它所處字節(jié)位串的地址為X+(-122/8的商)=X-16=X-10H。位偏移量除以8的余數(shù)就是被測位在該字節(jié)中的位數(shù)。-122/8的余數(shù)是6,該位位于X-10H的第6位。又如位偏移量為122的位,所處字節(jié)位串地址為X+(122/8的商)=X+15=X+0FH。122/8的余數(shù)是2,該位位于X+0FH的第2位。圖1-5字符串

字符串(CharacterString):字節(jié)、字和雙字的相鄰序列,分別有字節(jié)串、字串和雙字串,如圖1-5所示。使用專用的字符串操作指令(可加重復(fù)前綴)完成傳送、比較和查詢。位于最低位的串地址就是該字符串的起始地址。1.4.2微機的三總線結(jié)構(gòu)

1.微機基本結(jié)構(gòu)圖1-6微機基本結(jié)構(gòu)

存儲器的功能是存放各種程序代碼、數(shù)據(jù)代碼和運算結(jié)果。為求解各類問題編制的程序、參加運算的各種數(shù)據(jù),以及由此引出的地址信號、數(shù)據(jù)信號、控制和狀態(tài)信號,都是以二進制數(shù)的形式存放在存儲器中的。

I/O接口電路又叫適配器,是I/O設(shè)備連接微機的惟一通道,其功能是轉(zhuǎn)換信息格式、傳送CPU的控制命令和反映I/O設(shè)備自身的狀態(tài)。I/O設(shè)備分為輸入設(shè)備和輸出設(shè)備。輸入設(shè)備的功能是將外界的各種信息,如圖形、圖像、聲音、文字、數(shù)字等,轉(zhuǎn)換成微機所能接收和識別的二進制信息形式。輸出設(shè)備的功能是將微機對二進制信息的處理結(jié)果轉(zhuǎn)換成人們所能接收和識別的形式。由于I/O設(shè)備的信息格式明顯不同于微機,并且大多數(shù)都有機械動作,數(shù)據(jù)傳送速度遠低于微機,輸入/輸出時都需要對數(shù)據(jù)進行緩沖存儲處理,因此,I/O設(shè)備不能直接和微機相連,必須通過I/O接口電路與CPU交換信息。I/O設(shè)備種類繁多,工作原理、信息格式各不相同,需要不同的接口電路。目前已生產(chǎn)了一些典型的I/O接口集成芯片,每種接口芯片只適配一種或信息格式相近的兩三種I/O設(shè)備。這些接口芯片內(nèi)部結(jié)構(gòu)的復(fù)雜程度和價格不亞于CPU芯片。I/O接口電路和CPU之間的數(shù)據(jù)傳送,是依靠I/O端口實現(xiàn)的。對CPU而言,每一個I/O端口和每一個存儲單元完全一樣,有自己的端口地址和端口內(nèi)容。一個接口芯片可以有一個或幾個端口,或者幾個接口芯片的某些功能共用一個端口。為了滿足傳送數(shù)據(jù)信息和控制/狀態(tài)信息的不同需要,I/O端口被劃分成數(shù)據(jù)口和控制/狀態(tài)口兩種不同類型的端口,統(tǒng)一進行編址。要想正確使用不同用途的接口芯片,必須首先知道芯片有幾個端口,是數(shù)據(jù)口還是控制口,端口地址各是多少,才能正確編制初始化程序和工作程序。

2.系統(tǒng)總線系統(tǒng)總線是連接各邏輯部件且能傳送信息的公共通道。每一種類型的總線,都有自己的寬度??偩€上能夠并行傳送的二進制位數(shù),稱為總線的寬度。系統(tǒng)總線按功能劃分為:地址總線AB(AddressBus)、數(shù)據(jù)總線DB(DataBus)和控制總線CB(ControlBus)。圖1-7為系統(tǒng)總線的示意圖。圖1-7系統(tǒng)總線

地址總線是傳送地址信息用于選中某一存儲單元和某一I/O端口的一組系統(tǒng)總線。地址信息流向單方向,由CPU指向存儲器或I/O接口。CPU通過地址總線尋找存儲單元或I/O端口地址的操作,稱為尋址。地址總線的寬度決定了微機所能尋址的最大存儲空間和最大I/O端口地址空間。8086/8088的地址總線寬度為20位,用A19~A0表示,可尋址的存儲單元數(shù)為220=1?M;對I/O端口地址的尋址使用地址總線的低8位A7~A0或低16位A15~A0進行,可尋址的I/O端口數(shù)為256個或64K個。

數(shù)據(jù)總線是傳送數(shù)據(jù)信息的一組系統(tǒng)總線。數(shù)據(jù)信息流向雙方向,既可以從CPU流向存儲器或I/O端口,也可以從存儲器或I/O端口流向CPU。此外,在微機處于DMA(直接存儲器存取)工作方式下,存儲器和I/O接口還能相互傳送數(shù)據(jù)。因此,數(shù)據(jù)總線為雙向總線。數(shù)據(jù)總線的寬度成為按字長劃分的計算機名稱來源之一。當代PentiumCPU的數(shù)據(jù)總線寬度為64位二進制數(shù),以Pentium為核心構(gòu)成的計算機就被稱為64位機。

控制總線是傳送控制命令和狀態(tài)信息的一組系統(tǒng)總線??刂泼钍荂PU發(fā)布的控制存儲器或I/O端口完成某一特定操作的命令信息,如讀信號、寫信號、地址鎖存允許信號ALE等。狀態(tài)信息是存儲器或I/O端口向CPU發(fā)出的反映自身狀態(tài)或請求的信號,如忙信號、中斷申請信號等??刂瓶偩€,就單根線來講,信息流向是單方向的,有的從CPU指向存儲器或I/O端口,有的從存儲器或I/O端口指向CPU,因此,從成組來講,可以看成是雙向的。表1-10微處理器的地址與數(shù)據(jù)總線寬度3.微機的分類1)按數(shù)據(jù)總線寬度劃分1位機:用于專門設(shè)備中;4位機:用于專門設(shè)備中;8位機:Z80機、8080、6800、Apple6502、MCS51系列單片機;準16位機:PC/XT8086/8088機、8098單片機;16位機:80286機、MC68000機;32位機:80386/80486機;

64位機:Pentium系列機。2)按所配存儲器容量劃分單片機:單片機是一種將微處理器、4~8KBROM(有的單片機芯片沒有)、定時器/計數(shù)器、I/O接口、256?B?RAM集成在一個芯片上的計算機。由于單片機的地址/數(shù)據(jù)總線引腳合用、分時操作,因此在擴展片外程序存儲器時必須外接地址鎖存器。一個典型的單片機最小系統(tǒng)由8031單片機、74LS373地址鎖存器、EPROM2716片外擴展RAM構(gòu)成。單板機:單板機的基本組成:微處理器使用Z80,內(nèi)部存儲器10KB左右,另外還擴充有2716組成的6KBROM、2114組成的4~8KBRAM,并行接口芯片PIO,定時器/計數(shù)器芯片CTC。因單板機內(nèi)部存儲器容量小,所以不能使用匯編語言,只能使用機器語言進行操作。典型機型為TP801機。單片機和單板機的結(jié)合稱為單片單板機。

通用機:通用機是通用微機的簡稱,又稱為個人計算機或PC(PersonalComputer)機。內(nèi)存至少在64?KB以上,有編譯程序,能使用高級語言。如果要求使用漢字,內(nèi)存至少在512?KB以上。當代Pentium機允許的最大物理存儲空間已達到64?GB。一個典型的當代微機配置如下:IntelPentium42.4GBCPU,128?MBDDR內(nèi)存條,40?GB高速硬盤,DVD-ROM,2+4

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論