{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

單片機用C語言編程很好學,為什么還要用匯編呢?

wmuiwmui 回答10 收藏1
問題描述:學校里面學習單片機,不做流水燈之類實驗,做這些
收藏問題

10條回答

itvincent

itvincent

回答于2022-06-22 18:37

C語言是發展趨勢,匯編可以幫助學生熟悉單片機內部結構。

首先匯編語言和C語言都是編程語言,匯編是一種機器語言直接面對底層,與單片機底層硬件構架息息相關,相對于C語言,是一門低級語言,C語言面向過程的語言,在編譯執行會轉為匯編在生成單片機可執行文件。是一門高級語言,兩種語言各有優缺點。

一,C語言/匯編優缺點。

1學習難度。

匯編因為的理解難度和開發難度比C語言大,所以學習難度大,都是對寄存器操作,學習匯編就要學習這個單片機的硬件結構和基本組成、存儲器訪問方式、單片機I/O操作時序、定時計數器、中斷處理、指令系統、尋址方式等知識點;而且每個系列芯片的內部寄存地址和寄存器都有差異,維護起來也十分困難。

2執行效率

匯編實時性比C語言好,占用單片機資源少,生成的執行文件更小,匯編語言程序直接被轉換成機器指令。而C語言編譯過程會先形成匯編,在轉為機器語言。

3移植性

C語言比匯編移植性好,程序可讀性比匯編要強。實現相同功能,C語言的代碼數量會比較短,對于匯編來說,每一種單片機匯編語言都不一樣。所以移植性差。

C語言通過結構體,指針映射寄存器地址,當有需要時候,只需要簡單更改寄存器地址,或者更改寄存器定義,即可滿足程序和工程的移植。

4,調試

C語言調試方便,例如STM32開發過程中,可以使用jlink通過SWD進行在線仿真,調試各語法,語句執行情況,還可以查看各變量值的變化,很容易就能定位到BUG問題。而匯編調試困難,很多時候難以很快定位問題。

二,單片機開發不一定都能用C語言

單片機在上個世紀七十年代開始出現,早期都使用匯編語言進行開發,隨著技術的發展進步,制程工藝快速提升,單片機的處理速度越來越快,很多單片機的開發環境都使用C語言編譯,生產二進制文件。

但因產品BOM成本要求,很多的低端單片機還是OTP一次性燒錄,程序空間小,許多的型號,還是在用匯編進行開發,如義隆,松翰等。

三,學習匯編并不是無用

1,大學時學習匯編,有助于理解單片機系統構架,指令集,和寄存器尋址等知識點,也促進對于C語言的指針的用法。

2,目前的linux開發的部分底層bootload文件,或stm32的.s啟動文件就是使用匯編語言的文件,都使用匯編進行底層引導。修改堆棧,或者程序起始運行的位置,都需要在對應文件中修改。或者學習UCOS也會涉及修改啟動文件內相關數據。

四 單片機發展趨勢:C語言

當前設備半導體的成本,隨著制程工藝的提升而降低,越來越多的低端8位單片機開始從匯編轉向到C語言,單片機也往更高集成度,更強大功能發展。

所以學習單片機不一定要精通匯編,但對匯編有一定了解,對學習單片機有幫助,只有在某一些功能需求時,可以適當運用匯編。

評論0 贊同0
  •  加載中...
RiverLi

RiverLi

回答于2022-06-22 18:37

現在一般單片機都支持C語言和晦澀難懂的匯編語言,在許多介紹單片機應用技術的教材中有相當一部分是用匯編語言編寫的這說明匯編語言在學習單片機和編寫單片機程序時尤其獨特的優勢,現在我把學習單片機使用匯編語言的一些優勢來發表自己的看法,希望能夠通過我說的這幾點給學習單片機的朋友們一個參考意見并順便解答一下這個問題。

第一點單片機匯編語言在執行效代碼效率非常高

雖然單片機匯編語言在剛學初期會顯得“晦澀難懂”但也并不是“一無是處”,在有些方面是單片機C語言所不能企及的,比如匯編語言首先在機器碼生成方面其效率要比C語言高20%,所以用匯編語言編寫程序能夠減少占用單片機里的寄存器單元,特別是對于容量小的單片機而言很重要。總之匯編語言要比C語言執行效率更高。

第二點單片機匯編語言執行速度快

我們知道任何編程語言最終都要生成單片機能夠“識別”和執行的二進制碼,由于匯編語言可以直接訪問單片機的內部寄存器,所以單片機的匯編語言執行速度要比C語言快的多,可以實施精細而準確 的控制,在一些實時控制要求比較嚴格的控制場合一般要求用匯編語言。

第三點單片機匯編語言能夠幫助有助于了解單片機內部的結構,尤其是寄存器

由于匯編語言的每條指令與單片機的指令碼是一一對應的,所以通過學習單片機的匯編語言有助于學習單片機內部結構組成以及它的外設。尤其是對熟悉單片機內部的各種寄存器有很大的幫助。

鑒于以上三點我認為,單片機C語言編程和匯編語言編程各有各的特點,要想學好單片機并運用好單片機就要把這兩種單片機語言都要學好才行。

以上就是我對這個問題的看法,歡迎朋友們參與討論。敬請關注電子及工控技術,歡迎大家點贊

評論0 贊同0
  •  加載中...
hyuan

hyuan

回答于2022-06-22 18:37

要看是什么單片機。


32位單片機

如STM32。用C語言很合適,絕大多數工作都可以而且應該用C或者更高級的語言完成。只有極少數對性能或代碼空間要求高的部分需要用匯編語言實現。

這類單片機在實際工作中也很少用到匯編,C語言基本能滿足開發各種功能的需求。


8位單片機

如51系列,部分AVR。性能低,C編譯器也不夠標準。尤其因為歷史上C編譯器較昂貴,所以在這些平臺上有大量匯編語言開發的積累。

另外,低端單片機往往實現的是簡單邏輯,用匯編語言開發慣了的人,也沒有太大動力改用C語言。

這樣以來,學校課程中使用匯編語言也就正常了:既體現了一定的歷史慣性、也有助于更深入的理解單片機系統。


從自己學習來說,匯編語言了解一下還是不錯的。深入學習還是選C,以后單片機上直接用匯編的會越來越少。

評論0 贊同0
  •  加載中...
dailybird

dailybird

回答于2022-06-22 18:37

現在常見的用匯編的一些場合,往往有嚴格的時間要求。比如中斷,特別是arm的快速中斷,還比如一些對時間要求非常高的測控場合,可能要求微秒甚至納秒級別的響應速度。這些應用在編程的時候有可能會一條指令的執行時間也會考慮。還有一些重復進行的運算函數,如果重復的次數多,又對時間有要求,那函數的執行時間又需要一條一條指令的扣。

還有一些場合,應用的cpu ,比如有些pic單片機,只有1k甚至512字節的空間,rom空間比較小,c語言優化后的編譯代碼,可能還是不如純粹的匯編精簡,這就需要匯編。

還有一些其他場合也是對代碼空間有要求,比如linux啟動的bootloader,還有PC上常見的常見文件系統mbr代碼,也需要用匯編來編寫。

此外對于單純的學習來講,匯編語言跟硬件的關系更密切,更直接,學習匯編更有利于理解單片機的結構。

評論0 贊同0
  •  加載中...
Mr_zhang

Mr_zhang

回答于2022-06-22 18:37

因為很多廉價的芯片采用私有指令集,沒有C編譯器,只能用匯編。這類芯片價格便宜,用量遠遠超過stm avr stc這些。

評論0 贊同0
  •  加載中...
YancyYe

YancyYe

回答于2022-06-22 18:37

目前很多主流單片機都是支持C語言編寫,廠商會提供相應的C語言庫,編譯器也大都支持C語言開發,C語言上手快學習成本低,只是應用層面的話其實C語言就差不多夠用了。但是使用C編寫最后還是會被編譯器變成匯編代碼,實質還是在寫匯編。匯編效率高,對機器直接操作,更加底層,所以想深入的學習單片機,匯編是不可不學的,并且一般最底層設置都是匯編寫的,還有不少底層設置是無法用C去調用或者改寫的,這個時候看懂匯編和使用匯編就很重要了。

評論0 贊同0
  •  加載中...
Lorry_Lu

Lorry_Lu

回答于2022-06-22 18:37

所以現在軟件越來越大,傻瓜式編程

評論0 贊同0
  •  加載中...
NeverSayNever

NeverSayNever

回答于2022-06-22 18:37

好學嗎?我怎么學的一臉懵逼啊

評論0 贊同0
  •  加載中...
jk_v1

jk_v1

回答于2022-06-22 18:37

如果不涉及底層開發,可以不學匯編語言。但最好懂一點。懂匯編,比較容易真正的理解計算機運行的機理。

評論0 贊同0
  •  加載中...
nanchen2251

nanchen2251

回答于2022-06-22 18:37

其實匯編更好用。只要你會用宏定義模擬類似C函數的調用。

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<