匯編與c語言
『壹』 匯編語言與c語言有區別嗎
C語言與匯編都是面向過程的語言。就是寫各種流程。讓程序「開始->1->2->3->4->結束」的寫。但是匯編語言是基於底層的語言。就是說他寫的內容是操作電腦最基本的資源,控制CPU是具體到操作寄存器、累加器等。硬體相關性非常強。代碼非常難讀懂,就是純機器語言,也很難移植。C語言是從匯編基礎上發展出來的,它更像人類語言。在處理過程邏輯時更容易讓人理解。C語言的編譯是首先編譯成匯編的。程序員可以看到C語言轉換後的匯編代碼。然後最終成為執行文件。大大提高了開發效率。但是匯編執行效率高,體積小,現在的病毒都是匯編寫的。幾K位元組大小都很強大了。要是同樣用C語言寫要幾MB位元組。
『貳』 匯編與C語言
匯編語言是直接針對硬體進行操作的語言。
適合編寫控制類型的程序。
但是很多人,學習硬體比較吃力,那就去學習C語言吧。
C語言是脫離硬體的,可移植性強,比較適合編寫演算法為主的程序。
但是數據類型、指針等概念,學習起來比學硬體還難。
『叄』 C語言和匯編語言的關系
程序員編寫的C語言代碼,首先要經過C語言編譯器,生成匯編代碼,這個過程稱為編譯階斷,當C語言編譯器生成匯編代碼後,再調用匯編器來將匯編代碼編譯成匯編指令。
這是一種站在巨人肩人的作法,最早的C++編程語言也是這樣的實現方法,只不過那時候叫Cfront程序,Cfront程序的作用是將C++代碼轉換成C語言代碼,類似於一個文本處理器,然後再調用C語言編譯器,將C源碼編譯成匯編代碼,然後再調用匯編器將匯編代碼編譯成機器碼。
這個過程,在Windows平台上不容易操作,但是在Linux平台上很容易看到。以gcc這款c語言編譯器為例,它實際上是四個小程序。
cp: c語言預處理程序,有它負責進行預處理操作。
cc: C語言編譯器,它負責將C源碼編譯成匯編代碼。
as: 匯編器,它負責將匯編代碼編譯成機器碼,一般使用gcc test.c這樣的命令編譯C語言時,會生成一個a.out的程序,它實際上指的就是as ouput,即匯編器輸出文件。
link: 鏈接器,它負責將匯編器輸入的機器碼和庫打包成一個操作系統可以運行的可執行文件,在Linux上的可執行文件格式是ELF格式,這個格式的實現是有鏈接器來完成的。
『肆』 匯編語言和c語言區別
匯編語言與C語言的區別:
1、在匯編語言中,為一個處理器編寫的程序不能在另一種類型的處理器上運行。在C語言程序中,程序獨立於處理器類型運行。
2、匯編語言代碼的性能和准確性優於C代碼。
3、C語言必須提供額外的指令來在計算機上運行代碼。
4、匯編語言代碼比C代碼難以理解和調試。
5、 一個或兩個C語言語句擴展為許多匯編語言代碼。
6、匯編語言可以比C別更好地進行通信某些類型的硬體操作只能通過匯編語言執行。
7、在匯編語言中,我們可以直接讀取物理地址上的指針,這在C別是不可能的。
8、在匯編語言中使用位更容易。
9、匯編程序用於在匯編語言中轉換代碼,而編譯器用於在C編譯代碼。
10、C語言的可執行代碼大於匯編語言代碼,因此執行時間較長。
11、由於長的可執行代碼,C程序的效率低於匯編語言程序。
12、與匯編程序員相比,C語言程序員不需要知道處理器中的寄存器等硬體細節。
13、最C的語言代碼首先自動轉換為匯編代碼。
『伍』 匯編與C語言在編程方面有什麼不同
匯編語言跟貼近底層,它的所有指令都需要編程者自己設計,它需要編程者通過指令去訪問、操作具體的寄存器,內存地址等,而c語言有自帶的庫函數等比匯編語言更精簡,更貼近自然語言,它屏蔽了一些繁瑣的底層操作,並不要求編程者理解數據、程序在機器底層的執行情況
『陸』 C語言和匯編語言的區別是什麼
區別如下:
(1)兩者編譯組成不同。匯編語言是將由0、1組成的機器語言用具有簡單語義的英文代碼表示,而C語言不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等。
(2)兩者被計算機識別的路徑不同。匯編語言通常用於對硬體的直接操控。而且C語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行。
(3)兩者用處不同。匯編語言通常用在程序中最核心的、控制硬體的代碼,一方面是安全,另一方面提高運行速度。而C語言通常用在計算機外用功能上。
(4)兩者學習難易程度不同。匯編語言所需要的編繪知識很多很復雜,經常被開發者使用。而C語言是一門很簡單方便的語言,編程者也就不需要有太多的專業知識。
計算機語言(Computer Language)指用於人與計算機之間通訊的語言。計算機語言是人與計算機之間傳遞信息的媒介。計算機系統最大特徵是指令通過一種語言傳達給機器。計算機語言從低級到高級可以分為:
(1)機器語言,即由0、1組成的機器硬體可以識別的語言;
(2)低級語言,即匯編語言
(3)中級語言,如C語言
(4)高級語言,如C++,JAVA,C#等。
(6)匯編與c語言擴展閱讀:
如今通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言和機器語言實質是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,容易識別和記憶。源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於低級語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如流行的vb、vc、foxpro、delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:解釋類和編譯類。
『柒』 c語言和匯編語言的區別
C語言是需要經過機器語言解釋和翻譯才能被硬體執行的高級語言。
匯編是一種直接對於硬體操作的語言,屬於低級語言,面向硬體。
另外:兩種語言的語法也是完全不同的。你可以在網上找一些例子看看就知道區別了。
『捌』 匯編語和c語言一樣嗎
不一樣,可以這么認為,c在匯編上外包了一層
就是說c的處理方式最後還是要編譯成匯編代碼再連接的,比如那些編譯器中間生成的匯編代碼。
在一些嵌入式系統上,c和匯編的重要性幾乎相同
『玖』 匯編語言和C語言有什麼區別
1:
匯編語言是面向具體CPU及其硬體結構的語言
C語言可以做到硬體無關性
2:
匯編語言效率較高
C語言效率相對較低
3:
匯編語言是非結構語言,可讀性較弱
C語言是結構語言,可讀性較強
4:
匯編語言基本沒有可移植性
C言可移植性很強
5:
匯編語言沒有函數庫,所有代碼需要自己組織
C語言有豐富的函數庫可供調用。
『拾』 匯編語言與C語言有什麼區別
1、操作復雜程度的不同
c語言,與匯編語言相比,c語言在更加接近人的一般思維,因此在程序的設計過程中比較容易操作,此外在進行一些復雜的操作,運算時,c語言比匯編就要簡單很多,尤其是c語言中的豐富的函數庫,可以直接實現一些原本很復雜的功能,並且從代碼量來說任意一個c語言程序,通過反匯編之後變成匯編語言程序,其長度都可能要增加好幾倍。
2、使用范圍的不同
c語言程序的事件將會只是編寫匯編語言程序的幾分之一,從編寫程序的效率上來說c語言無疑更高,此外C語言是高級程序語言因此可移植性較好,不太受到到硬體設備的限制。
在實現一個功能時,匯編語言可以直接奔著目標去,而C語言則是給你提供了一種對於對於這種問題的普遍處理辦法,不具有針對性,因此會有許多多餘的在這個問題中不需要的過程,因此可能回事程序較大,運行較慢。相對與匯編語言,C語言更加適合一些較大型項目的開發。
3、運行的速度和效率不同
程序沒有了匯編語言計算機直接就無法運行,因為匯編語言是基於計算機底層硬體的編程,通過它實現了對cpu,內存,硬碟以及外界設備的直接操作,因為直接所以匯編語言在程序的大小,執行的速度與效率方面幾乎無可比擬,但是也是因為直接,所以匯編程序難以移植,且完成相同的操作代碼量太大,在進行一些大的項目是,單獨使用匯編進行編程幾乎不可能實現。