回覆列表
-
1 # 王緝志
-
2 # 藍色晶片
以下是我的個人理解,試想有這樣一個有a.b.c.d四個埠的轉換晶片,a.b為輸入埠,c.d為輸出埠,這個晶片能實現下面3個功能,1.如果a.b埠都為0伏,則c.d埠就都輸出0伏。2.如果a.b兩埠一個輸入0伏另一個輸入5伏,則c輸出5伏,d輸出0伏。3.如果a.b埠都輸入5伏,則c.d埠都輸出5伏。這個晶片我們能夠很容易的用與或非邏輯閘實現,甚至用三極體搭建出來。這個晶片其實就是一個最簡單的兩位的加法器,a.b分別是加數和被加數,c是結果的低位d是結果的高位。當然我們也可以設計一個有兩組各8位輸入埠,一組8位的輸出埠,一個1位的輸出溢位埠的晶片,只不過會複雜很多。加法器就是按加法規律實現的輸入與輸出的對映。乘法器就是移位,和加法的組合。
要把複雜的事情用通俗的語言來解釋,這是很難的,我試試看。
這個問題,使我回憶起我第一次接觸計算機的那個年代。我是1973年底第一次接觸計算機的,那時我在北京鋼鐵學院的計算機房,使用的是天津傳動所生產的171計算機,記憶體只有4K。這是一臺裸機,也就是沒有任何軟體的機器,我當時的任務是為該機器設計一套匯編語言軟體。而我程式設計序的工作,完全是要用機器語言來寫。正因為如此,我能從軟體設計的角度知道1+1這樣的事在計算機中怎麼來實現。
計算機的硬體是由一系列電子線路完成的,由於電子線路里表示兩種狀態是最簡單易行的,例如電壓的高和低、開和關、有和無,……等等,所以計算機採取了二進位制的電路設計。計算機裡最主要的器件是它的大腦——CPU(中央處理器),在CPU這塊晶片裡,有很多控制電路,以及有很多被稱為暫存器的單元,例如累加暫存器、標誌暫存器、程式計數器、變址暫存器、基址暫存器、通用暫存器、指令暫存器等等。CPU按照存放在記憶體裡的指令來逐條地執行。上述暫存器中,累加暫存器的功能就是做加法的。而計算機裡把一切要做的事情都簡化為加法,例如減法就是加一個負數,乘法就是加很多次,等等。下面看看1+1怎麼做呢?
第一條指令:MOV AX,1 其意思是,把1這個數放入AX暫存器中,這裡AX暫存器就是可以進行加法的累加暫存器。
第二條指令:ADD AX,1 其意思是,把AX這個暫存器中的數加上1 。
計算機執行完上述兩條指令後,AX暫存器裡面的數就變成2了。
上面說的指令的那種寫法,就是組合語言的寫法,而我當時做的工作,就是把按照這樣寫法編制的程式,翻譯成用二進位制表述的機器程式碼。這種二進位制程式碼,人是不容易看懂的,而機器則喜歡這樣的表述。至於機器是如何完成上述兩條指令的執行的,那就更不容易用通俗的語言解釋了,因為這涉及到電子線路如何完成加法的問題了。例如剛才我提到的171計算機,它是如何透過電子元器件來實現加法的,就要請教設計該計算機的工程師了。