1樓:亂七胡說八糟亂想
因所有語言都最後要轉換成機器碼,因計算機只會按這機器碼進行執行,而組合語言就是這機器碼的助記符(幫助記憶的符號),所以它就是直接可操作機器的語言。c語言是一種中級語言,它也可進行機器的直接操作,只是還要經過一些設定或轉換才行。
2樓:匿名使用者
組合語言可以控制一些特定的暫存器進行資料的操作
如可以將一個數放到ax暫存器中(mov ax,200h)
c語言可以呼叫組合語言的**,但c語言本身不能對硬體直接進行操作,你編寫的c語言最終需要變成機器語言的二進位制**才能執行,不能通過一些c語言的語法控制某個硬體
3樓:
組合語言可以說是和機器指令對應的,c語言大部分可以,但是有一些不行。c語言最終被編譯器編譯成彙編指令的。
4樓:
組合語言可以控制某些暫存器的資料操作
ax暫存器(mov ax,200h)上的數字
c語言中呼叫組合語言**,但c語言本身不能直接在硬體上執行,你寫c語言翻譯成機器語言的二進位制**控制硬體,最終需要執行,而不是由一些c語言的語法
5樓:潘達
我不知道你說的是哪方面,如果是類似微控制器的裸機程式就都可以,c語言一般只是替你做了一些預設處理,比如你定義一個變數,c語言編譯器會根據是自動變數還是全域性變數以及已經定義的變數記憶體位置來給該變數提供記憶體,如果是彙編根本就不存在定義變數,要你自己記住哪個記憶體是什麼資料,或者把該地址做成一個巨集代替變數。。。怎麼使用暫存器,都是c語言認為的預設的方式,但不想使用預設方式就可以使用一些特殊關鍵字來告訴編譯器使用哪個暫存器哪個地址存資料,但這些關鍵字都不是標準c語言定義的,是開發商擴充套件的。。。。
其實c語言目的就是簡化的彙編,彙編可以做的c語言也行,實在覺得不爽,可以在c語言程式中加彙編。。。。
都說c語言可以直接操作硬體?
6樓:金魚
不能。首先,c語言不能夠直接對硬體進行操作。從本質上來說,連組合語言都不可以。只有機器語言能夠直接操作硬體。
其次,c語言要操作硬體是必須經過一系列的編譯轉換。最終它會成為0101的機械碼,這個時候它根本不是我們所能夠理解的c語言了。
以gcc編譯器為例,這個可以分為四步。
第一步是預處理,包括語法檢查等工作。
gcc -p abc.c
第二步由源程式生產組合語言**。
gcc -s abc.c
會生成abc.s檔案,這個檔案裡就是彙編**。
第三步編譯器生成目標**,一個原始檔生成一個目標**。
gcc -c abc.c
會生成abc.o
第四步聯結器從目標**生成可執行檔案。
gcc abc.o
最後,相對來說,c語言在高階語言當中是最貼近物理層面的語言。它也被稱作高階語言裡面的低階語言。因為它很多方面都非常貼近硬體。
典型的就是指標,這是一種通過實體地址直接操作記憶體的變數。
7樓:匿名使用者
基本上是個語言都可以操作硬體。不過通常在高階語言中比如c,vb,c#,delphi等你很難在不看說明文件就能操控的,也就是說你必須要看他們的有關這方面的文件。高階語言在對硬體操控也有很強的優勢,就是他們對硬體的操控通常已經被封裝過了,用起來容易些。
而且,這樣的高階語言程式設計操控硬體時,通常比較依賴系統,系統環境變數等。在不同的系統中比如windows,linux下對硬體的處理也是很不同的,依我個人之見,linux下對硬體的操控更容易些。
delphi在這方面表現非常出色,主要原因是,你比較容易得到這方面的資料。
再說組合語言,理論上,它是很強的,對於操控硬體,實際的操控效率也相當的高。但,他的程式設計相對難得多得多。很少有這方面的資料,一般人找不到。
沒有幾年的功底,你是寫不出來的。他的依賴性很強。有些功能還得自己做封裝,以後好用。
但是,你要是想做不太難的硬體控制,這個還是比較容易的。比如直接讀硬碟的指定道,塊,;讓機器發鳴聲,等等。
8樓:栩箭
我只能說, 其他語言也有可以直接操作硬體的.
比如組合語言.
9樓:匿名使用者
vb不行
語言從低階到高階,語義功能越來越完善(意思是寫出來的程式越來越接近人類語言),但是同時失去了對硬體的直接操縱能力,而且執行效率越來越低。
比如最低階的機器語言(全部是各種數字),沒學過根本看不出是什麼意思,但是對硬體操縱能力最強,想怎麼讓硬體做硬體就會怎麼做。執行效率為百分之百。
其次是組合語言,組合語言稍微向英語邁進了一點,但是很有限,一般人也看不明白的,比如這句
mov a,b
誰知道什麼意思!其操縱硬體能力也極強,隨心所欲,執行效率基本也是百分之百。
而c語言介於高階和低階之間,**容易理解,還可以用指標操縱硬體(不過還是很侷限的,cpu就無法之間操縱了),執行效率為80%,對於一直語言來說很不錯了。
basic語言完全是高階語言,**簡單,但是不具備操縱硬體能力,也就是你想寫個**直接讓記憶體怎麼怎麼樣,記憶體不聽你的,只聽編譯好的程式的。而且執行效率也很低了。
為什麼彙編和c語言可以直接控制硬體
10樓:安可可愛我別走
彙編和c都要經過編譯處理轉化成機器語言才能控制硬體,而機器語言就是用0和1組成的**,表示高低電平,硬體識別的是高低電平,所以組合語言和c並不是能直接控制硬體,還要經過編譯處理的。
對了,當然和cpu的指令集有關了,不同的cpu的指令集稍微會有所差異,但是都會給出與一般的cpu的不同指令的資料。
11樓:匿名使用者
去學學微控制器你就明白一點了
組合語言和c語言各有什麼特點?
12樓:匿名使用者
組合語言直接作用於微控制器的硬體環境,控制直接,精準,所以要精確控制,時序特別嚴格的要用組合語言。但過分依賴硬體,不可移植。
c語言結構化強,不完全依賴於硬體環境,可移植性強,但控制時序較為粗略,不能做到精確控制。
13樓:王敏郭浩
組合語言比c語言低階一些 但是隻要學好一個 很好的話 這樣以後工作一般就沒問題了
14樓:霹靂遊俠
首先組合語言是低階語言而c語言是中級語言。這裡所謂的高階低階並不是指的高階就是好的,而是越接近人類自然語言的語言越為高階語言,反之越接近機器語言的為低階語言。
所以優缺點如下:
c語言的優點:適用範圍廣,可移植性強,開發週期短,缺點:比組合語言的執行效率低
彙編的優點:執行效率高,能夠對cpu中的暫存器直接操作缺點:適用範圍窄,不同的機器對應不同的彙編指令,開發週期短,可移植性差,開發週期長。
15樓:匿名使用者
彙編主要是瞭解微控制器是怎麼執行操作
c語言和組合語言的區別?
16樓:業運城誠
c語言是需要經過機器語言解釋和翻譯才能被硬體執行的高階語言。
彙編是一種直接對於硬體操作的語言,屬於低階語言,面向硬體。
另外:兩種語言的語法也是完全不同的。你可以在網上找一些例子看看就知道區別了。
17樓:尾束
1:組合語言是面向具體cpu及其硬體結構的語言c語言可以做到硬體無關性
2:組合語言效率較高
c語言效率相對較低
3:組合語言是非結構語言,可讀性較弱
c語言是結構語言,可讀性較強
4:組合語言基本沒有可移植性
c言可移植性很強
5:組合語言沒有函式庫,所有**需要自己組織c語言有豐富的函式庫可供呼叫。
c語言和組合語言的區別是什麼?
18樓:郭玉枝褚釵
這裡所說的語言就是跟電腦溝通的手段
電腦只知道什麼時候開哪個通道(1狀態),什麼時候關哪個通道(0狀態),那麼傳遞開關資訊就需要資訊的進入(機器語言),組合語言實質上是機器語言的助記符(讓語言更容易讀懂,實質上是一樣的,翻譯過來就是一系列的0和1),而c語言要通過編譯器才能編譯成機器語言,也就是多套了一層,它沒辦法與機器語言直接一一對應。這是最本質的區別吧,不知道能不能理解,還有一些其他區別都源於此上。彙編直接與cpu溝通,效率更高,但是編起來也比較麻煩,容易出錯
19樓:牧起雲高媼
組合語言是用語言直接控制硬體,由硬體間接達到某種控制效果。
而c語言是一種比較高階的語言,編寫者可以不用去考慮硬體而直接去命令計算機達到這種控制效果。換而言之,組合語言對描述過程更注重,c語言之類的高階語言更注重描述結果。例如組合語言中變數的賦值語句為
mova
b可以解釋為將a暫存器中的值複製至b暫存器。而c語言中直接表示為 b=a,解釋為使b=a
晶片都是由閘電路構成。門有通有斷,對應在計算機**裡是二進位制的1或0。如果直接進行人機對話,只能輸入由0和1組成的**才能交流。
這樣的**太長,而且難記。所以人們想出一個辦法,相互約定,用人們易讀懂的特定表達方式去表達特定的計算機**,再將此表達方式翻譯成計算機能直接讀懂的二進位制**。這樣的一套方便人們表達的表達方式被稱為計算機語言。
20樓:索秀珍尤畫
組合語言屬低階語言,而c語言是高階語言,所謂高階語言就是更容易被人們理解的語言,其實組合語言能實現的功能往往也能通過c語言來實現,甚至用c語言會更簡單,但是組合語言有一個優勢是其他任何語言所不具備的,這也是為什麼組合語言一直能在程式設計中佔有一席之地,那就是組合語言對硬體的直接控制,也就是說他能直接對硬體操作,可以繞過作業系統等等之類。雖然有的領域其他程式設計也能實現,但是在很多地方往往是組合語言能更加簡單,更加完美的完成。而且學好了組合語言你就能對cpu是怎麼工作的有了清晰的認識,所以學計算機專業的一般都會學組合語言。
21樓:瀧賢廖琴
所謂語言就是人和計算機交流的一中工具,計算機只能識別機器語言,也就是由二進位制**編寫的,而c語言就是人所熟悉的一種語言,可以經過一些軟體轉換成機器語言,比如:vs...
22樓:僪玉蘭夷茶
彙編寫的**效率高,但不容易繼承(看懂)
c語言寫的程式結構清楚,容易移植,可**相對會長一些如果對**空間要求不高的話,就使用c語言吧!
這應該也是個趨勢吧。
個人意見,僅供參考!
23樓:項穎卿有衣
c語言為高階語言,容易理解、編寫,但c語言編寫的程式則需要經過彙編,然後再像彙編程式那樣轉換為機器語言才能執行;
組合語言是比機器語言高一級的電腦語言,可以直接經過一道工序就能轉換機器能夠識別的機器語言的程式執行。
24樓:沙裡波特
用組合語言程式設計,就像,你自己開車。
這輛車的各種操作方法,你必須得熟練掌握。
用 c 語言程式設計,就像,你坐計程車。
你只要會說人話,司機就能把你送到目的地。
為什麼要c和彙編混合程式設計?
25樓:匿名使用者
依我的看法,上面兩位說的都不對:
一樓:組合語言是低階語言直接往硬體的暫存器裡寫入東西:
其實c語言和組合語言都一樣,都會編譯成二進位制檔案機器語言燒錄到微控制器中,所以沒有一樓所說的區別
二樓:在c中也不會有資料損失的,如果你定義好資料型別的話。
微控制器中是將c編譯成彙編,然後根據彙編編譯成機器語言---可執行檔案;
其實微控制器中經常在c中嵌入彙編,主要是因為時間的關係,因為一條組合語言執行的時間都是可以知道的,而c指令執行的時間是不可知的,因為c編譯器不一樣,編譯後的彙編也是不一樣的,如果用匯編就不會有這種情況。所以在一些精確延時的場合,要嵌入彙編
另外,c的可移植性較強,不同的微控制器裡,功能要求相同的可以直接拿去用
總之,彙編是程式設計師可以自己翻譯成機器語言的,所以微控制器的執行是可以完全掌握的
c語言可以直接對硬體進行操作嗎,C語言可以直接對硬體進行操作嗎
不能。首先,c語言不能夠直接對硬體進行操作。從本質上來說,連組合語言都不可以。只有機器語言能夠直接操作硬體。其次,c語言要操作硬體是必須經過一系列的編譯轉換。最終它會成為0101的機械碼,這個時候它根本不是我們所能夠理解的c語言了。以gcc編譯器為例,這個可以分為四步。第一步是預處理,包括語法檢查等...
組合語言的DW是什麼意思,組合語言中的DW怎麼用,能舉個例子說明一下嗎
dw 是定義2位元組空間的意思。dw屬於彙編的一個偽指令,dw定義字型別變數,一個字資料佔2個位元組單元,讀完一個,偏移量加2。db定義位元組型別變數,一個位元組資料佔1個位元組單元,讀完一個,偏移量加1。dd定義雙字型別變數,一個雙字資料佔4個位元組單元,讀完一個,偏移量加4。彙編指令既不控制機器...
彙編中是什麼意思,組合語言中 是什麼意思
飛鷹 是組合語言中的一個預定義符號,等價於當前正彙編到的段的當前偏移值。組合語言 assembly language 是一種用於電子計算機 微處理器 微控制器或其他可程式設計器件的低階語言,亦稱為符號語言。在組合語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或運算元的地址。在不同的裝...