1. 程式人生 > >《組合語言》筆記——第一章 基礎知識

《組合語言》筆記——第一章 基礎知識

機器語言

機器語言是機器指令的集合。電子計算機的機器指令是一列二進位制數字。計算機將之轉變為一列高低電平,以使計算機的電子器件受到驅動,進行運算。

每一種微處理器都有自己的機器指令集,也就是機器語言。

組合語言

組合語言的主體是彙編指令。彙編指令和機器指令的差別在於指令的表示方法上。彙編指令是機器指令便於記憶的書寫格式。

例如:mov ax,bx

Q:如何讓計算機執行程式設計師用匯編指令編寫的程式呢? A:需要一個能夠將彙編指令轉換成機器指令的翻譯程式,我們稱其為編譯器。 例如:MASM(全稱是Microsoft Macro Assembler)是微軟為x86微處理器家族開發的組合語言開發環境。

組合語言的組成

組合語言由三類指令組成:

  1. 彙編指令:機器碼的助記符,有對應的機器碼。
  2. 偽指令:沒有對應的機器碼,由編譯器執行,計算機並不執行。 偽指令:沒有對應的機器碼,由編譯器執行,計算機並不執行。
  3. 其他符號:如+、-、*、/等,由編譯器識別,沒有對應的機器碼。

組合語言的核心是彙編指令,它決定了組合語言的特性。

儲存器

儲存器:指令和資料存放的地方,我們稱其為記憶體。沒有記憶體,效能再好的CPU也無法工作。硬碟上的資料或程式不讀到記憶體中,就無法被CPU使用。

【注】CPU的工作原理簡述:它從儲存器(記憶體)或高速緩衝儲存器中取出指令(fetch),放入指令暫存器(IR,Instruction Register),並對指令譯碼(decode),進而執行(execute),最終寫回(Writeback)。總結起來就是:取指—>譯碼—>執行—>寫回。

指令和資料

在記憶體和磁碟上,指令和資料沒有任何區別,都是二進位制資訊。CPU在工作的時候把有得資訊看做指令,有得資訊看作資料,為同樣的資料賦予了不用的意義。

例如:記憶體中的二進位制資訊1000100111011000 計算機可以把它當做資料處理:89D8H 指令處理:mov ax,bx

【注】:89D8H,這是一個十六進位制編碼的數。H表示十六進位制。 如果十六進位制以字母打頭,前面要加0,比如0E325H,強調這是數字。如果前面不加0,彙編編譯器還以為這是個變數。

儲存單元

儲存器(記憶體)被劃分為若干個儲存單元,每個儲存單元從0開始順序編號。每個儲存單元能儲存一個位元組。微機儲存的容量是以位元組為最小單位來計算的。

CPU對儲存器的讀寫

CPU要從記憶體中讀資料,首先要指定儲存單元的地址。CPU在讀寫資料時還要指明,它要對哪一個器件(例如:儲存器)進行操作,進行哪種操作,是從中讀出資料,還是向裡面寫入資料。

彙編指令:MOV AX,BX 【注】BX- the base address register:基地址暫存器 AX- the accumulator register:累加暫存器 彙編指令:MOV AX,[3] 含義:將3號儲存單元的內容傳遞給AX。

地址匯流排

地址匯流排(Address bus)寬度決定了CPU可以訪問的實體地址空間。簡單說就是CPU到底能夠使用多大容量的記憶體。

資料匯流排

資料匯流排的寬度決定了CPU和外界的資料傳送速度。

控制匯流排

控制匯流排的寬度決定了CPU對外部器件(例如,記憶體)的控制能力。

小結

  1. 彙編指令是機器指令的助記符,同機器指令一一對應。 每一種CPU都有自己的彙編指令集。 CPU可以直接使用的資訊在儲存器(記憶體)中存放。
  2. 在儲存器中指令和資料沒有任何區別,都是二進位制資訊。 儲存單元從零開始順序編號。 一個儲存單元可以儲存8個bit,即8位二進位制數。
  3. 每個CPU晶片都有許多管腳,這些管腳和匯流排相連。也可以說,這些管腳引出匯流排。一個CPU可以引出3種匯流排的寬度標誌了這個CPU的不同方面的效能:
  4. 地址匯流排的寬度決定了CPU的定址能力; 資料匯流排的寬度決定了CPU與其他器件進行資料傳輸時的一次資料傳送量;
  5. 控制匯流排的寬度決定了CPU對系統中其他器件的控制能力。
  6. 記憶體地址空間:對CPU來說,系統中所有儲存器中的儲存單元都處於一個統一的邏輯儲存器中,它的容量受CPU定址能力的限制。這個邏輯儲存器即是我們所說的記憶體地址空間。

【注】在電子計算機中,一根導線可以傳送的穩定狀態只有兩種,高電平或是低電平。用二進位制表示就是1或0。