第4章 機(jī)器數(shù)的運(yùn)算方法及運(yùn)算器_第1頁(yè)
第4章 機(jī)器數(shù)的運(yùn)算方法及運(yùn)算器_第2頁(yè)
第4章 機(jī)器數(shù)的運(yùn)算方法及運(yùn)算器_第3頁(yè)
第4章 機(jī)器數(shù)的運(yùn)算方法及運(yùn)算器_第4頁(yè)
第4章 機(jī)器數(shù)的運(yùn)算方法及運(yùn)算器_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章機(jī)器數(shù)的運(yùn)算方法及運(yùn)算器下一頁(yè)目錄

4.1機(jī)器數(shù)的加減運(yùn)算及其實(shí)現(xiàn)4.2定點(diǎn)乘法及其實(shí)現(xiàn)4.3定點(diǎn)除法及其實(shí)現(xiàn)4.4浮點(diǎn)數(shù)的算術(shù)運(yùn)算4.5

運(yùn)算器的組成和結(jié)構(gòu)下一頁(yè)上一頁(yè)4.1機(jī)器數(shù)的加減運(yùn)算及其實(shí)現(xiàn)4.1.1原碼加法4.1.2補(bǔ)碼加法4.1.3減法運(yùn)算4.1.4補(bǔ)碼加減運(yùn)算線路的實(shí)現(xiàn)

上一頁(yè)下一頁(yè)4.1.1原碼加法1.符號(hào)相同的兩個(gè)原碼相加:符號(hào)相同的兩個(gè)原碼相加,只要兩個(gè)數(shù)的數(shù)值相加即可,其符號(hào)不變?!纠?.1】設(shè)X=+10001,Y=+01011,求Z=X+Y解: 即,Z=+11100?!纠?.2】設(shè)X=-10001,Y=-01011,求Z=X+Y解:即,Z=-11100。上一頁(yè)下一頁(yè)2.符號(hào)相異的兩個(gè)原碼相加:先比較兩數(shù)的絕對(duì)值大小,用絕對(duì)值大的數(shù)減去絕對(duì)值小的數(shù),結(jié)果的符號(hào)是絕對(duì)值大的數(shù)的符號(hào)?!纠?.3】設(shè)X=+10101,Y=-01010,求Z=X+Y解:先比較X與Y的絕對(duì)值,本題∣X∣>|Y|,所以做減法|X∣-|Y|,結(jié)果是Z=+01011【例4.2】設(shè)X=+01010,Y=-10111,求Z=X+Y解:先比較X與Y的絕對(duì)值,本題∣Y∣>|X|,所以做減法|Y∣-|X|,結(jié)果是Z=-01101上一頁(yè)4.1.1原碼加法下一頁(yè)用原碼進(jìn)行符號(hào)不同的兩個(gè)數(shù)相加時(shí)有以下三步運(yùn)算:①

比較兩個(gè)數(shù)的絕對(duì)值的大??;②

絕對(duì)值大的數(shù)的絕對(duì)值減去絕對(duì)值小的數(shù)的絕對(duì)值;③

結(jié)果賦以絕對(duì)值大的那個(gè)數(shù)的符號(hào)。上一頁(yè)4.1.1原碼加法下一頁(yè)4.1.2補(bǔ)碼加法1.定點(diǎn)補(bǔ)碼運(yùn)算性質(zhì)性質(zhì)1兩數(shù)之和的補(bǔ)碼等于兩數(shù)補(bǔ)碼之和。[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)

