久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 57670|回復: 251
收起左側(cè)

C語言與匯編,學什么?

  [復制鏈接]
ID:123289 發(fā)表于 2017-2-28 12:39 | 顯示全部樓層 |閱讀模式
C與匯編:

C:經(jīng)編譯后,成匯編。
匯編:是自己“完成”了C的工作。

C:是從通用化出發(fā)的,考慮了單片機的特點,極大地減少了人為的錯誤與不合理。
匯編:因人為異,有許多技巧是C無法做到的,所以匯編更靈活,不過這建立在精通的基礎上。匯編稍有不小心就會出錯,要命的是:不易察覺。

C:由于通用,C只能按部就班,因此程序長,重復多,運行時間多。
匯編:因靈活程序方式,可以節(jié)省內(nèi)存,節(jié)省運行時間。
通常,匯編程序會比C少用內(nèi)存及時間在30%以上。但大多數(shù)情況下,內(nèi)存現(xiàn)在不是問題了,時間也不會太緊。所以節(jié)省內(nèi)存與時間的意義不大,但也有特例。

說明一下:
C是用堆棧傳遞參數(shù)的,但每次參數(shù)要彈出壓入,所以傳遞時有多花一點時間。匯編傳遞參數(shù)直接到達目標,快多了。
C一個子程序一個包。而匯編的一個子程序可以切入跳轉(zhuǎn)另一個子程序中,以節(jié)省內(nèi)存。

特別的一個實例:時間內(nèi)存要求高的項目(前提:用51單片機):
16*64的LED點陣顯示 + 14個LED數(shù)碼管顯示 + 中文漢字顯示處理 + 無線收發(fā) + 生產(chǎn)記錄(計劃、產(chǎn)能、次品、待產(chǎn))+ 年月日精確時間(普通晶振,日差小于一秒)。
單就解決顯示的掃描閃動(驅(qū)動顯示1136個LED段,不得不分8次掃描,1136個點時刻會變,要占的內(nèi)存多,顯示處理時間多),程序運行需要時間(漢字解碼+無線通訊+時鐘+掃鍵……)。
解決掃描顯示的閃眼與程序任務多,在時間上的矛盾尤其特出,必須精心策化。這時用C來策化就捉襟見肘了,因為C本來就耗時。

C的優(yōu)勢:
1、用匯編需用很強的優(yōu)化寄存器及內(nèi)存的能力,用C的好處是,不需要你去考慮這些復雜的問題,使得編程簡單。
2、 C出錯的機率遠小于匯編,匯編稍有不小心就會出錯,要命的是:不易察覺。
3、 C有團體合作的優(yōu)勢, 這是 C的特點,便于交流。如果是匯編,很難與他人交流。
4、 對于運算程序, C已有前輩們做好了運算庫,很難想像一般人能用匯編去:開方、三角函數(shù)(當然,也可以讓C先編譯,再做成匯編的庫)。
5、 C 有龐大的公用程序庫(子程序),這對于程序量大的程序更有優(yōu)勢。匯編的程序庫多為個人積累,很難得到。

其實C只有一個優(yōu)點!看一下單片機程序結(jié)構(gòu)就明白了:
單片機程序通常結(jié)構(gòu):1硬件初始化、2軟件參數(shù)初始化(含內(nèi)存安排)、3主程序(事件處理)、4中斷程序。
匯編:以上一切由你處理,除非你已獲得了很多相關(guān)的匯編數(shù)據(jù)庫。
C:在你未寫程序之前已為你做了什么?
1、硬件初始化,C僅能做很少的部分。(注:這就是為什么在做硬件時你總是要一行行慢慢寫的原因,與匯編比幾乎沒有優(yōu)勢)
2、軟件參數(shù)初始化(含內(nèi)存安排),C完成其中的大部分,你定義一下就OK了,不用就煩放在哪里,也不會錯,錯了報警重來。(注:比匯編操心少啊)
3、主程序(事件處理),C有大量的庫函數(shù)可以調(diào)用,可以減少你大部分工作量。(注:比匯編操心少啊)
4、中斷程序。調(diào)用庫的機會不多(注:本人不建議在中斷中完成事件處理,而建議盡最大可能只在中斷中做一些事件標志!而讓事件在主程序中依標志進行處理,因為中斷有優(yōu)先權(quán),處理事件往往需要的時間多,會耽誤其它事件的處理,如這時按鍵就會偽“失靈”)。

可見 C的這個優(yōu)點是,C能幫你完成程序中的很大一部分工作。(其實是你調(diào)用了前輩們已做好的工作,這此工作是:編譯器所做的、程序庫所做的)

道理很簡單:一件事能用工具設備完成的盡量用,無法用時用人工。C就是寫單片機程序的一個極好的“工具設備”。

