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