【例4.5】設(shè)X=+11010,Y=-10101,用補(bǔ)碼的加法求Z=X+Y解:加數(shù)和被加數(shù)的數(shù)值位都是5位,在數(shù)值位之前加1位符號(hào)位。這樣,[X]補(bǔ)=011010,[Y]補(bǔ)=101011[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=011010+101011=000101所以,X+Y=+00101。注意:在運(yùn)算中,數(shù)值位和符號(hào)位有進(jìn)位,本例采用單符號(hào)位,以2為模,進(jìn)位的1就丟掉了。上一頁(yè)下一頁(yè)【例4.6】設(shè)X=+10101,Y=-11010,用補(bǔ)碼加法求Z=X+Y解:[X]補(bǔ)=010101,[Y]補(bǔ)=100110[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=010101+100110=111011所以,X+Y=-00101。上一頁(yè)下一頁(yè)性質(zhì)2一個(gè)負(fù)數(shù)的補(bǔ)碼的補(bǔ)碼就是這個(gè)負(fù)數(shù)的原碼。[[X]補(bǔ)]補(bǔ)=[X]原【例4.7】設(shè)有兩個(gè)定點(diǎn)小數(shù)

X=-0.10011,Y=-0.11001,求這兩個(gè)負(fù)數(shù)補(bǔ)碼的補(bǔ)碼。解:[X]原=1.10011[Y]原=1.11001[X]補(bǔ)=1.01101[Y]補(bǔ)=1.00111

[[X]補(bǔ)]補(bǔ)=1.10011=[X]原

[[Y]補(bǔ)]補(bǔ)=1.11001=[Y]原上一頁(yè)下一頁(yè)計(jì)算機(jī)中計(jì)算結(jié)果的補(bǔ)碼均可化成該數(shù)的原碼。【例4.8】設(shè)有兩個(gè)定點(diǎn)小數(shù)X=-0.1101,Y=0.0111,(-1<X+Y<0),求這兩數(shù)之和。解:[X]補(bǔ)=1.0011[Y]補(bǔ)=0.0111[X]補(bǔ)+[Y]補(bǔ)=1.0011+0.0111=1.1010[X+Y]原=[[X]補(bǔ)+[Y]補(bǔ)]補(bǔ)=[1.1010]補(bǔ)=1.0110所以,X+Y=-0.0110用真值進(jìn)行運(yùn)算:X+Y=-0.1101+0.0111=-0.0110結(jié)果相同。

用補(bǔ)碼做加法是數(shù)值位連同符號(hào)位一起參加運(yùn)算的。但是在有溢出的情況下,用一般的補(bǔ)碼加法就得不到正確的結(jié)果,再看下面的例子。上一頁(yè)下一頁(yè)【例4.9】設(shè)有兩個(gè)定點(diǎn)小數(shù)X=+0.10111,Y=+0.10001,用補(bǔ)碼的加法求Z=X+Y解:[X]補(bǔ)=0.10111,[Y]補(bǔ)=0.10001[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=0.10111+0.10001=1.01000

Z=X+Y=-0.11000兩個(gè)大于0.5的正數(shù)相加,結(jié)果就為負(fù)值,結(jié)果顯然是錯(cuò)誤的?!纠?.10】設(shè)X=-0.10111,Y=-0.10001,用補(bǔ)碼的加法求Z=X+Y解:[X]補(bǔ)=1.01001,[Y]補(bǔ)=1.01111[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=1.01001+1.01111=0.11000Z=X+Y=+0.11000兩個(gè)絕對(duì)值大于0.5的負(fù)數(shù)相加,結(jié)果為正值,這也是錯(cuò)誤的。它們的和超出了機(jī)器數(shù)所能表示的最大范圍,即產(chǎn)生了溢出,在有溢出的情況下,用一般補(bǔ)碼加法就無(wú)法得到正確結(jié)果。

上一頁(yè)下一頁(yè)【例4.11】設(shè)有兩個(gè)定點(diǎn)小數(shù)X=+0.10111,Y=-0.10001,用補(bǔ)碼的加法求Z=X+Y解:[X]補(bǔ)=0.10111,[Y]補(bǔ)=1.01111[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=0.10111+1.01111=0.00110所以,Z=+0.00110,沒(méi)有發(fā)生溢出,結(jié)果是正確的。上一頁(yè)下一頁(yè)【例4.12】設(shè)有兩個(gè)定點(diǎn)小數(shù)X=-0.10111,Y=+0.10001,用補(bǔ)碼的加法求Z=X+Y解:[X]補(bǔ)=1.01001,[Y]補(bǔ)=0.10001[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=1.01001+0.10001=1.11010[[X+Y]補(bǔ)]補(bǔ)=1.00110Z=X+Y=-0.00110所以,Z=-0.00110,沒(méi)有發(fā)生溢出,結(jié)果也是正確的。上一頁(yè)下一頁(yè)2.變形補(bǔ)碼加法變形補(bǔ)碼是符號(hào)位用兩位來(lái)表示的補(bǔ)碼。變形補(bǔ)碼的定義為:對(duì)于變形補(bǔ)碼,補(bǔ)碼的加法性質(zhì)公式同樣適用,即:[X+Y]變形補(bǔ)=[X]變形補(bǔ)+[Y]變形補(bǔ)[[X]

變形補(bǔ)]

變形補(bǔ)=[X]原用雙符號(hào)位進(jìn)行判斷,若和的兩個(gè)符號(hào)位相同(00或11),不發(fā)生溢出;若和的兩個(gè)符號(hào)位相異(01或10),就說(shuō)明發(fā)生了溢出。遇到溢出,就要停機(jī)進(jìn)行如下處理:選取一個(gè)合理的比例因子H=2i,對(duì)每個(gè)加數(shù)都除以H,然后相加,其結(jié)果再乘以H,即得所求。上一頁(yè)下一頁(yè)下面我們對(duì)例4.9和例4.10用變形補(bǔ)碼加法來(lái)求結(jié)果?!纠?.13】設(shè)X=+10111,Y=+10001,用變形補(bǔ)碼的加法求Z=X+Y解:設(shè)比例因子H=2,則有所以,X+Y=+101000上一頁(yè)下一頁(yè)【例4.14】設(shè)X=-10111,Y=-10001,用變形補(bǔ)碼的加法求Z=X+Y解:設(shè)比例因子H=2,

則有:所以:X+Y=-101000上一頁(yè)下一頁(yè)說(shuō)明⑴

舍入處理

在變形補(bǔ)碼運(yùn)算中,加數(shù)除以H=2i,是通過(guò)把[X]補(bǔ)右移I位得到的。在移位時(shí),末幾位可能超出機(jī)器的最末位而丟失,造成誤差。為了減少誤差,通常要進(jìn)行舍入處理,一般有兩種方法:①

恒置1。即移位后機(jī)器末位總是1。上面的例子就是用的恒置1的方法。②0舍1入。即移出去的數(shù)是0則抹去,移出去的數(shù)是1則進(jìn)1到末位。⑵

符號(hào)位擴(kuò)展

補(bǔ)碼在右移時(shí),要注意符號(hào)位要一起移,且最左邊一位要補(bǔ)上原符號(hào)位的值,這就叫做符號(hào)位擴(kuò)展,即把符號(hào)位擴(kuò)展到為3位。總結(jié)以上,得出補(bǔ)碼相加的規(guī)則:①

若兩數(shù)符號(hào)不同,相加的結(jié)果即為和的補(bǔ)碼。②

若兩數(shù)符號(hào)相同,相加后若其和的符號(hào)不變,則結(jié)果是和的補(bǔ)碼。③

若兩數(shù)符號(hào)相同,相加后若其和的符號(hào)改變,則表示發(fā)生了溢出。兩個(gè)正數(shù)相加,結(jié)果的符號(hào)為“01”,表示發(fā)生正溢出;兩個(gè)負(fù)數(shù)相加,結(jié)果的符號(hào)為“10”,表示發(fā)生負(fù)溢出。上一頁(yè)下一頁(yè)4.1.3減法運(yùn)算性質(zhì)3兩數(shù)之差的補(bǔ)碼等于被減數(shù)的補(bǔ)碼與負(fù)的減數(shù)補(bǔ)碼之和。[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)

由性質(zhì)1推導(dǎo)得:[X-Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)【例4.15】?jī)蓚€(gè)正數(shù)相減,被減數(shù)大于減數(shù)的例子。設(shè)X=+11001,Y=+10001,求Z=X-Y。解:[X]補(bǔ)=00.11001,[-Y]補(bǔ)=11.01111[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)=00.11001+11.01111=00.01000

X-Y=+01000 所以,Z=+01000上一頁(yè)下一頁(yè)【例4.16】?jī)蓚€(gè)正數(shù)相減,被減數(shù)小于減數(shù)的例子。設(shè)X=+10011,Y=+11001,求Z=X-Y。解:[X]補(bǔ)=00.10011,[-Y]補(bǔ)=11.00111[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)=00.10011+11.00111=11.11010

X-Y=-00110所以,Z=-00110上一頁(yè)下一頁(yè)【例4.17】?jī)韶?fù)數(shù)相減,被減數(shù)大于減數(shù)的例子。設(shè)X=-10011,Y=-11001,求Z=X-Y。解:[X]補(bǔ)=11.01101,[-Y]補(bǔ)=00.11001 [X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ) =11.01101+00.11001 =00.00110 X-Y=+00110

所以,Z=+00110上一頁(yè)下一頁(yè)【例4.18】?jī)韶?fù)數(shù)相減,被減數(shù)小于減數(shù)的例子。設(shè)X=-11001,Y=-10011,求Z=X-Y。解:[X]補(bǔ)=11.00111,[-Y]補(bǔ)=00.10011 [X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)=11.00111+00.10011 =11.11010

X-Y=-00110

