C语言作业不足之处,C语言和汇编语言的优缺点分析-控制器/处理器-与非网
本文主要是關(guān)于匯編和 C 語言的相關(guān)介紹,并著重對匯編和 C 語言的不同及其編程技巧進(jìn)行了詳盡的闡述。
匯編和 C 語言
C 語言和匯編語言的區(qū)別在于他們之間優(yōu)缺點幾乎是相反的。
C 語言和匯編語言的優(yōu)缺點:以 c 來舉例
優(yōu)點:
c 的運行效率高;
c 可以實現(xiàn)硬件的直接訪問;
c 代碼的移植性好;
缺點:
c 的代碼復(fù)用性差;
c 的代碼維護(hù)性差;
c 的擴展性差,即如果想增加新功能,需要修改較多的代碼;
c 語言的可讀性差;
C 語言是一門通用計算機編程語言,應(yīng)用廣泛。C 語言的設(shè)計目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言;盡管 C 語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標(biāo)準(zhǔn)規(guī)格寫出的 C 語言程序可在許多電腦平臺上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機或稱 MCU)以及超級電腦等作業(yè)平臺。
匯編語言:是一種用于電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符(Mnemonics)代替機器指令的操作碼,用地址符號(Symbol)或標(biāo)號(Label)代替指令或操作數(shù)的地址。在不同的設(shè)備中,匯編語言對應(yīng)著不同的機器語言指令集,通過匯編過程轉(zhuǎn)換成機器指令。普遍地說,特定的匯編語言和特定的機器語言指令集是一一對應(yīng)的,不同平臺之間不可直接移植。
匯編和 C 語言相結(jié)合的 51 單片機編程技巧
c 語言和匯編語言之間主要存在:相互調(diào)用、混合編程等關(guān)系,舉例來說吧:
1、C 語言調(diào)用匯編子程序
此時,匯編子程序需要申明為外部程序
#include《reg51.h》
extern void delay(void)
sbit pluse=P1^0;
main()
{
while(1)
{
pluse=0;
delay();
pluse=1;
delay();
}
}
匯編子程序:
匯編部分需要做如此處理。
PUBLIC DELAY
DELAY SEGMENT CODE
RSEG DELAY
DELAY:
MOV R2,#250
DJNZ R2,$
RET
END
2:C 語言中嵌入?yún)R編,這個比較簡單用宏指令包含進(jìn)來就可以實現(xiàn)。
void delay(void)
{
#pragma asm
mov r2,#250
djnz r2,$
#pragma endasm
}
淺談如何用匯編編寫模塊化程序
一、主程序的書寫
如上圖就是結(jié)構(gòu)化編程的截圖,里面的 .asm 即是匯編文件的擴展名,C 語言用的是 .c 。在匯編語言中,頭文件的擴展名是 .inc,而在 C 語言中頭文件的擴展名是 .h。
仔細(xì)觀察上圖,匯編包含頭文件的格式是$include(頭文件完整名稱),而在 C 語言中是#include“頭文件完整名稱”,二者有著非常相似之處。ORG 0000H ; LJMP MAIN 應(yīng)該不用我解釋是有什么作用的吧?ORG 指令就是指定其下面一條指令或數(shù)據(jù)的首字節(jié)按 ORG 后面的地址或標(biāo)號存放到相應(yīng)的存儲單元。_MAIN_ASM SEGMENT CODE; RSEG _MAIN_ASM 的作用上圖已經(jīng)標(biāo)明了,也不用多講,需要說明的是,_MAIN_ASM 不一定要寫成這樣,你喜歡寫什么符號都可以(如:MAINFUNC、_MAIN_FUNC、ZHUHANSHU,最后一個舉例有點俗了),只要符合匯編語言變量或標(biāo)號的命名規(guī)則即可。如果講求規(guī)范,最好就按以上格式書寫。還有一點就是,這段動態(tài)分配程序地址的代碼可以省略,如果沒有這段代碼,編譯器就不會動態(tài)分配程序地址了。主函數(shù)的功能大家肯定都能分析了,不然看這個教程也沒什么意義了。
二、子程序的書寫
下面講的是子程序如何書寫,子程序是要被調(diào)用的,你必須告訴編譯器其他模塊可以調(diào)用子程序模塊中的哪些程序,如上所示,DELAY1MS 即是可被調(diào)用的延時函數(shù),公共變量及函數(shù)聲明用關(guān)鍵字 PUBLIC,后面跟函數(shù)名(標(biāo)號名)。動態(tài)分配程序地址可以省略,在 main.asm 中已經(jīng)講到了。注意,子程序模塊最后一行要寫一個 END,沒有這一句,編譯器不會報錯,但會出現(xiàn)警告,容易出現(xiàn)問題,為了規(guī)范編程,大家還是別偷懶了。
最后一點就是頭文件的作用了,這跟 C 語言的作用一樣,可以對變量或函數(shù)進(jìn)行聲明,這個程序比較簡單,可以直接放到主程序中聲明,如下圖:
結(jié)語
關(guān)于匯編和 C 語言的相關(guān)介紹就到這了,如有不足之處歡迎指正。
總結(jié)
以上是生活随笔為你收集整理的C语言作业不足之处,C语言和汇编语言的优缺点分析-控制器/处理器-与非网的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dcp9020cdn硒鼓!错误_显示硒鼓
- 下一篇: php中的json