我們編寫的組合語言和C語言如何能夠轉換成計算機可讀的二進位制

時間 2021-08-30 20:56:56

1樓:電動汽車研究平臺

將用高階語言寫成的程式變成機器可識別的二進位制**的過程稱為編譯過程.

因為在計算機中,各種資訊和資料都是以檔案形式存放的.在編輯方式下建立起來的程式檔案稱為源程式檔案,簡稱原始檔(如noname.c),相應的程式叫做源程式.

源程式是用高階語言編寫的,它不能直接在機器上執行.因為計算機並不能識別源程式,它僅認識規定範圍內的一系列二進位制**所組成的指令資料,並按預定的含義執行一系列動作.通常把這些計算機能識別的二進位制**稱為目標**.

為了把源程式變成目標**,就需要有個"翻譯"做這種轉換工作.具體實現這一轉換功能的軟體就是編譯程式,如c語言編譯程式.

經編譯後生成的目標程式的檔案叫做目標檔案(如noname.o).

連線:因為程式中會用到庫函式或其他函式,所以目標程式還不能馬上在機器上執行,需要把它們連成一個統一的整體,這就是連線.經過連線就把分離的目標程式連成完整的可執行程式,對應的檔案是可執行檔案.

執行:執行可執行檔案,可得到相應的結果.如果發現執行結果不正確,那麼就要分析出錯原因,然後重新進入編輯方式,修改源程式.經編輯之後,再重複上述的編譯,連線,執行等步驟.

我們用qasm寫的是源程式,編寫好的程式編譯後形成的.obj是目標檔案。.obj通過連線程式後形成.exe可執行程式。(win系統中程式編譯過程) 深入講解見參考資料

2樓:

利用ascii碼通過編碼與解碼的過程轉化成二進位制傳達給計算機

3樓:瀟湘客

需要編譯之後才能使用,彙編的還要連線。

c語言和組合語言的區別是什麼?

4樓:哇哎西西

區別如下:

1、效率不同

彙編效率高,c語言效率比較低。

2、對硬體的可操控性不同

彙編對硬體的可操控性強,c語言硬體可操控性比較差。

3、**體積大小不同

彙編目標**體積小,c語言目標**體積大。

4、維護性不同

彙編不易維護,c語言容易維護。

5、可移植性不同

彙編可移植性很差,c語言可移植性很好。

5樓:哇哎西西

1、兩者編譯組成不同。組合語言是將由0、1組成的機器語言用具有簡單語義的英文**表示,而c語言不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆疊、暫存器等。

2、兩者被計算機識別的路徑不同。組合語言通常用於對硬體的直接操控。而且c語言所編制的程式不能直接被計算機識別,必須經過轉換才能被執行。

3、兩者用處不同。組合語言通常用在程式中最核心的、控制硬體的**,一方面是安全,另一方面提高執行速度。而c語言通常用在計算機外用功能上。

6樓:會飛的小兔子

1、操作複雜程度的不同

c語言,與組合語言相比,c語言在更加接近人的一般思維,因此在程式的設計過程中比較容易操作,此外在進行一些複雜的操作,運算時,c語言比彙編就要簡單很多,尤其是c語言中的豐富的函式庫,可以直接實現一些原本很複雜的功能,並且從**量來說任意一個c語言程式,通過反彙編之後變成組合語言程式,其長度都可能要增加好幾倍。

2、使用範圍的不同

c語言程式的事件將會只是編寫組合語言程式的幾分之一,從編寫程式的效率上來說c語言無疑更高,此外c語言是高階程式語言因此可移植性較好,不太受到到硬體裝置的限制。

在實現一個功能時,組合語言可以直接奔著目標去,而c語言則是給你提供了一種對於對於這種問題的普遍處理辦法,不具有針對性,因此會有許多多餘的在這個問題中不需要的過程,因此可能回事程式較大,執行較慢。相對與組合語言,c語言更加適合一些較大型專案的開發。

3、執行的速度和效率不同

程式沒有了組合語言計算機直接就無法執行,因為組合語言是基於計算機底層硬體的程式設計,通過它實現了對cpu,記憶體,硬碟以及外界裝置的直接操作,因為直接所以組合語言在程式的大小,執行的速度與效率方面幾乎無可比擬,但是也是因為直接,所以彙編程式難以移植,且完成相同的操作**量太大,在進行一些大的專案是,單獨使用匯編進行程式設計幾乎不可能實現。

7樓:雄鷹耀

c語言和組合語言的指令集、定址方式不同,相當於兩個機器各有各的操作方式。第一、

組合語言是低階語言,在編寫程式的時候會把根據不同的情況指定使用不同的定址方式,能夠對記憶體和cpu裡的通用暫存器直接操縱。不同的計算機系列會有不同的組合語言;而c語言是高階語言,可以實現跨平臺。編寫程式無需指定cpu的指令執**況,一段程式可以在不同體系結構的計算機上使用。

第二、c語言是一種比較高階的語言,作者可以直接命令計算機在不考慮硬體的情況下實現這種控制效果。組合語言是語言對硬體的直接控制,硬體間接實現了一定的控制效果。換句話說,組合語言更關注描述過程,而高階語言(比如c)更側重於描述結果。

第三、例如,組合語言中變數的賦值語句是mov a b,可以解釋為將暫存器中的值複製到b暫存器。在c語言中,b=a直接表示,這被解釋為使b=一個由柵極電路組成的晶片。有一個斷點,對應於計算機**中的二進位制1或0。

第四、如果您有一個直接的人機對話,您只能輸入包含0和1的**來進行通訊。這段**太長,很難記住。因此人們想出了一種相互協議的方式,人們可以很容易地閱讀特定的方式來表達特定的計算機**,然後翻譯成計算機可以直接讀取二進位制**的表示式。

