7 實現一台計算機

2021-08-26 00:26:14 字數 1519 閱讀 4739

前面實現了多個數加法/減法器,計數器,儲存器。這裡我們就要利用這些成果,實現乙個新的更好用的加法器。人們都是懶惰的,因此如果要讓你把100個數放到前面實現的加法器中相加,這是非常不好的,因為一旦中間一步出錯,則要清零後重新從頭輸入。因此我們可以利用ram的先儲存後訪問特性,把需要相加的值預先寫入到儲存器中,再乙個乙個取出並作為加法器的輸入。

這裡我們假設使用的是64k*8ram,16位計數器,8位加法器和鎖存器。將100個數寫入儲存器就不多說了,通過計數器能夠從0000h開始乙個乙個將資料取出,並作為加法器的輸入。但是有如下缺點:

(1) 怎樣實現更多位數的加法呢?擴充套件裝置的位寬是不合理的。

(2) 怎麼停止呢?會無限一直計算下去,並可能迴圈繼續重複累加。

(3) 如何實現100個數中特定數目的加法?

第三個問題比較好解決,因為只需要將累加器的輸出寫入ram並不是在燈泡中顯示出來。

第二個問題也容易解決,就是引入乙個**ram,存放的是數字**,我們可以預先設定一些數字**,比如load(10h),store(11h)、add(20h)、halt(ffh),這樣當有halt時就停止。

8位鎖存器的輸入可以有兩種選擇,第一種是從ram中讀取,則為load;第二種是從加法器中讀取,為add。

我們可以把同時實現加法和減法的器件嵌入在裡面,這樣就可以實現加法和減法。

第乙個問題我們是否能解決?當然可以。我們可以利用從低位位元組開始運算,再運算高位位元組,因為高位位元組需要包含低位位元組的進製問題,這就引入了乙個操作叫做進製加法。

這樣我們就有7個指令:

1.load

2.store

3.add

4.add with carry

5.subtract

6.subtract with borrow

7.halt

但是依次計算這些數並不是很好,缺點如下:

(1) 比如乙個數為1234h,則12和34都是分離的,位址是不連續的。

(2) 不允許使用前面的結果。因為利用計數器,所以只能加,不能減。

對於這兩個問題,我們採用固定長度的指令,即一條指令有3個位元組(除halt),第乙個位元組為數字**,第二第三個位元組為16位的位址,比如load 1000h。

我們引入了三個鎖存器作為**ram的輸出,分別儲存這三個位元組,將後面兩個位元組作為資料ram的輸入,這樣既可以利用以前的資料,也可以把16位資料連續存放。

我們這裡用了兩個ram,實際上我們根本不需要用兩個ram,值需要分清是取資料還是取指令,這需要2-1選擇器。由於我們只能連續的存放執行的指令,這對於我們帶來了很大的不便,因此引入了jump指令,但是不停跳轉不會停止,所以引入了條件跳轉指令。比如非0跳轉,將乙個數每次與halt(ffh)相加,這樣就相當於減1,減到0就不跳轉。

現在我們完成了乙個計算機,計算器與計算機的區別在於能否控制重複和迴圈。

數字計算機和模擬計算機

計算機由4部分組成:處理器(加減法器)、儲存器(ram)、輸入(開關)和輸出裝置(燈泡)。

由此看出一台計算機就構造完畢了。

前面我們表示的比如ffh屬於機器碼,而halt就屬於助記符,即彙編。

第一台計算機

世界上第一台電子計算機其實是abc atanasoff berry computer,阿塔納索夫 貝瑞計算機 eniac是第二台。之前很多紀錄聲稱第一台電子計算機叫 eniac 電子數字積分計算機的簡稱,英文全稱為 electronic numerical integrator and calcul...

Problem D 給我一台計算機吧!

time limit 1 sec memory limit 128 mb submit 2194 solved 1906 submit status web board cpu主頻和主存容量是衡量一台計算機效能主要指標。請定義 1.cpu類 只有乙個int型別的資料成員以表示其主頻,並請根據輸出和給...

第一台計算機的發明

1946年 2月,世界上第一台電子計算機在美國賓夕法尼亞大學問世,取名為 e n i a c 即電子數字積分計算機的英文縮寫 這台計算機的研製歷時 3年,按照設計者的初衷,從計算工具的意義上講,電子計算機 e n i a c 不過是人類傳統計算工具 算盤 計算尺及機械計算機等 在歷史新時期的替代物。...