匯編語言的主要特點

字號:

一方面,匯編語言指令是用一些具有相應(yīng)含義的助憶符來表達(dá)的,所以,它要比機(jī)器語言容易掌握和運用,但另一方面,它要直接使用CPU的資源,相對高級程序設(shè)計語言來說,它又顯得難掌握。
    匯編語言程序歸納起來大概有以下幾個主要特性。
    1、與機(jī)器相關(guān)性
    匯編語言指令是機(jī)器指令的一種符號表示,而不同類型的CPU有不同的機(jī)器指令系統(tǒng),也就有不同的匯編語言,所以,匯編語言程序與機(jī)器有著密切的關(guān)系。
    由于匯編語言程序與機(jī)器的相關(guān)性,所以,除了同系列、不同型號CPU之間的匯編語言程序有一定程度的可移植性之外,其它不同類型(如:小型機(jī)和微機(jī)等)CPU之間的匯編語言程序是無法移植的,也就是說,匯編語言程序的通用性和可移植性要比高級語言程序低。
    2、執(zhí)行的高效率
    正因為匯編語言有“與機(jī)器相關(guān)性”的特性,程序員用匯編語言編寫程序時,可充分發(fā)揮自己的聰明才智,對機(jī)器內(nèi)部的各種資源進(jìn)行合理的安排,讓它們始終處于佳的使用狀態(tài),這樣做的終效果就是:程序的執(zhí)行代碼短,執(zhí)行速度快。
    現(xiàn)在,高級語言的編譯程序在進(jìn)行寄存器分配和目標(biāo)代碼生成時,也都有一定程度的優(yōu)化(在后續(xù)課程《編譯原理》的有關(guān)章節(jié)會有詳細(xì)介紹),但由于所使用的“優(yōu)化策略”要適應(yīng)各種不同的情況,所以,這些優(yōu)化策略只能在宏觀上,不可能在微觀上、細(xì)節(jié)上進(jìn)行優(yōu)化。而用匯編語言編寫程序幾乎是程序員直接在寫執(zhí)行代碼,程序員可以在程序的每個具體細(xì)節(jié)上進(jìn)行優(yōu)化,這也是匯編語言程序執(zhí)行高效率的原因之一。
    3、編寫程序的復(fù)雜性
    匯編語言是一種面向機(jī)器的語言,其匯編指令與機(jī)器指令基本上一一對應(yīng),所以,匯編指令也同機(jī)器指令一樣具有功能單一、具體的特點。要想完成某件工作(如計算:A+B+C等),就必須安排CPU的每步工作(如:先計算A+B,再把C加到前者的結(jié)果上)。另外,在編寫匯編語言程序時,還要考慮機(jī)器資源的限制、匯編指令的細(xì)節(jié)和限制等等
    由于匯編語言程序要安排運算的每一個細(xì)節(jié),這就使得編寫匯編語言程序比較繁瑣、復(fù)雜。一個簡單的計算公式或計算方法,也要用一系列匯編指令一步一步來實現(xiàn)。
    4、調(diào)試的復(fù)雜性
    在通常情況下,調(diào)試匯編語言程序要比調(diào)試高級語言程序困難,其主要原因有四:
    匯編語言指令涉及到機(jī)器資源的細(xì)節(jié),在調(diào)試過程中,要清楚每個資源的變化情況;
    程序員在編寫匯編語言程序時,為了提高資源的利用率,可以使用各種實現(xiàn)技巧,而這些技巧完全有可能破壞程序的可讀性。這樣,在調(diào)試過程中,除了要知道每條指令的執(zhí)行功能,還要清楚它在整個解題過程中的作用;
    高級語言程序幾乎不顯式地使用“轉(zhuǎn)移語句”,但匯編語言程序要用到大量的、各類轉(zhuǎn)移指令,這些跳轉(zhuǎn)指令大大地增加了調(diào)試程序的難度。如果在匯編語言程序中也強(qiáng)調(diào)不使用“轉(zhuǎn)移指令”,那么,匯編語言程序就會變成功能單調(diào)的順序程序,這顯然是不現(xiàn)實的;
    調(diào)試工具落后,高級語言程序可以在源程序級進(jìn)行符號跟蹤,而匯編語言程序只能跟蹤機(jī)器指令。不過,現(xiàn)在這方面也有所改善,CV(CodeView)、TD(Turbo Debug)等軟件也可在源程序級進(jìn)行符號跟蹤了。