計算機是怎麼RUN起來的

1.實際上計算機只會實現輸入、運算、輸出 

這三大模塊缺一不可,缺少輸入意味着沒有用戶能使用,缺少運算相當於一條電線毫無意義,缺少輸出相當於一直堆積信息的垃圾箱

因此計算機的硬件是由大量的IC(Integrated Circuit 集成電路)組成,每塊IC上都帶有很多引腳,相當於電線,這些引腳都是服務於輸入輸出,運算可能有點難理解,但簡單來時在IC裏面實際上變化的是電流變化(具體的變化慢慢了解),人類的對電流的定義,就是數字,而且只有兩個數字0和1,這樣看來計算機其實有點笨,但是怎麼能變化出萬種功能呢?

2.程序是指令和數據的集合,無論哪個程序,內容都是數值的羅列,每個數值要麼是指令要麼是數據。

一組指令操作一段數據,形成最基本的程序

這一組指令統一推薦描述的文字是“函數”

一段數據我們可以分爲兩類,一類是輸入的數據,一類是輸出的數據

在編程的時候數據可以賦予名字爲“變量”

y=f(x)

3.計算機的處理方式有時候與人類的思維習慣不同

當人描述顏色的時候會形成畫面 紅色藍色綠色

當計算機描述顏色的時候會形成顏色的數字信息 例如“255,0,0”表示紅色 

4.計算機在一直進化

計算機的思維方式一直在改變且趨向於人類的思考方式,大家應該由衷地歡迎技術的進化,沒有人會稀罕一成不變的好代碼

編程方法也一直在進化一種是組件編程(將程序的零部件組裝到一起完成程序),一種是面向對象編程(先對你腦海中的東西建模,例如建一個車的模型,然後再對模型進行私人訂製,稱爲你創造的獨一無二的瑪莎拉蒂)

5.計算機內部主要是IC的元件組成

只需記住三種:

CPU(中央進程處理器):可以對數據執行運算並控制內存和I/O

內存(CPU內的數據寄存器):看看你電腦是多少位的,32位64位86位,是由寄存器的容量和傳輸進CPU的數據總線的條數共同決定,前者相當於水龍頭,後者相當於水管,水管是32位的,水龍頭也必須是32位的

I/O(Input/Output):接受用戶設備的輸入輸出

 除了以上,還需要若干輔助元件

晶振(是時鐘發生器的主要部件):晶體振盪器,由於晶體有壓電效應,當在晶片的兩面上加交變電壓時,晶片會反覆的機械變形而產生振動,而這種機械振動又會反過來產生交變電壓,晶振產生振盪必須附加外部時鐘電路,一般是一個放大反饋電路,只有一片晶振是不能實現震盪的.晶振爲了輔助CPU的運轉速度,會根據自身通電後振動的頻率產生時鐘信號頻率用來衡量CPU的運轉速度

IC的引腳:所謂的引腳就是IC邊緣裸露出的像腿一樣的部分,按照逆時針方向依次帶有一個從1開始遞增的序號

6. 比特是作爲信息的收發單位

通常將1個二進制數稱爲1比特。將8個二進制數稱爲1字節

比特是信息的最小單位,字節是信息的基本單位

例如32位的計算機就是一32比特爲一個單位收發信息的

7. 連接電源、地址總線和數據總線:

首先連接電源

爲了指定輸入輸出數據時的源頭或目的地(存取數據的地址),CPU上備有“地址總線引腳”,例如引腳有16個,用代號A0~A15表示,其中A表示Address(地址),後面的0~15表示一個16位二進制數中各數字的位置,0對應最後一位,15對應第一位,用而二進制表示就是0000000000000000~1111111111111111,所能提供的65536個數據存取單元(內存存儲單元或者I/O地址),進行信息的輸入輸出。

一旦指定了存取數據的地址,就可以使用“數據總線引腳”進行數據的輸入輸出了,數據總線引腳和地址總線引腳類似,用代號D0~D15表示。

8.連接I/O:

下面開始連接I/O,大家知道寄存器這個詞嗎?寄存器是位於CPU和I/O中的“數據存儲器”,速度很快,和CPU直接交互,假設一個並行PIO設備上有4個寄存器,2個是用於PIO本身的功能,2個是用於存儲與外部設備進行輸入輸出的數據

 

9.連接時鐘信號:

將CPU的CLK(Clock時鐘)引腳、PIO的CLK引腳分別與時鐘發生器的引腳相連,在時鐘發生器的作用下,它們隨着滴答滴答的時鐘同步做動作,然後連上其它的引腳(這裏簡單帶過)

10.CPU工作原理:

CPU 在時鐘信號的控制下解釋、執行內存中存儲的程序,按照程序中的指令從內存或 I/O 中把數據輸入到 CPU 中,在 CPU 內部進行運算,再把運算結果輸出到內存或 I/O 中

 

11.機器語言和彙編語言

機器語言就是0和1的各種組合,不同種類的CPU對各種組合的解析也不同,例如man有的人理解爲“男人”,有的人理解爲“慢”

彙編語言就是把操作碼(指令)和操作數(指令的對象)並排寫在一行上,僅此而已 

標籤的作用是爲該行代碼對應的內存地址起一個名字。

編程時如果總要考慮“這一行的內存地址是什麼來着?”就會很不方便,所以在彙編語言中用標籤來代替地址。用匯編語言編程時可以在任何需要標籤的地方“貼上”名稱任意的標籤,如圖,使用了名稱“LOOP:”的標籤

