網友評分: 5分
RadASM是一款功能十分強大的匯編編輯器軟件,這款軟件能夠為用戶提供win32位匯編可視化開發環境,可支持多種類型的編程格式,自帶資源編輯、調試器等功能,滿足用戶的多元化使用需求,提升用戶工作效率,喜歡的小伙伴快來下載體驗吧。
【機器語言】
機器指令是CPU能直接識別并執行的指令,它的表現形式是二進制編碼。機器指令通常由操作碼和操作數兩部分組成,操作碼指出該指令所要完成的操作,即指令的功能,操作數指出參與運算的對象,以及運算結果所存放的位置等。
由于機器指令與CPU緊密相關,所以,不同種類的CPU所對應的機器指令也就不同,而且它們的指令系統往往相差很大。但對同一系列的CPU來說,為了滿足各型號之間具有良好的兼容性,要做到:新一代CPU的指令系統必須包括先前同系列CPU的指令系統。只有這樣,先前開發出來的各類程序在新一代CPU上才能正常運行。
機器語言是用來直接描述機器指令、使用機器指令的規則等。它是CPU能直接識別的唯一一種語言,也就是說,CPU能直接執行用機器語言描述的程序。
用機器語言編寫程序是早期經過嚴格訓練的專業技術人員的工作,普通的程序員一般難以勝任,而且用機器語言編寫的程序不易讀、出錯率高、難以維護,也不能直觀地反映用計算機解決問題的基本思路。
由于用機器語言編寫程序有以上諸多的不便,現在幾乎沒有程序員這樣編寫程序了。
【匯編語言】
雖然用機器語言編寫程序有很高的要求和許多不便,但編寫出來的程序執行效率高,CPU嚴格按照程序員的要求去做,沒有多余的額外操作。所以,在保留“程序執行效率高”的前提下,人們就開始著手研究一種能大大改善程序可讀性的編程方法。
為了改善機器指令的可讀性,選用了一些能反映機器指令功能的單詞或詞組來代表該機器指令,而不再關心機器指令的具體二進制編碼。與此同時,也把CPU內部的各種資源符號化,使用該符號名也等于引用了該具體的物理資源。
如此一來,令人難懂的二進制機器指令就可以用通俗易懂的、具有一定含義的符號指令來表示了,于是,匯編語言就有了雛型。現在,我們稱這些具有一定含義的符號為助憶符,用指令助憶符、符號地址等組成的符號指令稱為匯編格式指令(或匯編指令)。
匯編語言是匯編指令集、偽指令集和使用它們規則的統稱。偽指令是在程序設計時所需要的一些輔助性說明指令,它不對應具體的機器指令,有關內容在以后的各章節中會有詳細敘述,在此不展開介紹。
用匯編語言編寫的程序稱為匯編語言程序,或匯編語言源程序,在本教材中或特定的環境下,也可簡稱為源程序。匯編語言程序要比用機器指令編寫的程序容易理解和維護。
【與機器相關性】
匯編語言指令是機器指令的一種符號表示,而不同類型的CPU有不同的機器指令系統,也就有不同的匯編語言,所以,匯編語言程序與機器有著密切的關系。
由于匯編語言程序與機器的相關性,所以,除了同系列、不同型號CPU之間的匯編語言程序有一定程度的可移植性之外,其它不同類型(如:小型機和微機等)CPU之間的匯編語言程序是無法移植的,也就是說,匯編語言程序的通用性和可移植性要比高級語言程序低。
【執行的高效率】
正因為匯編語言有“與機器相關性”的特性,程序員用匯編語言編寫程序時,可充分發揮自己的聰明才智,對機器內部的各種資源進行合理的安排,讓它們始終處于最佳的使用狀態,這樣做的最終效果就是:程序的執行代碼短,執行速度快。
現在,高級語言的編譯程序在進行寄存器分配和目標代碼生成時,也都有一定程度的優化(在后續課程《編譯原理》的有關章節會有詳細介紹),但由于所使用的“優化策略”要適應各種不同的情況,所以,這些優化策略只能在宏觀上,不可能在微觀上、細節上進行優化。而用匯編語言編寫程序幾乎是程序員直接在寫執行代碼,程序員可以在程序的每個具體細節上進行優化,這也是匯編語言程序執行高效率的原因之一。
【編寫程序的復雜性】
匯編語言是一種面向機器的語言,其匯編指令與機器指令基本上一一對應,所以,匯編指令也同機器指令一樣具有功能單一、具體的特點。要想完成某件工作(如計算:A+B+C等),就必須安排CPU的每步工作(如:先計算A+B,再把C加到前者的結果上)。另外,在編寫匯編語言程序時,還要考慮機器資源的限制、匯編指令的細節和限制等等。
由于匯編語言程序要安排運算的每一個細節,這就使得編寫匯編語言程序比較繁瑣、復雜。一個簡單的計算公式或計算方法,也要用一系列匯編指令一步一步來實現。
【調試的復雜性】
在通常情況下,調試匯編語言程序要比調試高級語言程序困難,其主要原因有四:
匯編語言指令涉及到機器資源的細節,在調試過程中,要清楚每個資源的變化情況;
程序員在編寫匯編語言程序時,為了提高資源的利用率,可以使用各種實現技巧,而這些技巧完全有可能破壞程序的可讀性。這樣,在調試過程中,除了要知道每條指令的執行功能,還要清楚它在整個解題過程中的作用;
高級語言程序幾乎不顯式地使用“轉移語句”,但匯編語言程序要用到大量的、各類轉移指令,這些跳轉指令大大地增加了調試程序的難度。如果在匯編語言程序中也強調不使用“轉移指令”,那么,匯編語言程序就會變成功能單調的順序程序,這顯然是不現實的;
調試工具落后,高級語言程序可以在源程序級進行符號跟蹤,而匯編語言程序只能跟蹤機器指令。不過,現在這方面也有所改善,CV(CodeView)、TD(Turbo Debug)等軟件也可在源程序級進行符號跟蹤了。