久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 使用Keil軟件編寫匯編源程序應注意事項

使用Keil軟件編寫匯編源程序應注意事項

作者: 時間:2016-11-23 來源:網絡 收藏
1)一定要使用微軟的txt文本編輯器,否則鍵入逗號時編譯通不過。應該是這個樣('),不該是這個樣(,)。

2) 用數字做標號時,前面一定要加一個英文字母,否則編譯通不過。

本文引用地址:http://cqxgywz.com/article/201611/320411.htm

3) 有時編譯通過的.asm源文件卻不產生.hex文件!原因是keil軟件的設置沒有勾選“產生hex文件;另一個是存放.hex的文件夾中刪除過其他的.hex

文件。

4) 用VU2新建文件鍵入源程序時,先鍵入程序部分,編譯后,再鍵入注釋部分;此外,不能用中文輸入法輸入分號,最好用大寫輸入程序部分及注釋部分前面的分號,否則注釋部分前面的分號顯示不正確,編譯通不過

5) 輸入的標號應成對出現,無論是標號還是標號地址(跳轉指令后面和標號相同的字符串)只要單獨出現,編譯通不過并提示錯誤!

6) 編寫程序要注意它的邏輯性,完整性,否則不會完成預期的功能。

如:要編寫一個使單個發光二極管閃爍的程序,首先確定是哪一個發光二極管閃爍;使其閃爍必須滿足:亮——延時(保持亮)——暗——延時(保持暗)——再亮這樣一個須要2次延時的完整周期,延時時間符合人眼視滯規律,不少于20ms

7) 助記符后面的立即數,如果有2個應該用逗號隔開,語法規定:如果只有一個應舍去逗號,否則語法錯誤,通不過。

8)每一條指令前面不應有順序號(按照程序編寫的順序人為編排的順序號),否則,語法錯誤,編譯通不過。

9) 在程序中各功能塊之間不能用連續的’*****’或‘----------’隔開。如想隔開,前面必須加 ‘;’,分號后面再用連續的’*******’或‘-----------’。

10)用復制的方法將.txt文件復制到Keil軟件中去,必須把擴展名更改為‘.ASM’ ,然后‘保存’、‘添加文件’三步之后,程序中的指令字體會變成藍色,注釋字體變成綠色這樣才能‘編譯’,‘建造.HEX文件’,否則提示錯誤!有時能通過,但不產生.HEX文件。

11)寄存器不能重復使用,如:在主程序中已經使用R0(不光是R0,其他寄存器也是如此), 主程序的其他地方不能再使用;子程序中也不能重復,否則程序運行不正常,但編譯能通過。

12) 編寫雙向單路流水燈時,選擇第一個燈亮從P0.0還是P0.7開始,這個選擇和流向要一致,否則會出現‘亮燈’從這一端開始,而流向的第一只燈卻是另一端的第一只燈。其現象:從這一端開始流向另一端前,‘亮燈’會從開始的這一端直接跳到另一端再跳回來才開始正常流動。編譯能通過,’.HEX’文件能產生。

13) 偽指令: 定義字節命令(并賦初值)—— “DB “

說明:告訴匯編程序從指定的地址單元開始,定義若干字節存儲單元,并賦初值。用法:標號 DB XXH,XXH,XXH (若干字節存儲單元及其初值)。例如: TAB: DB 60H,32H,16H,80H,54H,90H,35H,-------------等等很多。像這樣的字符串應在一行內輸入完成,如另起一行,編譯不通過,提示錯誤。如果字符串太多太長必須另起一行,則需在另一行的前面再添加一條偽指令‘DB’,后面輸入賦值的字符串,只有這樣才能編譯通過。

14)同樣的“跳轉指令連同后面標號”在程序中可以出現多次,但跳轉到目標處的“標號”必須是唯一的,否則程序會出現混亂。

15) 助記符后面的立即數,十六進制數第一位是字母的情況下前面必須加零‘0’, 是數字時不管他。如:MOV #A2H, A2H前面要加 ‘0’ ,即0A2H。否則編譯通不過。

16) 欲使整個主程序循環起來,絕對調轉指令‘AJMP’應加入到主程序和延時子程序之間,加到延時子程序之后不起作用。

17) 將編寫好的匯編源程序.txt文本文件復制到Kiel軟件中,語句后面的分號、注釋不呈現綠色這是不正常的,編譯不會通過,需要更正,刪除分號重新鍵入分號;按一次Back Space鍵(退格鍵)刪除時會出現亂碼,因為Keil對中文支持不好(只要更改的是中文就會出現亂碼),只要連續按2次退格鍵即可刪除亂碼重新鍵入分號(或中文)即可,這樣分號及注釋都會變成綠色。

18) 鍵入注釋必須打開大寫鍵鍵入分號,否則(不是綠色)編譯通不過。

19) 編譯好的.ASM文件復制時,粘貼的目的文件夾必須是關閉的狀態,否則粘貼過去的文件中的中文會出現亂碼(對中文支持不好的緣故)。




評論


技術專區

關閉