匯編語言從入門到精通-預備知識
匯編語言
1、預備知識
1.1 匯編語言的由來及其特點
1.1.1 機器語言
機器指令是CPU能直接識別並執行的指令,它的表現形式是二進制編碼。機器指令通常由操作碼和操作數兩部分組成,操作碼指出該指令所要完成的操作,即指令的功能,操作數指出參與運算的對象,以及運算結果所存放的位置等。
由於機器指令與CPU緊密相關,所以,不同種類的CPU所對應的機器指令也就不同,而且它們的指令系統往往相差很大。但對同一系列的CPU來說,為了滿足各型號之間具有良好的兼容性,要做到:新一代CPU的指令系統必須包括先前同系列CPU的指令系統。只有這樣,先前開發出來的各類程序在新一代CPU上才能正常運行。
機器語言是用來直接描述機器指令、使用機器指令的規則等。它是CPU
用機器語言編寫程序是早期經過嚴格訓練的專業技術人員的工作,普通的程序員一般難以勝任,而且用機器語言編寫的程序不易讀、出錯率高、難以維護,也不能直觀地反映用計算機解決問題的基本思路。
由於用機器語言編寫程序有以上諸多的不便,現在幾乎沒有程序員這樣編寫程序了。
1.1.2 匯編語言
雖然用機器語言編寫程序有很高的要求和許多不便,但編寫出來的程序執行效率高,CPU嚴格按照程序員的要求去做,沒有多余的額外操作。所以,在保留“程序執行效率高”的前提下,人們就開始著手研究一種能大大改善程序可讀性的編程方法。
為了改善機器指令的可讀性,選用了一些能反映機器指令功能的單詞或詞組來代表該機器指令,而不再關心機器指令的具體二進制編碼。與此同時,也把CPU
如此一來,令人難懂的二進制機器指令就可以用通俗易懂的、具有一定含義的符號指令來表示了,於是,匯編語言就有了雛型。現在,我們稱這些具有一定含義的符號為助憶符,用指令助憶符、符號地址等組成的符號指令稱為匯編格式指令(或匯編指令)。
匯編語言是匯編指令集、偽指令集和使用它們規則的統稱。偽指令是在程序設計時所需要的一些輔助性說明指令,它不對應具體的機器指令,有關內容在以後的各章節中會有詳細敘述,在此不展開介紹。
用匯編語言編寫的程序稱為匯編語言程序,或匯編語言源程序,在本教材中或特定的環境下,也可簡稱為源程序。匯編語言程序要比用機器指令編寫的程序容易理解和維護。
1.1.3 匯編程序
用匯編語言編寫的程序大大提高了程序的可讀性,但失去了CPU能直接識別的特性。例如用匯編語言書寫的指令:MOV AX, BX,CPU不會知道這幾個字符所表達出來的功能,但程序員一看就知道:要求CPU把寄存器BX的值傳送給寄存器AX。
把機器指令符號化增加了程序的可讀性,但引起了如何讓CPU知道程序員的用意,並按照其要求完成相應操作的問題。解決該問題就需要一個翻譯程序,它能把匯編語言編寫的源程序翻譯成CPU能識別的機器指令序列。這裏,我們稱該翻譯程序為匯編程序。
圖1.1 匯編語言指令到機器指令的示意圖
從圖中不難看出:匯編程序能把左邊匯編語言源程序翻譯成右邊的機器指令序列。其中,把匯編語言指令“MOV AX, BX”和“ADD AX, 5”分別轉換成機器指令89D8H和050500H,而後者都是CPU能直接識別的,所以,可執行它們。
目前,常用的匯編程序有:MASM、TASM和DEBUG等。
匯編語言從入門到精通-預備知識