這樣一組方便的表示式被稱為計算機語言。

8樓:匿名使用者

組合語言屬低階語言,而c語言是高階語言,所謂高階語言就是更容易被人們理解的語言,其實組合語言能實現的功能往往也能通過c語言來實現,甚至用c語言會更簡單,但是組合語言有一個優勢是其他任何語言所不具備的,這也是為什麼組合語言一直能在程式設計中佔有一席之地,那就是組合語言對硬體的直接控制,也就是說他能直接對硬體操作,可以繞過作業系統等等之類。雖然有的領域其他程式設計也能實現,但是在很多地方往往是組合語言能更加簡單,更加完美的完成。而且學好了組合語言你就能對cpu是怎麼工作的有了清晰的認識,所以學計算機專業的一般都會學組合語言。

9樓:匿名使用者

c語言是高階語言,可移植性較高,與裝置相關性較低。

組合語言是低階語言,可以移植性較低,與cpu具有極強的相關性。

10樓:匿名使用者

組合語言是用語言直接控制硬體,由硬體間接達到某種控制效果。而c語言是一種比較高階的語言,編寫者可以不用去考慮硬體而直接去命令計算機達到這種控制效果。換而言之,組合語言對描述過程更注重,c語言之類的高階語言更注重描述結果。

例如組合語言中變數的賦值語句為 mov a b 可以解釋為將a暫存器中的值複製至b暫存器。而c語言中直接表示為 b=a,解釋為使b=a 晶片都是由閘電路構成。門有通有斷,對應在計算機**裡是二進位制的1或0。

如果直接進行人機對話,只能輸入由0和1組成的**才能交流。這樣的**太長,而且難記。所以人們想出一個辦法,相互約定,用人們易讀懂的特定表達方式去表達特定的計算機**,再將此表達方式翻譯成計算機能直接讀懂的二進位制**。

這樣的一套方便人們表達的表達方式被稱為計算機語言。

11樓:沙裡波特

語言又是怎麼回事?

------

語言是怎麼回事,你都不懂?

那麼,你還是別來瞎問了。

大家都告訴你“c和彙編的區別”了,你肯定還是弄不懂。

12樓:柱子小柱子

1.組合語言實質上是機器語言的助記符。 cpu只能執行它所支援的指令集,而這些指令集當中的每條指令都是一些二進位制數的序列,也就是“0”和“1”的有序組合;“0”和“1”的組合不便於程式設計師的記憶因此有了“mov a 0x40”等這樣的助記符。

2.c語言編寫完程式後,需要通過編譯器將c語言編譯成與相應cpu指令集對應的機器語言。組合語言與機器語言是一一對應的。

c語言的語法是固定的,c語言編寫的程式要編譯成cpu能讀懂的機器語言指令沒辦法一一對應,因此需要有編譯規則了,所以執行效率低一些。

c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

組合語言是彙編指令集、偽指令集和使用它們規則的統稱,使用具有一定含義的符號為助憶符,用指令助憶符、符號地址等組成的符號指令稱為彙編格式指令。

組合語言是一門重要的程式設計語言。下面列舉了至少4本名叫《組合語言》的圖書和教材,並簡要介紹了高校計算機相關專業在開設“組合語言”課程方面的一些情況。

13樓:蓋辜苟

c語言和組合語言的區別在於他們之間優缺點幾乎是相反的。

c語言和組合語言的優缺點:以c來舉例

優點:c的執行效率高;

c可以實現硬體的直接訪問;

c**的移植性好;

缺點:c的**複用性差;

c的**維護性差;

c的擴充套件性差,即如果想增加新功能,需要修改較多的**;

c語言的可讀性差;

c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言;儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

組合語言:是一種用於電子計算機、微處理器、微控制器或其他可程式設計器件的低階語言,亦稱為符號語言。在組合語言中,用助記符(mnemonics)代替機器指令的操作碼,用地址符號(symbol)或標號(label)代替指令或運算元的地址。

在不同的裝置中,組合語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。普遍地說,特定的組合語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。

c和彙編的選擇:

若只有較簡單的邏輯操作、邏輯演算法、簡單運算,使用匯編會得到較為精準的**,但用c也同樣可以做到。

若摻有複雜運算、浮點運算、非線性方程等,彙編恐怕無能為力了(最起碼難度很大)。

微控制器種類繁多,各自的彙編語法大都不一樣,若僅使用匯編,可擴充性、可移植性都很差,用c就會好的多。

不會組合語言可以編寫遊戲嗎,不會組合語言可以編寫遊戲嗎???

用匯編寫遊戲?你不覺得累啊!遊戲一般都是c 寫的,一些對速度要求特別高的關鍵 才會用匯編寫,數量很少的。 彙編寫系統,有人那來寫遊戲?有那種水平用匯編寫大程式的話就不會去寫遊戲了,大才小用,想寫遊戲用vc delphi或其他高階語言就可以了,最好買點遊戲程式設計的書來看會對你有幫助的。 其實只要你願...

組合語言與c語言如何混合程式設計

以個例子給你參考,有兩個檔案,一是s.a51,另一個是 m.c都加到keill的工程中編譯。彙編中有兩個函式,注意c的引數是如何傳遞給彙編的。s.a51 nomod51 name sentbyteup pr?sentbyteup?sentbyteup segment code dt?sentbyte...

用組合語言編寫程式計算5 10

超級花生 dseg segment result dw 存放和 dseg ends cseg segment assume cs cseg,ds dsegstart mov ax,dseg mov ds,ax mov ax,5 從5開始加 mov result,0 和的初值賦0 mov cx,20 ...