組合語言1-基礎知識
一、機器語言
機器語言是機器指令的集合。機器指令展開來講就是一臺機器可以正確執行的命令。電子計算機的機器指令是一列二進位制數字。計算機將之轉變為一列高低電平,以使計算機的電子器件受到驅動,進行運算。
顯然機器碼晦澀難懂,不易查錯。
二、組合語言的產生
組合語言的產生就是為了解決使用機器語言帶來的麻煩。它的主體是彙編指令。彙編指令和機器指令的差別在於指令的表示方法上。彙編指令是機器指令便於記憶的書寫格式。
(暫存器,簡單地講是CPU中可以儲存資料的器件,一個CPU中有多個暫存器。AX是其中一個暫存器的代號,BX是另一個暫存器的代號。)
三、組合語言的組成
組合語言發展到現在,由以下三類指令組成:
- 彙編指令:機器碼的助記符,有對應的機器碼
- 偽指令:沒有對應的機器碼,由編譯器執行,計算機並不執行
- 其他符號:如+、-、*、/等,由編譯器識別,沒有對應的機器碼
組合語言的核心是彙編指令,它決定了組合語言的特性。
四、儲存器
五、指令和資料
六、儲存單元
儲存器被劃分為若干個儲存單元,每個儲存單元從0開始順序編號,例如一個儲存器有128個儲存單元,編號0-127,如圖所示:
那麼一個儲存單元能儲存多少資訊呢?計算機的最小資訊單位是bit,也就是一個二進位制位。8個bit組成一個Byte,也就是通常講的一個位元組。微型機儲存器的儲存單元可以儲存一個Byte,即8個二進位制位。一個儲存器有128個儲存單元,它可以儲存128個Byte。
對於大容量的儲存器一般還用以下單位來計量容量:
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
七、CPU對儲存器的讀寫
儲存器被劃分成多個儲存單元,儲存單元從零開始順序編號。這些編號可以看作儲存單元再儲存器中的地址。
CPU要從記憶體中讀資料,首先要指定儲存單元的地址。另外,在一臺微機中,不只有儲存器這一器件。CPU在讀寫資料時還要指明,它要對哪一個器件進行操作,進行哪種操作,是從中讀出資料,還是向裡面寫入資料。
CPU從3號單元中讀取資料的過程如下:
- CPU通過地址線將地址資訊3發出
- CPU通過控制線發出記憶體讀命令,選中儲存器晶片,並通知它,將要從中讀取資料
- 儲存器將3號單元中的資料8通過資料線送入CPU
寫操作與讀操作的步驟相似。如向3號單元寫入資料26。
- CPU通過地址線將地址資訊3發出
- CPU通過控制線發出記憶體寫命令,選中儲存器晶片,並通知它,要向其中寫入資料
- CPU通過資料線將資料26送入記憶體的3號單元中。
從上面我們知道了CPU是如何進行資料讀寫的,接下來看下如何命令計算機進行資料的讀寫。
八、地址匯流排
CPU是通過地址匯流排來指定儲存器單元的,地址總線上能傳送多少個不同的資訊,CPU就可以對多少個儲存單元進行定址。
假設一個CPU有10根地址匯流排,那麼就可以表示1024個不同的資料,最小數為0,最大數為1023.
下圖展示了一個具有10根地址線的CPU向記憶體發出地址資訊11時10根地址線上傳送的二進位制資訊。
一個CPU有N根地址線,則可以說這個CPU的地址匯流排的寬度為N。這樣的CPU最多可以尋找2的N次方個記憶體單元。
九、資料匯流排
8086有16根資料線,可一次傳送16位資料,所以可一次傳送資料89D8H;而8088只有8根資料線,一次只能傳8位資料,所以向記憶體寫入資料89D8H時需要進行兩次資料傳送。
十一、記憶體地址空間
一個CPU的地址匯流排寬度為10,那麼可以定址1024個記憶體單元,這1024個可尋到的記憶體單元就構成這個CPU的記憶體地址空間。下面進行深入討論,首先要介紹兩部分基礎知識,主機板和介面卡。
11.1 主機板
11.2 介面卡
11.3 各類儲存器晶片
一臺PC機中,裝有多個儲存器晶片,這些儲存器晶片從物理連線上看是獨立的、不同的器件。從讀寫屬性上看分為兩類:隨機儲存器(RAM)和只讀儲存器(ROM)。隨機儲存器可讀可寫,但必須帶電儲存,關機後儲存的內容丟失;只讀儲存器只能讀取不能寫入,關機後其中的內容不丟失。這些儲存器從功能和連線上又可分為以下幾類:
- 隨機儲存器: 用於存放供CPU使用的絕大部分程式和資料,主隨機儲存器一般由兩個位置上的RAM組成,裝在主機板上RAM和插在拓展槽上的RAM
- 裝有BIOS(Basic Input/Output System)的ROM: BIOS是由主機板和各類介面卡(如顯示卡、網絡卡等)廠商提供的軟體系統,可以通過它利用該硬體裝置進行最基本的輸入輸出。在主機板和某些介面卡上插有儲存相應BIOS的ROM。例如,主機板上的ROM中儲存著主機板的BIOS(通常稱為系統BIOS);顯示卡上的ROM儲存著顯示卡的BIOS;如果網絡卡上裝有ROM,那其中就可以儲存網絡卡的BIOS
- 介面卡上的RAM: 某些介面卡需要對大批量輸入、輸出資料進行暫時儲存,在其上裝有RAM。最典型的是顯示卡上的RAM,一般稱為視訊記憶體。顯示卡隨時將視訊記憶體中的資料向顯示器上輸出。換句話說,我們將需要顯示的內容寫入視訊記憶體,就會出現在顯示器上。
下圖展示了PC系統中各類儲存器的邏輯連線情況:
11.4 記憶體地址空間詳解
下圖展示了CPU將系統中各類儲存器看作一個邏輯儲存器的情況:
在上圖中,所有的物理儲存器被看作一個由若干儲存單元構成的邏輯儲存器,每個物理儲存器在這個邏輯儲存器中佔有一個地址段,即一段地址空間。CPU在這段地址空間中讀寫資料,實際上就是在對應的物理儲存器中讀寫資料。
假設,圖1.8中的記憶體地址空間的地址段分配如下:
- 地址0-7FFFH的32KB空間為主隨機儲存器的地址空間
- 地址8000H-9FFFH的8KB空間為視訊記憶體地址空間
- 地址A000H-FFFFH的24KB空間為各個ROM的地址空間
這樣,CPU向記憶體地址為1000H的記憶體單元中寫入資料,這個資料就被寫入主隨機儲存器中;CPU向記憶體地址為8000H的記憶體單元中寫入資料,這個資料就被寫入視訊記憶體中,然後會被顯示卡輸出到顯示器上;CPU向記憶體地址為C000H的記憶體單元中寫入資料的操作是沒有結果的,C000H單元中的內容不會被改變,C000H單元實際上就是ROM儲存器中的一個單元。
圖1.9告訴我們,從地址0-9FFFF的記憶體單元中讀取資料,實際上就是在讀取主隨機儲存器中的資料;向地址A0000-BFFFF的記憶體單元中寫資料,就是向視訊記憶體中寫入資料,這些資料會被顯示卡輸出到顯示器上;我們向地址C0000-FFFFF的記憶體單元中寫入資料的操作是無效的,因為這等於改寫只讀儲存器中的內容。
注意:
對CPU來講,系統中的所有儲存器中的儲存單元都處於一個統一的邏輯儲存器中,它的容量受CPU定址能力的限制。這個邏輯儲存器即使我們所說的記憶體地址空間。