1. 程式人生 > >《組合語言(第3版)(王爽 著)》學習筆記一:基礎知識(1)

《組合語言(第3版)(王爽 著)》學習筆記一:基礎知識(1)

  • 組合語言是直接在硬體之上工作的程式語言,我們首先要了解硬體系統的結構,才能有效地應用匯編語言對其程式設計。
  • 彙編課程的研究重點放在如何利用硬體系統的程式設計結構和指令集有效靈活地控制系統進行工作。

1.1 機器語言

  1. 機器語言是機器指令的集合。機器指令展開來講就是一臺機器可以正確執行的命令。電子計算機的機器指令是一列二進位制數字。計算機將之轉變為一列高低電平,以使計算機的電子器件受到驅動,進行運算。
  2. 上面所說的計算機指的是可以執行機器指令,進行運算的機器。這是早期計算機的概念。現在,在我們常用的 PC 機中,有一個晶片來完成上面所說的計算機的功能。這個晶片就是我們常說的 CPUCentral Processing Unit,中央處理單元
    ),CPU 是一種微處理器。以後我們提到的計算機是指由 CPU 和其他受 CPU 直接或間接控制的晶片、器件、裝置組成的計算機系統,比如我們最常見的 PC 機。
  3. 每一種微處理器,由於硬體設計和內部結構的不同,就需要用不同的電平脈衝來控制,使它工作。所以每一種微處理器都有自己的機器指令集,也就是機器語言。
  4. 早期的程式設計均使用機器語言。程式設計師們將用 0、1 數字編成的程式程式碼打在紙帶或卡片上,1 打孔,0 不打孔,再將程式通過紙帶機或卡片機輸入計算機,進行運算。
  5. 書寫和閱讀機器碼程式不是一件簡單的工作,要記住所有抽象的二進位制碼。這些機器碼不僅晦澀難懂,而且不易查錯。

1.2 組合語言的產生

  1. 早期的程式設計師們很快就發現了使用機器語言帶來的麻煩,它是如此難於辨別和記憶,給整個產業的發展帶來了障礙。於是組合語言產生了。組合語言的主體是彙編指令。彙編指令和機器指令的差別在於指令的表示方法上。彙編指令是機器指令便於記憶的書寫格式。
  2. 暫存器,簡單地講是 CPU 中可以儲存資料的器件,一個 CPU 中有多個暫存器。AX 是其中一個暫存器的代號,而 BX 是另一個暫存器的代號。
  3. 計算機能讀懂的只有機器指令,那麼如何讓計算機執行程式設計師用匯編指令編寫的程式呢?這時,就需要有一個能夠將彙編指令轉換成機器指令的翻譯程式,這樣的程式我們稱其為編譯器。程式設計師用匯編語言寫出源程式,再用匯編編譯器將其編譯為機器碼,由計算機最終執行: 圖 1.1 用匯編語言編寫程式的工作過程

1.3 組合語言的組成

  • 組合語言發展至今,由以下三類指令組成:
  1. 彙編指令:機器碼的助記符,有對應的機器碼。
  2. 偽指令:沒有對應的機器碼,由編譯器執行,計算機並不執行。
  3. 其他符號:如 +-*/ 等,由編譯器識別,沒有對應的機器碼。
  • 組合語言的核心是彙編指令,它決定了組合語言的特性。

1.4 儲存器

  1. CPU 是計算機的核心部件,它控制著整個計算機的運作並進行運算。
  2. 要想讓一個 CPU 工作,就必須向它提供指令和資料。指令和資料在儲存器中存放,也就是我們平時所說的記憶體。在一臺 PC 機中記憶體的作用僅次於 CPU。離開了記憶體,效能再好的 CPU 也無法工作。
  3. 磁碟不同於記憶體,磁碟上的資料或程式如果不讀到記憶體中,就無法被 CPU 使用。
  4. 要靈活地利用匯編語言程式設計,我們首先要了解 CPU 是如何從記憶體中讀取資訊,以及向記憶體中寫入資訊的。

1.5 指令和資料

  1. 指令和資料是應用上的概念。在記憶體或磁碟上,指令和資料沒有任何區別,都是二進位制資訊。CPU 在工作的時候把有的資訊看作指令,有的資訊看作資料,為同樣的資訊賦予了不同的意義。例如,記憶體中的二進位制資訊 1000 1001 1101 1000,計算機可以把它看作大小為 89D8H 的資料來處理,也可以將其看作指令 mov ax,bx 來執行。

1.6 儲存單元

  1. 儲存器被劃分成若干個儲存單元,每個儲存單元從 0 開始順序編號。例如一個儲存器有 128 個儲存單元,則編號為 0 ~ 127。
  2. 電子計算機的最小資訊單位是 bit(音譯為位元),也就是一個二進位制位。8 個 bit 組成一個 Byte,也就是通常講的一個位元組。微型機儲存器的儲存單元可以儲存一個 Byte,即 8 個二進位制位。一個儲存器有 128 個儲存單元,那麼它可以儲存 128 個 Byte。
  3. 微機儲存器的容量是以位元組為最小單位來計算的。對於一個擁有 128 個儲存單元的儲存器,我們可以說,它的容量是 128 個位元組。
  4. 對於大容量的儲存器一般還用以下單位來計算容量(以下用 B 來代表 Byte):1KB = 1024B;1MB = 1024KB;1GB = 1024MB;1TB = 1024GB。
  5. 磁碟的容量單位同記憶體的一樣,實際上以上單位是微機中常用的計量單位。