所以,Z=-00110上一頁(yè)下一頁(yè)4.1.4補(bǔ)碼加減運(yùn)算線路的實(shí)現(xiàn)在線路實(shí)現(xiàn)上,若已有[Y]補(bǔ),求[-Y]補(bǔ)可用把[Y]補(bǔ)每一位(包括符號(hào)位和數(shù)值位)取反,再在最低位加1來(lái)實(shí)現(xiàn)。實(shí)現(xiàn)補(bǔ)碼加減運(yùn)算的邏輯電路如右圖所示。下一頁(yè)上一頁(yè)4.1.4補(bǔ)碼加減運(yùn)算線路的實(shí)現(xiàn)圖中各個(gè)部件的名稱(chēng)和功能是:F表示多位并行加法器,它的功能是接收參加運(yùn)算的兩個(gè)數(shù)X和Y,實(shí)現(xiàn)加法運(yùn)算,并在輸出端給出本次運(yùn)算結(jié)果。加法器的最低一位可以接收一個(gè)進(jìn)位信號(hào)1→F。X和Y臨時(shí)存放參加運(yùn)算數(shù)據(jù)的兩個(gè)寄存器,X還用來(lái)保存運(yùn)算的結(jié)果。A“與”門(mén),功能是控制寄存器X輸出的內(nèi)容是否送到加法器F的左輸入端,用X→F信號(hào)控制。C“與”門(mén),功能是控制加法器F的運(yùn)算結(jié)果是否寫(xiě)回寄存器X,用F→X信號(hào)控制。B“與或”門(mén),功能是通過(guò)控制信號(hào)Y→F和→F分別把Y寄存器中的內(nèi)容是原數(shù)據(jù)送加法器F還是各位取反后送加法器F。下一頁(yè)上一頁(yè)運(yùn)算原理如下:參加運(yùn)算的兩個(gè)數(shù)被送到寄存器X和Y,以補(bǔ)碼的形式保存。要實(shí)現(xiàn)[X+Y]補(bǔ)→X,需給出X→F、Y→F兩個(gè)控制信號(hào),就可以把[X]補(bǔ)和[Y]補(bǔ)送入加法器F的兩個(gè)輸入端,加法器再完成兩個(gè)補(bǔ)碼[X]補(bǔ)和[Y]補(bǔ)的相加。加法完成之后,再通過(guò)F→X命令,把相加結(jié)果送入寄存器X。

若要完成[X-Y]補(bǔ)→X,“與”門(mén)A送出的還是[X]補(bǔ),但“與或”門(mén)B送出的應(yīng)是Y每一位的取反值,并在加法器的最低位加進(jìn)位信號(hào)1→F,這樣就得到[-Y]補(bǔ),通過(guò)加法器F相加,就實(shí)現(xiàn)了[X]補(bǔ)+[-Y]補(bǔ),也就是[X-Y]補(bǔ)。再通過(guò)F→X命令,把[X-Y]補(bǔ)送入寄存器X。上一頁(yè)下一頁(yè)4.2定點(diǎn)乘法及其實(shí)現(xiàn)4.2.1原碼一位乘法及其實(shí)現(xiàn)4.2.2定點(diǎn)補(bǔ)碼一位乘法及其實(shí)現(xiàn)4.2.3原碼兩位乘法4.2.4補(bǔ)碼兩位乘法上一頁(yè)下一頁(yè)4.2.1原碼一位乘法及其實(shí)現(xiàn)在定點(diǎn)計(jì)算機(jī)中,用兩個(gè)原碼表示的數(shù)相乘,其乘積的符號(hào)由兩數(shù)的符號(hào)位異或得到,乘積的數(shù)值部分是兩數(shù)的絕對(duì)值相乘之積。例如,有兩個(gè)數(shù)X和Y[X]原=XsX1X2

…Xn[Y]原=YsY1Y2

…Yn則[X*Y]原=[X]原*[Y]原。乘積的符號(hào)位為:Xs⊕Ys乘積的數(shù)值部分為:(X1X2

…Xn)*(Y1Y2

…Yn)。上一頁(yè)下一頁(yè)

在計(jì)算機(jī)中其運(yùn)算規(guī)則是:根據(jù)乘數(shù)Y絕對(duì)值每個(gè)數(shù)位上的值Yi是“1”還是“0”(從最低位Y0開(kāi)始),決定本次部分積是加上被乘數(shù)X的絕對(duì)值,還是加上全“0”,得到的新部分積右移一位,再重復(fù)上面的動(dòng)作,直到乘法做完為止。

【例4.19】X=+11010,Y=+10110,求Z=X*Y

解:[X]原=0.11010,[Y]原=0.10110乘積的符號(hào)位Z0=0⊕0=0

乘積的數(shù)值部分是兩數(shù)的絕對(duì)值相乘。開(kāi)始時(shí),部分積為全“0”。上一頁(yè)下一頁(yè)所得結(jié)果Z=+0.1000111100。有時(shí)部分積的符號(hào)位出現(xiàn)“1”,并不是出現(xiàn)了負(fù)數(shù),而是部分積的值超出了“1”,右移時(shí)符號(hào)位應(yīng)補(bǔ)“0”。

上一頁(yè)下一頁(yè)要實(shí)現(xiàn)原碼一位乘法,乘積的符號(hào)可以用異或門(mén)實(shí)現(xiàn),異或門(mén)的兩個(gè)輸入為相乘兩數(shù)的符號(hào),輸出即為乘積的符號(hào)。下圖給出了實(shí)現(xiàn)原碼一位乘法的邏輯電路框圖,以實(shí)現(xiàn)對(duì)相乘兩數(shù)的數(shù)值位相乘。上一頁(yè)下一頁(yè)

實(shí)現(xiàn)原碼一位乘法的邏輯電路框圖

主要組成部件有:寄存器A,存放計(jì)算的部分積Z,具有自動(dòng)移位功能;寄存器B,存放被乘數(shù)X;寄存器C,存放乘數(shù)Y,具有自動(dòng)移位功能;加法器F,進(jìn)行部分積和被乘數(shù)相加;計(jì)數(shù)器i,用來(lái)控制逐位相乘的次數(shù)??刂菩盘?hào)A→F、B→F分別通過(guò)與門(mén)控制部分積、被乘數(shù)送入加法器F進(jìn)行相加;控制信號(hào)A/2→A、C/2→C分別控制寄存器A、C自行右移一位。

下一頁(yè)上一頁(yè)4.2.2定點(diǎn)補(bǔ)碼一位乘法及其實(shí)現(xiàn)兩個(gè)補(bǔ)碼數(shù)相乘,其結(jié)果應(yīng)直接得到乘積的補(bǔ)碼:[X]補(bǔ)*[Y]補(bǔ)=[X*Y]補(bǔ)⑴

當(dāng)被乘數(shù)X的符號(hào)為任意,乘數(shù)Y的符號(hào)為正。因?yàn)閅≥0,[Y]補(bǔ)=Y,則[X]補(bǔ)*[Y]補(bǔ)=[X]補(bǔ)*Y=[X*Y]補(bǔ)這種情況,可以由兩個(gè)補(bǔ)碼數(shù)直接相乘得到正確的結(jié)果。運(yùn)算過(guò)程中的加、移位等操作均按補(bǔ)碼規(guī)則進(jìn)行。上一頁(yè)下一頁(yè)⑵

