8051 組合語言

一、程式碼的構成

8051編譯器有很多種,我以keil 8051 編譯器為例。
8051的程式碼可以用c語言和組合語言寫成,藉由編譯器將其編譯為機械碼以供微處理器執行。

c51.exe負責將 *.c檔編譯為 *.obj檔,obj檔本身就是一段一段的機械碼了,只是其中還有一些label的符號必須被定址。
a51.exe負責將 *.a51檔編譯為 *.obj檔,obj檔本身就是一段一段的機械碼了,只是其中還有一些label的符號必須被定址。
link51.exe負責將各個 *.obj 連結在一起,形成可以在8051上面執行的程式碼,檔尾通常是 *.hex或是*.bin其中bin檔就是8051可以直接執行的二進位檔,也是8051程式的映像檔。

下圖是我解釋8051程式的圖像,看得懂得恭喜,看不懂的是我表達能力有問題,不是你的問題,哈哈哈。
程式碼分四個部份:中斷向量表,主程式,副程式,中斷副程式。
Reset後程式會從 org 00h開始執行,接著跳到CodeStartAddress執行,做記憶體的初始化。之後,便進入main()中開始程式的運作。程式運作時會執行 xxx service的副程式,不同的物件會有不同的service副程式以滿足程式控制的需求。

程式碼的圖像

二、組合語言

第一支組合語言

組合語言

第二支組合語言

組合語言

第三支組合語言

組合語言


組合語言


組合語言


組合語言