操作碼就是助記符,用來告訴計算機“做什麼”的指令,彙編語言中提供多少種助記符,CPU就有多少種功能 

操作數就是指令執行的對象

 

彙編語言和英語的祈使句很像,可以看成是英語的祈使句中開頭放置了一個表示“做什麼”的動詞, 動詞後面放一個賓語表示“作用到什麼上”動詞就相當於操作碼,賓語就相當於操作數,程序的作用是向CPU發出指令。

 

12.寄存器的結構:

I/O寄存器只能作爲臨時存放周邊設備進行輸入輸出的數據

CPU的的寄存器不僅能存儲數據,還具備對數據進行運算的能力

舉個栗子:以下是Z80的CPU所帶有的寄存器ABCD等字母是寄存器的名字

舉例來說:

A 寄存器也叫作“累加器”,是運算的核心。所以連接 到它上面的導線也一定會比其他寄存器的多。

F 寄存器也叫作“標誌寄存器”,用於存儲運算結果的狀態,比如是否發生了進位,數字大小的比較結果等。

PC 寄存器也叫作“程序指針”,存儲着指向 CPU 接下來要執行的指令的地址

PC 寄存器的值會隨着滴答滴答的時鐘信號自動更新,可以說程序就是依靠不斷變化的 PC 寄存器的值運行起來的

SP 寄存器也叫作“棧頂指針”,用於在內存中創建出一塊稱爲“棧”的臨時數據存儲區域

 

CPU 中有各種各樣的各司其職的寄存器。其中有一個被稱爲 PC (Program Counter,程序計數器)的寄存器,負責存儲內存地址,該地 址指向下一條即將執行的指令。每解釋執行完一條指令,PC 寄存器的 值就會自動被更新爲下一條指令的地址。

 

13.程序像河水一樣流動着:

順序執行是按照指令記錄在內存中的先後順序依 次執行的一種流程。而循環則是在程序的特定範圍內反覆執行若干次 的一種流程。條件分支是根據若干個條件的成立與否,在程序的流程 中產生若干個分支的一種流程。無論規模多麼大多麼複雜的程序,都 是通過把以上三種流程組合起來實現的

 

程序的三種流程正像是河流本身。從高山的泉眼中湧出的清泉形 成了河流的源頭(程序執行的起點)。水流從山中緩緩流下,有時向着 63 4.1 程序的流程分爲三種 一個方向流淌(順序執行),有時中途分出了支流(條件分支),還有時 由於地勢捲起了漩渦(循環)

這就意味着我們專業的程序員在編寫程序之前,會通過畫流程圖來思考程序的流程 

下面是剪刀石頭布的程序流程圖

思考算法時的要點是要分兩步走,先從整體上考慮程序的粗略流 程,再考慮程序各個部分細節的流程

用戶是怎樣使用程序的呢?首先,用戶啓動了程序(程序 執行初始化處理)。接下來用戶根據自己的需求操作程序(程序進入循 環處理階段)。最後用戶關閉了程序(程序執行收尾處理)。這樣的使用 方法就可以直接作爲程序的整體流程。

特殊的程序流程——中斷處理:

中斷處理是指計算機使程序的流程突然跳轉到程序中的特定地方, 這 樣 的 地 方 被 稱 爲 中 斷 處 理 例 程(Routine)或 是 中 斷 處 理 程 序 (Handler),而這種跳轉是通過 CPU 所具備的硬件功能實現的

在CPU中有特定的中斷引腳,可以接受從I/O設備發出的中斷請求信號,中斷處理以從硬件發出的請求爲條件,使程序的流程產生分支, 因此可以說它是一種特殊的條件分支

編寫的程序中並不需要編寫有關中斷處理的代碼。

因爲處理中斷請求的程序,或是內置於被燒錄在計算機 ROM 中的 BIOS 系統(Basic Input Output System, 基本輸入輸出系統)中,或是內置於 Windows 等操作系統中。只需要先記住以下兩點即可:計算機具有硬件上處理中斷的能力;中斷一詞的英文是 Interrupt。

 

特殊的程序流程——事件驅動

程序員們經常用事件驅動的方式編寫那些工作在 GUI(Graphical User Inteface,圖形用戶界面)環境中的應用程序

通常把用戶在應用程序中點擊鼠標或者敲擊鍵盤這樣的操作稱作 “事件”(Event)。負責檢測事件的是 Windows。Windows 通過調用應 用程序的 WndProc() 函數通知應用程序事件的發生。而應用程序則根 據事件的類型做出相應的處理。這種機制就是事件驅動。可以說事件 驅動也是一種特殊的條件分支,它以從 Windows 送來的通知爲條件, 根據通知的內容決定程序下一步的流程

事件驅動的“狀態轉化圖”

的計算器應用程序就可以看作包含三個 狀態:“顯示計算結果”“顯示第一個輸入的數”以及“顯示第二個輸入的 數”。隨着用戶按下不同種類的按鍵,狀態也會發生轉變。在狀態轉化圖 中,在矩形中寫上狀態的名稱,用箭頭表示狀態轉化的方向,並且在箭 頭上標註引起狀態轉化的原因(事件)

程序的流程還是隻有順序執行、條件分支和循環這三種,這 一點是沒有改變的。

其中的順序執行是最基本的程序流程,這是因爲 CPU 中的 PC 寄存器的值會自動更新。條件分支和循環,在高級語言 中用程序塊表示,在機器語言和彙編語言中用跳轉指令表示,在硬件 上是通過把 PC 寄存器的值設爲要跳轉到的目的地的內存地址來實現

 

未完,看書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章