當(dāng)被乘數(shù)X的符號(hào)為任意,乘數(shù)Y的符號(hào)為負(fù)。因?yàn)閅<0,[Y]補(bǔ)=2n+Y,則[X]補(bǔ)*[Y]補(bǔ)=[X]補(bǔ)*[2n+Y]=[X]補(bǔ)*2n+[X]補(bǔ)*Y

而正確的乘積應(yīng)為[X]補(bǔ)*Y,這種情況,結(jié)果應(yīng)該進(jìn)行修正,把[X]補(bǔ)*2n作為修正值,這就是修正法補(bǔ)碼乘法??偨Y(jié)修正法補(bǔ)碼乘法的運(yùn)算規(guī)則是:①

符號(hào)位參加運(yùn)算,結(jié)果的符號(hào)由運(yùn)算結(jié)果得出,重復(fù)執(zhí)行n步右移操作進(jìn)行相加。②

當(dāng)乘數(shù)為負(fù)時(shí),需進(jìn)行n+1步操作,進(jìn)行修正。上一頁(yè)下一頁(yè)⑶

當(dāng)被乘數(shù)X和乘數(shù)Y的符號(hào)都任意時(shí):應(yīng)該用比較法補(bǔ)碼乘法。比較法又叫BOOTH法,是由修正法導(dǎo)出的用兩個(gè)補(bǔ)碼直接相乘后就得到正確結(jié)果的方法。乘數(shù)

Y=-2n+[Y]補(bǔ)=-2n+[Y0Y1Y2…Yn-1]=-2n+[Y0*2n-1+Y1*2n-2+Y3*2n-3+…+Yn-1*20]=-2n*Y0+Y0*2n-1+Y1*2n-2+…+Yn-1*20]=-2n-1*Y0+Y1*2n-2+Y2*2n-3+…+Yn-2*21+Yn-1*20]上式中,-2n乘以Y0,該公式仍然正確。將上式提出2n,則有:Y=[-2-1*Y0+Y1*2-2+Y2*2-3+…+Yn-2*2-(n-1)+Yn-1*2-(n)]2n=[2-1*(Y1-Y0)+2-2*(Y2-Y1)+2-3*(Y3-Y2)+…+2-(n-1)*(Yn-1-Yn-2)+2-n*(Yn-Yn-1)]*2n上一頁(yè)下一頁(yè)得:[X]補(bǔ)*Y=(2-1*(Y1-Y0)*[X]補(bǔ)+2-2*(Y2-Y1)*[X]補(bǔ)+2-3*(Y3-Y2)*[X]補(bǔ)+…+2-(n-1)*(Yn-1-Yn-2)*[X]補(bǔ)+2-n*(Yn-Yn-1)*[X]補(bǔ))*2n也即:[X]補(bǔ)*Y=2-1*((Y1-Y0)*[X]補(bǔ)*2n+2-1*((Y2-Y1)*[X]補(bǔ)*2n+2-1*(Y3-Y2)*[X]補(bǔ)*2n+…+2-1*((Yn-1-Yn-2)*[X]補(bǔ)*2n+2-1*((Yn-Yn-1)*[X]補(bǔ)*2n))…)))寫(xiě)成遞推公式:[Z0]補(bǔ)=2-1*(Yn-Yn-1)*[X]補(bǔ)*2n[Z1]補(bǔ)=2-1*([Z0]補(bǔ)+(Yn-1-Yn-2)*[X]補(bǔ)*2n)[Z2]補(bǔ)=2-1*([Z1]補(bǔ)+(Yn-2-Yn-3)*[X]補(bǔ)*2n)┇[Zi]補(bǔ)=2-1*([Zi-1]補(bǔ)+(Yn-i-1-Yn-i-2)*[X]補(bǔ)*2n)┇[Zn-1]補(bǔ)=2-1*([Zn-2]補(bǔ)+(Y1-Y0)*[X]補(bǔ)*2n)最后乘積為[Zn-1]補(bǔ)式中,Yn為附加位,在Yn-1以后,Yn=0。上一頁(yè)下一頁(yè)由此,可以總結(jié)出比較法補(bǔ)碼乘法的規(guī)則:在作補(bǔ)碼一位乘法時(shí),在乘數(shù)的最末位后面再加一位附加位yn。開(kāi)始時(shí),yn=0,第一步運(yùn)算是根據(jù)yn-1

yn這兩位的值判斷后決定,然后再根據(jù)yn-2yn-1這兩位的值判斷第二步該作什么運(yùn)算,再根據(jù)yn-3yn-2這兩位的值判斷第三步該作什么運(yùn)算,如此等等。因?yàn)槊窟M(jìn)行一步,乘數(shù)都要右移一位,yn-2yn-1

就移到y(tǒng)n-1

yn位置上。作第三步時(shí),原來(lái)的yn-3yn-2移到了yn-2yn-1位置上。所以每次只要判斷yn-1

yn這兩位的值就行。判斷規(guī)則如表4-1所示。上一頁(yè)下一頁(yè)補(bǔ)碼一位比較乘法規(guī)則

上一頁(yè)下一頁(yè)比較法計(jì)算用流程圖表示

上一頁(yè)下一頁(yè)【例4.20】利用補(bǔ)碼一位乘法計(jì)算Z=X*Y,其中X=-0.1101,Y=0.1011。解:[X]補(bǔ)=11.0011,[Y]補(bǔ)=0.1011,[-X]補(bǔ)=00.1101乘積的數(shù)值部分是兩數(shù)的絕對(duì)值相乘。開(kāi)始時(shí),部分積為全“0”。

所以[X*Y]補(bǔ)=11.01110001,結(jié)果Z=X*Y=-0.10001111。