用C的風險在哪里?
一個程序什么都OK了,就缺一些庫文件!找又找不到。
如果你會匯編,就可以自己做這個找不到的這個庫。

總之C適合大多數(shù)的人,匯編僅適用很少的一部分人,但用匯編寫程序的人,一定是高手,否則他駕馭不了單片機。
做匯編需要徹底地了解單片機,做C無需要了解到很底層。而要精通單片機,匯編又是最佳手段。

個人建議:所有學單片機的同學學C,C是在大勢所趨,也適合絕大多數(shù)人。特別是團體作戰(zhàn),未來不是單打獨斗的年代!
也建議那些想精通單片機的同學,學好匯編,匯編天馬行空,不受庫存文件、頭文件限制,不受C的規(guī)矩。當然不能放棄C。

一但學好了匯編,你再打開你的C編譯后的匯編看看,這時就知道缺點在那里,就能提高自己C語言的水平。也能輕松掌握C當中繞人的難點。


評分

參與人數(shù) 4黑幣 +45 收起 理由
yousunny + 30 很給力!
青蛙打傘 + 5 絕世好帖!
zh234 + 5 很給力!
h832ea + 5 很給力!

查看全部評分

回復

使用道具 舉報

ID:1058626 發(fā)表于 2022-12-21 20:35 | 顯示全部樓層
無法直接說清哪個用處大,不過用c的開發(fā)者肯定比匯編的多。  優(yōu)缺點:  c開發(fā)比匯編容易很多,隱藏了cpu細節(jié),標準庫運行庫等很豐富,免費編譯器、ide和開源代碼很多,能輕松開發(fā)多種平臺程序,基本可以認為硬件無關(guān),開發(fā)起來模塊化程度高,邏輯性和可讀性高。  匯編需要時刻關(guān)注cpu細節(jié),沒太多的庫可用,免費編譯器和、ide不多,每種編譯器對語言的語法等要求差異大,代碼模塊化程度低,邏輯混亂難以閱讀,具有很大的平臺相關(guān)性和硬件相關(guān)性,所以開發(fā)起來要更吃力。  相比而言,c更受歡迎,但是匯編也有其優(yōu)勢,首當其沖的就是性能,如果c做出來的代碼性能難以優(yōu)化而且性能不足,匯編是無可替代的剛需。其次,匯編是嵌入式開發(fā),比如紅綠燈等功能硬件,匯編能更更能滿足需要。再次,匯編逆向愛好者們的家常菜,把別人的程序直接反編譯,可以輕松得到匯編源代碼。第四,系統(tǒng)底層功能,比如驅(qū)動等,可以用匯編開發(fā)。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:73992 發(fā)表于 2022-12-31 21:41 | 顯示全部樓層
對于安全,可靠性,精度,性能要求高的場合用匯編是適宜的。說c用的人多的,是因為區(qū)域做高精度設備和裝備的公司少像醫(yī)學檢測設備,化驗設備。科技研發(fā)型企業(yè)也不多,像手機系統(tǒng),電子音樂,芯片,模擬感官,等等。基礎科技研發(fā)公司也不多,比如光學 化學 微生物,數(shù)學 等等自然科學。這是環(huán)境造成的,不是c比匯編好造成的。之所以看到用C的多,是因為像收音機,熱水器,電子表,流水燈等等,遠程水表,發(fā)光廣告字,像這些場合,用匯編相當于大材小用了。
匯編語言是質(zhì)樸的語言,世界上很多宏偉巨著都是用最質(zhì)樸的語言寫的。那些書上甚至沒有形容詞,因為形容詞無法準確描繪那些場面,只有用最質(zhì)樸的語言與方法,才能做到。
C就像是形容詞,什么萬里無云,什么晴空萬里,風和日麗,等等。用這些形容詞也能拼出文章出來。
如果是個人愛好,或者diy,或者自己研究什么項目的,我推薦匯編。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:247571 發(fā)表于 2023-9-5 10:53 | 顯示全部樓層
這個有意思,能夠深入單片機技術(shù)。每個人的發(fā)言我都看過了,都比較片面。我91級計算機專業(yè),大學畢業(yè)后,一直做單片機開發(fā)工作,一直用匯編語言寫單片機項目,到2002年逐漸改用Franklin C51,也就是現(xiàn)在keil的前身。基本上市場上常見的8位,16位,32位單片機我都開發(fā)過產(chǎn)品。
要寫好單片機,必須要精通單片機的匯編語言,c語言也要精通。小米的雷軍早年間用PC的匯編寫了很多PC端的程序,精髓都在匯編里面。單片機也一樣,能夠靈活運用匯編語言,就能夠?qū)懗龈咝У拇a,用c的達不到匯編的高效率的;特別在高性能單片機,例如stm32單片機,寫出好的嵌入式軟件,要用匯編寫好bootloader引導程序,中斷代碼,程序架構(gòu),代碼的堅固性、程序的實時性(不卡),都是有匯編來保證的。32位單片機里面有設計專門為OS打造的寄存器和軟件中斷等資源,如果用匯編寫,那效率會很高的。c語言用來完成app應用比較高效,這里指的是開發(fā)項目時間比匯編快。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:167113 發(fā)表于 2017-3-1 08:21 | 顯示全部樓層
我的很多朋友勸我學習 c,因為c資源多,移植容易.
回復

