1樓:小肥楊媽媽
學stm32彙編不是必須會用的,但是如果懂彙編,會使你寫的c程式有更好的執行效率。
內容拓展:
一、在嵌入式開發中c語言和彙編兩種語言相比。彙編作為低階語言,是僅次於機器語言和硬體聯絡最緊密的語言;而c語言,嚴格的說也只能算是半個高階語言,相對於其他高階語言來說。
二、這兩者比較直觀的差異是:組合語言的實時性非常好,但可讀性差,可移植性不強;相反,c語言的可讀性強,可移植性高,但實時性相對彙編比較差。
三、利用c語言編寫微控制器程式,不用考慮程式的初始化地址,不用考慮acc,psw以及工作暫存器的保護,不用考慮溢位進位cy。而彙編這些都需要考慮到。
四、當然c語言的簡單與方便這是彙編不能比的,個人覺得把微控制器c語言和組合語言結合來編成是最好的。在需要很精確的地方就巢狀一個彙編的子程式,其他就用c語言。
2樓:楊武威
在嵌入式開發中c語言和彙編兩種語言相比。彙編作為低階語言,是僅次於機器語言和硬體聯絡最緊密的語言;而c語言,嚴格的說也只能算是半個高階語言,相對於其他高階語言來說。這兩者比較直觀的差異是:
組合語言的實時性非常好,但可讀性差,可移植性不強;相反,c語言的可讀性強,可移植性高,但實時性相對彙編比較差。
利用c語言編寫微控制器程式,不用考慮程式的初始化地址,不用考慮acc,psw以及工作暫存器的保護,不用考慮溢位進位cy。而彙編這些都需要考慮到。
比如我在編寫溫度計程式的時候遇到了這個問題,因為以前是用匯編寫的,現在翻譯成c,在處理負數轉換的時候遇到了問題。因為如果溫度計轉換晶片讀出來的是負數,他是以反碼的形式表示的,需要對其取反加一。這樣就不得不考慮加一後可能溢位的情況。
在彙編裡這種情況處理起來很簡單,低位位元組的加法用add指令,高位位元組用addc,這樣,如果低位有溢位,cy會置一,高位元組addc在計算時會將進位cy計算在內。但在c裡面就不是這回事了。低位元組有溢位,不會影響高位元組的加法,這樣計算的結果是錯誤的。
請教了下高手,解決方法可以嵌入彙編,也可以直接使用acc和cy,即每次高位的加法前要先判斷cy的值,為1則多加1,為0則正常加法。因為在引用的reg51.h的標頭檔案裡包含了這些暫存器和標誌位的定義。
當然c語言的簡單與方便這是彙編不能比的,我個人覺得把微控制器c語言和組合語言結合來編成是最好的。在需要很精確的地方就巢狀一個彙編的子程式,其他就用c語言。
所以說,學stm32彙編不是必須的,但是如果懂彙編,會使你寫的c程式有更好的執行效率。
3樓:天際月臺
stm32現在可以用官方提供的c函式庫開發,大大縮短開發時間,不過函式庫只是用來配置外設,關鍵的演算法還是得自己寫。至於彙編一般用於解決c語言無法解決的問題,如初始化c語言執行環境(這個其實廠商提供的啟動檔案幫我們搞定了),操作堆疊(作業系統裡的上下文切換需要用到彙編),對速度要求特別高的演算法等。建議還是學一下彙編,畢竟如果要移植作業系統的話,不懂彙編是不行的,而且懂彙編的話,寫c就知道怎麼寫效率會高一些。
4樓:布川邪
其實說真的,不會彙編完全沒什麼,因為stm32程式設計是用庫函式來編的,我也不彙編,我也是剛開始自學stm32,感覺跟學51思路是差不多的,只是stm32的資源豐富,有一大堆暫存器,比51多上百倍,你想記住,我覺得幾乎不可能,當然你寫庫函式其實就是在對暫存器進行配置,只不過是間接地配置而已,如果你要自學stm32的話,我建議你買「正點原子」的戰艦版,講得很詳細,400塊左右吧,我買的是奮鬥的stm32,也是400多,但是教程沒有正點原子講得好
學微控制器必須學組合語言嗎,還是學好c語言就足夠了
5樓:武音
微控制器要做工程的話還是用c好,用匯編太複雜。c要100行的在彙編裡面要300-500行。。。。
我已經學了c語言(不是專門用來編微控制器的)然後學的微控制器彙編,下學期還要開微控制器c語言,足見c還是更加適用於微控制器。我們現在做的微控制器課程設計很多人用匯編編不出來的用c就很容易。
先學c,彙編大致瞭解一下就可以了
1、對於普通的專案,只要學好c就行了,但不是足夠了。
2、現在流行的微控制器開發程式語言有彙編、c、c++。
3、它們是可以相互依託的,比如要求開發速度,我們可以儘量用c或c++,因為它們都比用匯編完成任務速度要快。比如要求執行速度,我們必須考慮使用匯編,因為彙編的速度大體要比c或c++快5%~15%,另外我們還可以考慮用c或c++來巢狀匯編完成。
4、通過以上說明,只會c是不夠的,有空還是要看看彙編和c++的。
c語言是一種計算機程式設計語言,它既具有高階語言的特點,又具有組合語言的特點。它由美國貝爾研究所的d.m.
ritchie於2023年推出,2023年後,c語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機硬體的應用程式。它的應用範圍廣泛,具備很強的資料處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到c語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如微控制器以及嵌入式系統開發。
6樓:匿名使用者
我的一點感想:
以前關於51微控制器的專案,均用匯編,裡面的資源如何用,到什麼程度,你特別清楚。【例如一段程式執行多少時間,用了哪些記憶體】。感覺特爽。
現在用c,寫其他型別得微控制器,編譯時,系統會佔用部分資源,這樣:資源用到何地步,一段c程式執行時間,中斷巢狀等,就不清楚了。雖然能完成任務,但是感覺特別不爽。
7樓:雪泥灬鴻爪
現在的微控制器用c就可以了。甚至有一些還支援c++。但是經常會在c**中嵌入彙編**,所以建議樓主還是學習一下組合語言會比較有幫助
8樓:匿名使用者
1、對於普通的專案,只要學好c就行了,但不是足夠了。
2、現在流行的微控制器開發程式語言有彙編、c、c++。
3、它們是可以相互依託的,比如要求開發速度,我們可以儘量用c或c++,因為它們都比用匯編完成任務速度要快。比如要求執行速度,我們必須考慮使用匯編,因為彙編的速度大體要比c或c++快5%~15%,另外我們還可以考慮用c或c++來巢狀匯編完成。
4、通過以上說明,只會c是不夠的,有空還是要看看彙編和c++的。
9樓:匿名使用者
不是必須的,但是要微控制器學的非常好就必須掌握彙編,我是之前學彙編的,程式設計的感覺和c完全不一樣,每一條指令都能感覺的清清楚楚,像電機等精確控制的時候是需要用匯編的。不過還是有很多人不會彙編,只會c,c是必須會的,移植性好。
51的彙編指令有111條,其實非常好掌握,分類分好就只有會30幾條就可以了。祕訣是知道指令的英文含義,比如mov是move的簡寫,setb是set bit的簡寫=置位,clr是清除的意思就是清零,call是呼叫的意思,建議看趙星寒的從0開始學微控制器你去看一下,很好的,你有電子基礎就更容易了.每天學一小時我就一個多月會的.
10樓:醉月空明
先學c,彙編大致瞭解一下就可以了
學微控制器必須學組合語言嗎,還是學好c語言就足夠了?
11樓:武音
微控制器要做工程的話還是用c好,用匯編太複雜。c要100行的在彙編裡面要300-500行。。。。
我已經學了c語言(不是專門用來編微控制器的)然後學的微控制器彙編,下學期還要開微控制器c語言,足見c還是更加適用於微控制器。我們現在做的微控制器課程設計很多人用匯編編不出來的用c就很容易。
先學c,彙編大致瞭解一下就可以了
1、對於普通的專案,只要學好c就行了,但不是足夠了。
2、現在流行的微控制器開發程式語言有彙編、c、c++。
3、它們是可以相互依託的,比如要求開發速度,我們可以儘量用c或c++,因為它們都比用匯編完成任務速度要快。比如要求執行速度,我們必須考慮使用匯編,因為彙編的速度大體要比c或c++快5%~15%,另外我們還可以考慮用c或c++來巢狀匯編完成。
4、通過以上說明,只會c是不夠的,有空還是要看看彙編和c++的。
c語言是一種計算機程式設計語言,它既具有高階語言的特點,又具有組合語言的特點。它由美國貝爾研究所的d.m.
ritchie於2023年推出,2023年後,c語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機硬體的應用程式。它的應用範圍廣泛,具備很強的資料處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到c語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如微控制器以及嵌入式系統開發。
stm32執行一條機器語言的指令週期是多久
時鐘每跳1兆次,可以執行1.25兆條指令。指令週期 時鐘週期 1.25,時鐘週期是1 72mhz,故指令週期是 1.25 72mhz 約是0.0174us。stm32 屬於arm cortexm3,多數指令是單週期的。cortex m3是 流水線,同時執行3條指令,指令週期不定,分支指令也可能清空流...
急!!犬瘟熱一定要用單抗嗎,急!!犬瘟熱一定要用單抗嗎
我就把治早期晚期的都跟你說了吧。犬瘟熱這個東西,只要沾上好的機率就不大,不過還是跟你說說我家狗狗怎麼治的,以及醫生開的藥方。犬溫熱 早期 1 此方適合早期或者用於預防,早期的意思是還沒嚴重抽筋的.黃連6g,黃芩10g,梔子10g,澤瀉15g,甘草10g,殭蠶6g,大青葉10g,龍膽草10g,生地20...
吃藥一定要熱水嗎,請問吃藥一定要用溫開水服用嗎
白開水最好,因為像茶葉之類的,水都有化藥性的作用,會影響藥性的吸收和作用 這樣的服藥方式是不正確的,輕者影響藥物吸收,使療效大打折扣,重者會加重不良反應 要看你吃什麼藥,有的藥用熱水反而毀藥效,活菌製劑藥物,助消化類藥,清熱類中成要,膠囊這4類藥儘量用涼水服用 溫開水是最好的,但是涼開水也可以 吃藥...