上一頁(yè)下一頁(yè)實(shí)現(xiàn)一位補(bǔ)碼乘法的邏輯原理圖如圖4-4所示。它與一位原碼乘法的邏輯原理圖有些相似,不同的地方有以下幾點(diǎn):⑴被乘數(shù)和乘數(shù)的符號(hào)位參加運(yùn)算;⑵乘數(shù)寄存器C有附加位Yn,其初始狀態(tài)為“0”。當(dāng)乘數(shù)和部分積每次右移時(shí),部分積最低位移入寄存器C的首位位置,所以寄存器C必須是具有右移功能的寄存器。⑶被乘數(shù)寄存器B的每一位用原碼或反碼(可用觸發(fā)器的Q端或端輸出)經(jīng)多路開(kāi)關(guān)傳送到加法器對(duì)應(yīng)位的一個(gè)輸入端,而多路開(kāi)關(guān)的控制信號(hào)由Yn-1、Yn的輸出譯碼器產(chǎn)生。當(dāng)Yn-1Yn=01時(shí),送[X]補(bǔ);當(dāng)Yn-1Yn=10時(shí),送[-X]補(bǔ),即送寄存器B內(nèi)容的反碼且在加法器末位加1。⑷寄存器A用來(lái)保存部分積,該寄存器也應(yīng)具有右移的功能,其符號(hào)位與加法器的符號(hào)位始終一致。⑸當(dāng)計(jì)數(shù)器i=n+1時(shí),封鎖A/2→A,C/2→C控制信號(hào),使最后一步不移位。上一頁(yè)下一頁(yè)補(bǔ)碼一位乘法邏輯原理圖上一頁(yè)下一頁(yè)4.2.3原碼兩位乘法定點(diǎn)原碼兩位乘法是根據(jù)乘數(shù)中相鄰兩位數(shù)碼的值來(lái)確定乘法的每一步作什么運(yùn)算。兩位乘法的判別位是2位,即ynyn+1,共有4種可能,即00,01,10,11,其操作方法如下表所列。下一頁(yè)上一頁(yè)【例4.21】設(shè)X=1101,Y=1001,用原碼兩位乘法求Z=X*Y

解:以X為被乘數(shù),Y為乘數(shù),其判別位Y1Y0=01,Y3Y2=10,其兩位乘法的運(yùn)算過(guò)程如下:上一頁(yè)下一頁(yè)所得結(jié)果Z=1110101?!纠?.22】用原碼兩位乘法求Z=X*Y,其中X=101011,Y=001001,

解:以X為被乘數(shù),Y為乘數(shù),其判別位Y1Y0=01,Y3Y2=10,Y5Y4=00,其兩位乘法的運(yùn)算過(guò)程如下:上一頁(yè)下一頁(yè)所得結(jié)果Z=110000011。說(shuō)明:①

部分積減去被乘數(shù)X,是用補(bǔ)碼進(jìn)行運(yùn)算,即用+[-X]補(bǔ)的方法實(shí)現(xiàn)。②

部分積減去被乘數(shù)所得結(jié)果一般為負(fù)數(shù),這是因?yàn)椴糠址e要右移2位,所以總是小于被乘數(shù)的緣故。③

當(dāng)判別位為11時(shí),要用上次部分積減被乘數(shù),右移2位,再在下一個(gè)判別位上加1。其原因是判別位為11(即3),應(yīng)加上3倍的被乘數(shù)。兩種方法是等效的。 ④符號(hào)位擴(kuò)展的實(shí)質(zhì)是采用幾位加法器的問(wèn)題。若采用n+2位加法器,符號(hào)位擴(kuò)展2位;若采用n+3位加法器,則符號(hào)位應(yīng)擴(kuò)展3位。

下一頁(yè)上一頁(yè)4.2.4補(bǔ)碼兩位乘法進(jìn)行定點(diǎn)補(bǔ)碼兩位乘法,要有3位判別位,3位判別位的組合關(guān)系為:-2Yi+Yi-1+Yi-2

它們的組合值與相應(yīng)的加法操作,如下表所示。下一頁(yè)上一頁(yè)⑴判別位。在乘數(shù)的最低位后增加一位附加位。乘數(shù)的符號(hào)位要視數(shù)值部分的位數(shù)來(lái)決定。若數(shù)值部分的位數(shù)為偶數(shù),則必須采用2位符號(hào)位;否則,就采用1位符號(hào)位。⑵加法操作的次數(shù)。定點(diǎn)補(bǔ)碼兩位乘法運(yùn)算所做加法操作的次數(shù)為乘數(shù)的位數(shù)(包括符號(hào)位)除以2的值。⑶被乘數(shù)的符號(hào)位??刹捎?位符號(hào)位或3位符號(hào)位,視情況而定。⑷符號(hào)位擴(kuò)展。在進(jìn)行定點(diǎn)補(bǔ)碼兩位乘法運(yùn)算中,在進(jìn)行右移2位操作時(shí),要注意符號(hào)位的擴(kuò)展,即右移時(shí)符號(hào)要一起移,空出的符號(hào)位以符號(hào)的原值填充。⑸最后一步的移位。視乘數(shù)的符號(hào)位而定。若符號(hào)位為2位,則不用移位;若符號(hào)位為1位,則要進(jìn)行右移1位的操作。下一頁(yè)進(jìn)行定點(diǎn)補(bǔ)碼兩位乘法運(yùn)算需注意如下問(wèn)題上一頁(yè)【例4.23】設(shè)X=-1101,Y=-0101,用補(bǔ)碼的兩位乘法求Z=X*Y

解:[X]補(bǔ)=11.0011,[-X]補(bǔ)=00.1101,[Y]補(bǔ)=11.1011采用2位符號(hào)位,[X*Y]補(bǔ)的補(bǔ)碼兩位乘法運(yùn)算過(guò)程如下:下一頁(yè)故運(yùn)算結(jié)果為:[X*Y]補(bǔ)=00.01000001,所以Z=X*Y=+1000001上一頁(yè)4.3定點(diǎn)除法及其實(shí)現(xiàn)4.3.1定點(diǎn)原碼除法4.3.2定點(diǎn)補(bǔ)碼除法

下一頁(yè)上一頁(yè)4.3.1定點(diǎn)原碼除法

⒈恢復(fù)余數(shù)法恢復(fù)余數(shù)法的運(yùn)算規(guī)則如下:⑴從被除數(shù)減去2n-1倍除數(shù),如果第一次余數(shù)為正,則除法溢出,停止運(yùn)算;如果第一次余數(shù)為負(fù),表示除法不溢出。⑵當(dāng)余數(shù)為負(fù)時(shí),將2n-1倍除數(shù)加到余數(shù)上,以恢復(fù)原來(lái)余數(shù),然后減去2n-2倍的除數(shù)。如果余數(shù)為正,表示夠減,商為“1”;如果余數(shù)為負(fù),表示不夠減,商為“0”。并需要恢復(fù)余數(shù)。⑶重復(fù)第⑵步,一直做到余數(shù)減去20為止,計(jì)算結(jié)束。下一頁(yè)上一頁(yè)【例4.24】設(shè)X=1011,Y=1101,用恢復(fù)余數(shù)法求Z=X÷Y解:[-Y]補(bǔ)=110011,除法過(guò)程如右。所以,結(jié)果是:商D=0.1101,余數(shù)R=0.0111下一頁(yè)上一頁(yè)⒉加減交替法運(yùn)算規(guī)則如下:⑴商的符號(hào)位單獨(dú)處理,由ZS=XS⊕YS求得。⑵被除數(shù)與除數(shù)同符號(hào),被除數(shù)減去除數(shù);被除數(shù)與除數(shù)異號(hào),被除數(shù)加上除數(shù)。⑶余數(shù)與除數(shù)同符號(hào),上商“1”,余數(shù)左移一位,下次減除數(shù),得到新的余數(shù);余數(shù)與除數(shù)異號(hào),上商“0”,余數(shù)左移一位,下次加除數(shù),得到新的余數(shù)。 ⑷