使用道具 舉報

ID:166552 發(fā)表于 2017-3-1 15:51 | 顯示全部樓層
初學用C好,要想真正領(lǐng)會單片機的秒處,還是弄懂匯編。
回復

使用道具 舉報

ID:153041 發(fā)表于 2017-3-1 17:02 | 顯示全部樓層
高級語言存在的意義就是解放軟件生產(chǎn)力。所付出的代價就是編譯,還有一些效率上的損失(現(xiàn)在也可忽略)。為什么還要強調(diào)匯編,因為機器只認識匯編,鉆到最下面就是匯編。
回復

使用道具 舉報

ID:167489 發(fā)表于 2017-3-1 19:39 | 顯示全部樓層
c吧,c 普遍
回復

使用道具 舉報

ID:167525 發(fā)表于 2017-3-1 21:29 | 顯示全部樓層
鑒于c的廣泛還是學c,因為匯編現(xiàn)在不是很普及
回復

使用道具 舉報

ID:167560 發(fā)表于 2017-3-1 23:11 | 顯示全部樓層
建議學C,C簡單易懂,精通C后再學匯編
回復

使用道具 舉報

ID:167581 發(fā)表于 2017-3-2 09:37 | 顯示全部樓層
C語言是基礎,匯編是手段!
回復

使用道具 舉報

ID:167586 發(fā)表于 2017-3-2 09:59 | 顯示全部樓層
從C入手吧,匯編對芯片來說效率高,可苦了寫代碼的了。
回復

使用道具 舉報

ID:167592 發(fā)表于 2017-3-2 09:59 | 顯示全部樓層
肯定先學c,畢竟c是主流。匯編只要看得懂就行
回復

使用道具 舉報

ID:167586 發(fā)表于 2017-3-2 10:00 | 顯示全部樓層
建議C開始,匯編寫起來效率太低。
回復

使用道具 舉報

ID:167592 發(fā)表于 2017-3-2 10:00 | 顯示全部樓層
還是建議學c,匯編語言只要看得懂會簡單的用就行了
回復

使用道具 舉報

ID:64017 發(fā)表于 2017-3-2 10:24 | 顯示全部樓層
我的很多朋友勸我學習 c,因為c資源多,移植容易.
回復

使用道具 舉報

ID:167640 發(fā)表于 2017-3-2 13:34 | 顯示全部樓層
看專業(yè)書和教程比較好 上手快
回復

使用道具 舉報

ID:167643 發(fā)表于 2017-3-2 13:40 | 顯示全部樓層
先學好C,后面再大概了解匯編指令就好,匯編就是一個輔助,用的不多。
回復

使用道具 舉報

ID:167643 發(fā)表于 2017-3-2 13:42 | 顯示全部樓層
先學好C,后面再大概了解下匯編就好。
回復

使用道具 舉報

ID:167641 發(fā)表于 2017-3-2 14:48 | 顯示全部樓層
新手建議從C學起
回復

使用道具 舉報

ID:125378 發(fā)表于 2017-3-3 13:28 | 顯示全部樓層
肯定學習C語言啊,C語言用的廣泛,易于移植
回復

使用道具 舉報

ID:167866 發(fā)表于 2017-3-3 13:45 | 顯示全部樓層
學C吧 C簡單 而且夠用了
回復

使用道具 舉報

ID:160607 發(fā)表于 2017-3-5 11:28 | 顯示全部樓層
對于90%以上的人C就可以了,做項目很少用匯編的,維護性差,一致性差。原來的成本問題及效率問題,現(xiàn)在基本差異不大了。
回復

使用道具 舉報

ID:168293 發(fā)表于 2017-3-5 13:58 | 顯示全部樓層
都要學!c移植性好,匯編不可移植,在一些要求高性能的地方必須用匯編優(yōu)化,用keil,iar都有反匯編工具的,自已寫的c直接轉(zhuǎn)為匯編!
回復

使用道具 舉報

ID:168293 發(fā)表于 2017-3-5 14:28 | 顯示全部樓層
都要學,C移植可讀性好,匯編不可移植,在一些需要高性能的場合操作系統(tǒng)內(nèi)核要用匯編,用編繹器的反匯編工具可以方便的把你寫的C轉(zhuǎn)為匯編,方便學習!
回復

