為什麼說組合語言的執行效率高

2025-03-22 09:50:27 字數 1345 閱讀 6408

1樓:陽光上的橋

組合語言編寫的程式,直接翻譯為機器**。

而高階語言的程式,由於其翻譯為機器**的翻譯程式不可能伏差具有活人那麼缺森皮高的智慧型,會插入許多多餘**,春伍這些多餘**會浪費機器的執行時間。

就那最簡單的hello,world的程式來說,用組合語言編寫的程式檔案可能只有幾百個位元組,而用c、delphi等編寫的程式至少有幾萬個位元組。因為這些程式有個通過骨架,首先要做哪些初始化,獲取作業系統資訊,設定一系列的變數等等。

2樓:訾智饒媚

呵呵,你這個問題倒是很有意思。

你說的是沒錯,所有語言編寫卜困的**最終要執行,都要轉化成機器碼。但是,由於這個「轉化」所採用的方法不同,其所需要消耗的時間也使不同的。

具個簡單的例子來說,比如把乙個變數的值自加1,並執行100次,也就是下面這條語句:

for(i=0;i<100;)那麼對於乙個沒有充分優化的c語言編譯器而言,你需要每次定址記憶體找到變數,然後把變數值拷貝到暫存器,然後對暫存器自加1,然後把暫存器值寫回到記憶體,整個過程需要反覆宴祥執行100次。

但是如果你寫彙編**,那就沒這麼麻煩了,你只需要定址記憶體一次,把變數讀入暫存器,然後對暫存器自加100次,最後寫回記憶體即可。你可以想見,這個彙編**的執行速度要比c語言快得多,但它們所執行的功能是一樣的。

當然,我前面這個例子只是用來說明問題,並不具有實踐價值。型祥念實踐中有很多因素影響程式的效率,例如編譯方式、優化程度等等。而這些與程式設計師的素質也有關係,乙個差的彙編程式很可能不如乙個好的c語言程式執行效率高。

彙編為什麼效率高 **等

3樓:薛精泥依然

問題1:c語言和組合語言分別寫的「hello,world!」程式,其生成的exe檔案的大小、執行效率並非等價。

c語言有標準輸入輸出庫,而彙編沒有,只有藉助dos系統功能呼叫實現。

這兩個語言比較,並不是說c的程式冗餘,而是整合了庫後體積大,而彙編沒有庫的概念,沒有了這個負擔。但其在連線生成exe檔案過譽基程中,也要加入環境變數等東西,體積也比單純的源程式要大。

問題2:關於api

api是個介面,是你寫的應該程式與作業系統功能間的橋樑。比如,給你塊cpu,40根引腳,再給你個引腳功能圖,告訴你程式設計只需要對照功能圖進行,引腳1是幹嗎、引腳2是幹嗎……,在這種情況下,你畢虛脊不需要晶元內部是什麼構造,但是你可以使用晶元的全部功能。這個功能圖就相當於api,可以把你的引數傳遞給晶元加工成「成品」後再傳給你。

再舉個例子:你-快遞-工廠。工廠手滲一般不提供個人零售業務,現在如果提供網郵業務,則快遞就是你和工廠之間的橋樑,相當於這個api,你只需要告訴快遞買什麼,一切由快遞與工廠打交道。

希望以上的解釋能幫到你!

組合語言中符號的意思是什麼,在組合語言裡 符號代表什麼意思?

看圖你就會明白。實際上標號x1的首地址為ascii碼c的字單元地址,x2的首地址開始於 db 16 dup 語句,緊接著x1的終止地址,那麼它的首地址相對於x1偏移4 1個位元組單元 x2的終止地址相對於其首地址偏移16 1個位元組單元,相對於x1偏移18個位元組單元。那麼 x1實際上是當前地址與x...

組合語言的AX,BX,CX,DX,分別表示什麼

ax暫存器稱為累加器 accumulator 使用時主要用於存放資料,如存放算術 邏輯運算中的運算元或結果。也可臨時時用於存放地址。bx暫存器稱為基址暫存器 baseregister 常用來存放訪問儲存器時的地址。cx暫存器稱為計數暫存器 countregister 常用於儲存計算值,如在移位指令,...

為什麼組合語言編出來的程式要比高階語言編出來的執行效率高

組合語言編譯後直接面對機器語言,演算法直接。高階語言能實現功能,但在內部執行時走彎路,所以時間慢。因為彙編可以直接操縱硬體,省略很多冗餘的指令,可以進行位操作,有些功能用高階語言實現起來很麻煩 不是指源 尤其是那些不支援位操作的高階語言,而用匯編就很簡單了 當然,代價就是犧牲移植性 高階語言 彙編 ...