重復(fù)第⑶步,共做n次(n為除數(shù)的位數(shù)),除法結(jié)束。

上一頁(yè)下一頁(yè)加減交替法求兩定點(diǎn)原碼數(shù)的除法:【例4.25】設(shè)X=1011,Y=1101,用加減交替法求Z=X÷Y解:加減交替法中經(jīng)常要加除數(shù),減除數(shù),減除數(shù)Y,就是加[-Y]補(bǔ),[-Y]補(bǔ)=110011,運(yùn)算過(guò)程如下:得到同樣結(jié)果:D=0.1101,余數(shù)R=0.0111

說(shuō)明:如果最末一位商為0,則要在負(fù)余數(shù)上加上除數(shù)才是真正的余數(shù)。本題中,商到第3位時(shí),商為0,此時(shí)真正的余數(shù)應(yīng)為111101+1101,即1.010。

下一頁(yè)上一頁(yè)【例4.26】設(shè)X=00101011,Y=0110,用加減交替法求Z=X÷Y解:[-Y]補(bǔ)=11010,運(yùn)算過(guò)程如下:結(jié)果是:商D=0.0111,

余數(shù)R=0.0001上一頁(yè)下一頁(yè)實(shí)現(xiàn)原碼加減交替除法的邏輯結(jié)構(gòu)框圖表示于下圖中。

上一頁(yè)下一頁(yè)4.3.2定點(diǎn)補(bǔ)碼除法

用[X]補(bǔ)÷[Y]補(bǔ)直接求得[X/Y]補(bǔ)。補(bǔ)碼除法的運(yùn)算規(guī)則如下:⑴如果被除數(shù)與除數(shù)同號(hào),求商時(shí),用被除數(shù)減去除數(shù);若兩數(shù)異號(hào),則用被除數(shù)加上除數(shù)的辦法處理。⑵若余數(shù)與除數(shù)同號(hào),上商1,左移一位后下次作余數(shù)減除數(shù)操作;若余數(shù)與除數(shù)異號(hào),上商0,左移一位后下次作余數(shù)加除數(shù)操作。⑶商的符號(hào)是在第一次試算時(shí)求出的,若定點(diǎn)除不溢出,得到的就是正確的符號(hào)位的值。⑷商的修正問(wèn)題。在對(duì)精度不高時(shí),將商的最低一位恒置1。此時(shí)最大誤差為|2-n|。若對(duì)商的精度要求較高時(shí),可對(duì)n位數(shù)求商n+1次,按得到的不同結(jié)果對(duì)商進(jìn)行修正。當(dāng)商為負(fù)時(shí),要在商的最低一位加1,從反碼的結(jié)果得到商的正確的補(bǔ)碼值。上一頁(yè)下一頁(yè)補(bǔ)碼除法運(yùn)算實(shí)例:【例4.27】設(shè)X=-1001,Y=+1101,用補(bǔ)碼除法求Z=X÷Y。解:[X]補(bǔ)=110111,[Y]補(bǔ)=001101,[-Y]補(bǔ)=110011,運(yùn)算過(guò)程如下:運(yùn)算結(jié)果,商的補(bǔ)碼[q]補(bǔ)=110101,余數(shù)的補(bǔ)碼[r]補(bǔ)=110010;商q=-1011,余數(shù)為R=-1110。下一頁(yè)上一頁(yè)【例4.28】設(shè)X=+1011,Y=+1101,用補(bǔ)碼加減交替除法求Z=X÷Y。解:[X]補(bǔ)=001011,[Y]補(bǔ)=001101,[-Y]補(bǔ)=110011,運(yùn)算過(guò)程如下:

運(yùn)算結(jié)果,商的補(bǔ)碼[q]補(bǔ)=001101,余數(shù)的補(bǔ)碼

[r]補(bǔ)=000111;商

q=+1101,余數(shù)為r=+0111。上一頁(yè)下一頁(yè)4.4浮點(diǎn)數(shù)的算術(shù)運(yùn)算

4.4.1浮點(diǎn)數(shù)的補(bǔ)碼加法運(yùn)算4.4.2浮點(diǎn)數(shù)的乘法運(yùn)算4.4.3浮點(diǎn)數(shù)的除法運(yùn)算下一頁(yè)上一頁(yè)4.4.1浮點(diǎn)數(shù)的補(bǔ)碼加法運(yùn)算

完成浮點(diǎn)數(shù)加減運(yùn)算的步驟:⑴對(duì)階。方法是,小階向大階看齊,階碼較小的數(shù)的尾數(shù)每向右移1位,該數(shù)階碼便加1,直到兩數(shù)的階碼相同為止。對(duì)階時(shí)要進(jìn)行舍入處理。⑵尾數(shù)求和。

尾數(shù)連同符號(hào)相加。⑶規(guī)格化。若進(jìn)行右規(guī),還需要進(jìn)行舍入處理。

下一頁(yè)上一頁(yè)【例4.29】有兩個(gè)浮點(diǎn)數(shù)

A=210(-0.110100),B=2100(+0.101011),求A+B=?解:①對(duì)階。

先把A、B兩數(shù)用補(bǔ)碼表示: [A]補(bǔ)=00.010;11.001100[B]補(bǔ)=00.100;00.101011可以看出,[A]補(bǔ)的階碼小,應(yīng)向[B]補(bǔ)階碼看齊,[A]補(bǔ)階碼增2,尾數(shù)向右移2位:[A]補(bǔ)=00.100;11.110011[B]補(bǔ)=00.100;00.101011②

尾數(shù)求和。 11110011 +00101011 100.011110下一頁(yè)上一頁(yè)③

規(guī)格化上述結(jié)果為:

A+B=2100×(+0.011110)這是一個(gè)非規(guī)格化的數(shù),對(duì)上述結(jié)果規(guī)格化,即進(jìn)行左規(guī):尾數(shù)向左移1位,階碼減1。得到最后結(jié)果:

A+B=2011×(+0.111100)④

舍入處理 舍入處理不是對(duì)每一個(gè)題目都是必須的,主要看在對(duì)階和右規(guī)格化尾數(shù)向右移位時(shí),尾數(shù)的低位部分有否被丟掉。常用的舍入方法有兩種:一種是“0舍1入”法,即如果右移時(shí)被丟掉的數(shù)位的最高位為0,則舍去;反之則將尾數(shù)的末位加“1”。另一種是“恒置1”法,即只要有數(shù)位被移掉,就在尾數(shù)的末位恒置“1”。