使用道具 舉報

ID:168453 發(fā)表于 2017-3-6 09:18 | 顯示全部樓層
xue C 吧,匯編基本沒人用了
回復

使用道具 舉報

ID:146468 發(fā)表于 2017-3-6 09:52 | 顯示全部樓層
這篇文章太好了,精辟。
回復

使用道具 舉報

ID:168481 發(fā)表于 2017-3-6 10:33 | 顯示全部樓層
學C語言好 ,一開始學C容易上手,匯編艱澀難懂
回復

使用道具 舉報

ID:168489 發(fā)表于 2017-3-6 11:01 | 顯示全部樓層
學習c吧  我就是學習的這個
回復

使用道具 舉報

ID:168598 發(fā)表于 2017-3-6 17:06 | 顯示全部樓層
還是學C語言吧  不過我學了C#
回復

使用道具 舉報

ID:140559 發(fā)表于 2017-3-6 20:34 | 顯示全部樓層
初學c比較實用,資源多,可移植性高
回復

使用道具 舉報

ID:168677 發(fā)表于 2017-3-6 21:22 | 顯示全部樓層
C啊   匯編會有專門的人去做,這種語言了解就行了,我們可是要干大事的人a
回復

使用道具 舉報

ID:168412 發(fā)表于 2017-3-6 21:33 | 顯示全部樓層
之前先學的C,然后學的匯編。覺得起步邊用邊學,理論結(jié)合實際比較好
回復

使用道具 舉報

ID:168689 發(fā)表于 2017-3-6 22:00 | 顯示全部樓層
買幾本經(jīng)典的C的書。網(wǎng)上可以百度到基礎先打好
回復

使用道具 舉報

ID:169050 發(fā)表于 2017-3-8 10:01 | 顯示全部樓層
建議學習c語言,現(xiàn)在畢竟簡單方便
回復

使用道具 舉報

ID:169096 發(fā)表于 2017-3-8 13:27 | 顯示全部樓層
學c比較實用,資源多,可移植性高
回復

使用道具 舉報

ID:169113 發(fā)表于 2017-3-8 14:19 | 顯示全部樓層
一般可以先學一些匯編基礎,電子專業(yè)都會學到,再學c就不叫容易理解
回復

使用道具 舉報

ID:169074 發(fā)表于 2017-3-8 14:25 | 顯示全部樓層
先學習C吧,容易上手能夠提高學習積極性,先學匯編的話,容易打擊積極性
回復

使用道具 舉報

ID:169114 發(fā)表于 2017-3-8 15:18 | 顯示全部樓層
先C后匯編51黑因你而精彩
回復

使用道具 舉報

ID:68585 發(fā)表于 2017-3-8 15:20 | 顯示全部樓層
匯編可以點基礎,然后去學C,如果沒有學匯編,突然學C,對指針理解比較吃力。
回復

使用道具 舉報

ID:165270 發(fā)表于 2017-3-8 21:58 | 顯示全部樓層
學習C比較好,效率高,可移植,與硬件無關(guān)。
回復

使用道具 舉報

ID:165046 發(fā)表于 2017-3-9 15:24 | 顯示全部樓層
先學C吧,C好理解(個人覺得)好入手,會用了在轉(zhuǎn)向匯編
回復

使用道具 舉報

ID:169505 發(fā)表于 2017-3-9 21:50 | 顯示全部樓層
梳理得挺周全的  給力
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区在线观看视频 | 精品一区二区三区免费视频 | 亚洲视频在线看 | 免费中文字幕 | 国产在线一区二区三区 | 日韩国产精品一区二区三区 | 国产区免费视频 | 影音先锋久久 | 国产人免费人成免费视频 | 国产成人免费视频 | 国产成人在线播放 | 99精品免费视频 | 日一日操一操 | 在线观看欧美一区 | 精品国产免费一区二区三区五区 | 精品动漫一区 | 亚洲毛片在线观看 | 国产99久久久国产精品下药 | 极品粉嫩国产48尤物在线播放 | 久久av一区二区三区 | 中文字幕精品一区二区三区精品 | 亚洲免费三级 | 久久精品国产亚洲一区二区三区 | 欧美极品少妇xxxxⅹ免费视频 | 国产成人福利 | 日韩一区二区三区在线视频 | 久久精品福利视频 | 九九在线视频 | 在线视频91| 日韩高清国产一区在线 | 成人网视频| 在线日韩不卡 | 日产精品久久久一区二区福利 | 国产精品日韩在线 | 国产福利91精品一区二区三区 | 国产夜恋视频在线观看 | 久久国产精品免费 | 蜜桃色网 | 日日摸日日添日日躁av | 免费av直接看 | www.com久久久 |