下一頁(yè)上一頁(yè)4.4.2浮點(diǎn)數(shù)的乘法運(yùn)算

浮點(diǎn)數(shù)乘法的運(yùn)算規(guī)則是:乘積的尾數(shù)是相乘兩數(shù)的尾數(shù)之積,乘積的階碼是相乘兩數(shù)的階碼之和。結(jié)果也要進(jìn)行規(guī)格化和舍入處理。如有兩個(gè)浮點(diǎn)數(shù)

X和

Y:X=2ex·Sx

Y=2ey·S

Z=X×Y=2(ex+ey)·(Sx×Sy)

在具體實(shí)現(xiàn)中,兩數(shù)階碼的求和運(yùn)算可在階碼加法器中進(jìn)行,兩個(gè)尾數(shù)的乘法運(yùn)算,就是定點(diǎn)數(shù)的乘法運(yùn)算。

下一頁(yè)上一頁(yè)4.4.3浮點(diǎn)數(shù)的除法運(yùn)算

浮點(diǎn)數(shù)除法的運(yùn)算規(guī)則是:商的尾數(shù)是相除兩數(shù)的尾數(shù)之商,商的階碼是相除兩數(shù)的階碼之差。結(jié)果也要進(jìn)行規(guī)格化和舍入處理。如有兩個(gè)浮點(diǎn)數(shù)

X和

Y:X=2ex·Sx

Y=2ey·Sy則

Z=X÷Y=2(ex–ey)·(Sx÷Sy)綜上所述,浮點(diǎn)數(shù)的算術(shù)運(yùn)算比定點(diǎn)數(shù)的算術(shù)運(yùn)算要復(fù)雜許多,從運(yùn)算器的結(jié)構(gòu)來(lái)說(shuō),不但要有尾數(shù)運(yùn)算器,而且還要有階碼運(yùn)算器。階碼運(yùn)算器用來(lái)求階差,修改階碼等等,一般只進(jìn)行加減運(yùn)算。而尾數(shù)運(yùn)算器不但要有加法器用以求和,還應(yīng)有左移和右移的功能,以實(shí)現(xiàn)對(duì)階操作和規(guī)格化操作。關(guān)于浮點(diǎn)運(yùn)算器的一般結(jié)構(gòu),將在本章的最后小節(jié)進(jìn)行介紹。

下一頁(yè)上一頁(yè)4.5運(yùn)算器的組成和結(jié)構(gòu)4.5.1算術(shù)邏輯單元ALU4.5.2

通用寄存器組4.5.3狀態(tài)寄存器4.5.4數(shù)據(jù)通路4.5.5運(yùn)算器的基本結(jié)構(gòu)4.5.6運(yùn)算器組成實(shí)例下一頁(yè)上一頁(yè)4.5.1算術(shù)邏輯單元ALUALU的主要功能是對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算、邏輯運(yùn)算和各種移位操作。算術(shù)運(yùn)算包括定點(diǎn)加、減、乘和除的運(yùn)算;邏輯運(yùn)算主要有邏輯與、邏輯或、邏輯異或和邏輯非操作;移位操作主要完成邏輯左移、邏輯右移、算術(shù)左移、算術(shù)右移及其它一些移位操作。 74181是一種典型的4位ALU器件。下頁(yè)圖是74181的電路圖,及用正邏輯和負(fù)邏輯表示的4位ALU74181的方框圖。和74181的運(yùn)算功能表。

上一頁(yè)下一頁(yè)74181ALU的方框圖下一頁(yè)上一頁(yè)74181ALU的方框圖下一頁(yè)上一頁(yè)74181的運(yùn)算功能表

下一頁(yè)上一頁(yè)4.5.2通用寄存器組

通用寄存器用來(lái)保存參加運(yùn)算的操作數(shù)和運(yùn)算的結(jié)果。寄存器是計(jì)算機(jī)中存取速度最快的存儲(chǔ)器件,同時(shí)還可以兼作某些指令的專(zhuān)用寄存器。例如,IBMPC系列微型計(jì)算機(jī)中,其CPU有8個(gè)16位的通用寄存器,其結(jié)構(gòu)如下圖所示。

下一頁(yè)上一頁(yè)4.5.3狀態(tài)寄存器

記錄運(yùn)算結(jié)果狀態(tài),一般設(shè)置下面幾種標(biāo)志狀態(tài)位:Z(零標(biāo)志位):當(dāng)運(yùn)算結(jié)果為零時(shí),Z位置1;結(jié)果非零時(shí),Z位清0。N(符號(hào)標(biāo)志位):當(dāng)運(yùn)算結(jié)果為負(fù)時(shí),N位置1;結(jié)果為正時(shí),N位清0。V(溢出標(biāo)志位):當(dāng)運(yùn)算結(jié)果有溢出發(fā)生時(shí),V位置1;無(wú)溢出時(shí),V位清0。C(進(jìn)位或借位標(biāo)志位):當(dāng)作加法時(shí),如果運(yùn)算中最高有效位向前有進(jìn)位,C位置1;否則C位清0。當(dāng)作減法運(yùn)算時(shí),如果不夠減,最高位向前有借位時(shí),C位置1;否則C位清0。下一頁(yè)上一頁(yè)4.5.4數(shù)據(jù)通路

通常把從一個(gè)功能部件向另一個(gè)功能部件傳送數(shù)據(jù)所經(jīng)過(guò)的功能部件、總線等稱(chēng)為數(shù)據(jù)通路。數(shù)據(jù)通路是個(gè)很重要的概念,正確理解數(shù)據(jù)通路,能幫助我們理解指令執(zhí)行過(guò)程,理解計(jì)算機(jī)總體運(yùn)行過(guò)程

。

在上面圖所示的右半部分運(yùn)算器中,MUX1、MUX2分別是兩個(gè)多路數(shù)據(jù)選擇器,用它們來(lái)選擇當(dāng)前哪兩組數(shù)據(jù)送到ALU中。MUX1數(shù)據(jù)有三個(gè)來(lái)源:通用寄存器的輸出、指令中的相對(duì)位移量和常數(shù)“0”;MUX2數(shù)據(jù)也有三個(gè)來(lái)源:通用寄存器的輸出、程序計(jì)數(shù)器的輸出和數(shù)據(jù)寄存器的輸出。ALU的輸出信息通過(guò)內(nèi)部數(shù)據(jù)總線送到通用寄存器中。 下一頁(yè)上一頁(yè)假設(shè)這個(gè)通用寄存器組有兩個(gè)輸出端口RA和RB,有一個(gè)輸入端口RI。寄存器中的數(shù)據(jù)以補(bǔ)碼表示。并假設(shè)寄存器組中的寄存器1用R1表示,寄存器2用R2表示,寄存器3用R3表示。運(yùn)算之前,R1=0110,R2=1100,Z、N、C、V標(biāo)志位全為0。

⑴第一種操作:R1加R2,結(jié)果送R3

其操作過(guò)程如下:R1的內(nèi)容通過(guò)端口RA輸出,MUX1選擇RA的內(nèi)容送到ALU的A輸入端;R2的內(nèi)容通過(guò)端口RB輸出,MUX2選擇RB的內(nèi)容送入ALU的B輸入端。令A(yù)LU作A+B算術(shù)加法操作,從Y輸出端輸出加的結(jié)果,并存入R3寄存器中。

下一頁(yè)上一頁(yè)

⑵第二種操作:0減R1,結(jié)果送R3,即求與R1相補(bǔ)的數(shù)。其操作過(guò)程如下:R1的內(nèi)容從RB輸出,經(jīng)過(guò)MUX2選擇,送到ALU的B輸入端,在MUX1處選擇常數(shù)“0”送入ALU的A輸入端,在ALU中選擇A-B的算術(shù)運(yùn)算功能。由于運(yùn)算器要進(jìn)行的是補(bǔ)碼運(yùn)算,A-B功能是通過(guò)[A]補(bǔ)+[-B]補(bǔ)來(lái)完成的。⑶第三種操作:利用運(yùn)算器計(jì)算操作數(shù)地址或轉(zhuǎn)移地址假設(shè)當(dāng)前執(zhí)行轉(zhuǎn)移指令,轉(zhuǎn)移地址由程序計(jì)數(shù)器的值加上相對(duì)位移量得出。運(yùn)算器計(jì)算轉(zhuǎn)移地址的過(guò)程是:MUX2選擇程序計(jì)數(shù)器PC的內(nèi)容送往ALU的B輸入端,MUX1選擇指令字中的相對(duì)位移量到ALU的A輸入端,令A(yù)LU做A+B算術(shù)加運(yùn)算,從Y輸出的內(nèi)容送往程序計(jì)數(shù)器PC中,這時(shí)PC中就為轉(zhuǎn)移地址了。下次執(zhí)行指令就從轉(zhuǎn)移地址開(kāi)始執(zhí)行。

下一頁(yè)上一頁(yè)⑷第四種操作:關(guān)于移位操作為簡(jiǎn)單起見(jiàn),我們以4位二進(jìn)制數(shù)(最左邊一位為符號(hào)位)為例,來(lái)說(shuō)明移位操作的規(guī)則和操作結(jié)果。下一頁(yè)上一頁(yè)下一頁(yè)上一頁(yè)下一頁(yè)上一頁(yè)下一頁(yè)上一頁(yè)4.5.5運(yùn)算器的基本結(jié)構(gòu)

⒈單總線結(jié)構(gòu)的運(yùn)算器運(yùn)算器所有部件都接到同一條總線上的運(yùn)算器結(jié)構(gòu)是單總線結(jié)構(gòu)的運(yùn)算器。下一頁(yè)例如要執(zhí)行一次加法操作,需要先把第一個(gè)操作數(shù)放入A緩沖器,然后再把第二個(gè)操作數(shù)放入B緩沖器,只有當(dāng)這兩個(gè)操作數(shù)同時(shí)出現(xiàn)在ALU的兩個(gè)輸入端,ALU才能執(zhí)行加法操作。這種結(jié)構(gòu)的運(yùn)算器主要缺點(diǎn)是操作速度較慢。上一頁(yè)⒉雙總線結(jié)構(gòu)的運(yùn)算器

雙總線結(jié)構(gòu)的運(yùn)算器如下圖所示。在這種結(jié)構(gòu)中,兩個(gè)操作數(shù)同時(shí)加到ALU進(jìn)行運(yùn)算,只需要一次操作控制,而且馬上可以得到運(yùn)算結(jié)果。ALU的輸出不能直接加到總線上,必須在ALU的輸出端設(shè)置一個(gè)緩沖寄存器。整個(gè)操作分兩步完成:第一步,在ALU的兩個(gè)輸入端輸入操作數(shù),形成結(jié)果并送入緩沖寄存器;第二步,把結(jié)果送入目的寄存器。下一頁(yè)上一頁(yè)⒊三總線結(jié)構(gòu)的運(yùn)算器

三總線結(jié)構(gòu)的運(yùn)算器如下圖所示。在三總線結(jié)構(gòu)運(yùn)算器中,ALU的兩個(gè)輸入端分別由兩條總線供給,而ALU的輸出則與第三條總線相連。三總線結(jié)構(gòu)的運(yùn)算器的特點(diǎn)是操作時(shí)間快。下一頁(yè)上一頁(yè)4.5.6運(yùn)算器組成實(shí)例⒈最簡(jiǎn)單的運(yùn)算器

下圖示出的一個(gè)運(yùn)算器只有三個(gè)邏輯部件:算術(shù)邏輯運(yùn)算單元ALU、累加寄存器AC和數(shù)據(jù)緩沖寄存器DR。是最簡(jiǎn)單的運(yùn)算器。上一頁(yè)下一頁(yè)⒉一臺(tái)小型機(jī)的運(yùn)算器

下頁(yè)圖示出了一臺(tái)小型機(jī)的運(yùn)算器邏輯方框圖。該運(yùn)算器的基本功能包括:兩數(shù)的加減運(yùn)算、一個(gè)數(shù)的加1運(yùn)算、兩數(shù)的邏輯加運(yùn)算、一個(gè)數(shù)的變補(bǔ)、變反傳送,以及數(shù)碼的左移、右移、直送和字節(jié)交換等操作。該運(yùn)算器由以下幾部分組成:⑴算術(shù)邏輯運(yùn)算單元ALU:由4片74181ALU芯片和1片74182CLA(Carrylookaheadadder,先行進(jìn)位加法器)芯片組成16位字長(zhǎng)的運(yùn)算部件,因而具有兩級(jí)先行進(jìn)位。

⑵鎖存器:在ALU的兩個(gè)輸入端上有兩個(gè)鎖存器A和B,用來(lái)暫存來(lái)自外部設(shè)備或存儲(chǔ)器(經(jīng)數(shù)據(jù)總線)的數(shù)據(jù),或者暫存來(lái)自通用寄存器(R0~R7)和源寄存器、暫存寄存器中的數(shù)據(jù)。一旦數(shù)據(jù)放入鎖存器,不管其外部的數(shù)據(jù)如何變化,ALU將依據(jù)鎖存器A和B中的數(shù)據(jù)進(jìn)行運(yùn)算。上一頁(yè)下一頁(yè)上一頁(yè)下一頁(yè)

⑶移位器將ALU的輸出進(jìn)行左移、右移、直送、半字交換。因此這里的移位器也是一個(gè)4選1的多路開(kāi)關(guān),每次只能從4

溫馨提示

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

評(píng)論

0/150

提交評(píng)論