使用Keil軟件編寫匯編源程序應(yīng)注意事項
2) 用數(shù)字做標號時,前面一定要加一個英文字母,否則編譯通不過。
本文引用地址:http://2s4d.com/article/201611/320411.htm3) 有時編譯通過的.asm源文件卻不產(chǎn)生.hex文件!原因是keil軟件的設(shè)置沒有勾選“產(chǎn)生hex文件;另一個是存放.hex的文件夾中刪除過其他的.hex
文件。
4) 用VU2新建文件鍵入源程序時,先鍵入程序部分,編譯后,再鍵入注釋部分;此外,不能用中文輸入法輸入分號,最好用大寫輸入程序部分及注釋部分前面的分號,否則注釋部分前面的分號顯示不正確,編譯通不過
5) 輸入的標號應(yīng)成對出現(xiàn),無論是標號還是標號地址(跳轉(zhuǎn)指令后面和標號相同的字符串)只要單獨出現(xiàn),編譯通不過并提示錯誤!
6) 編寫程序要注意它的邏輯性,完整性,否則不會完成預(yù)期的功能。
如:要編寫一個使單個發(fā)光二極管閃爍的程序,首先確定是哪一個發(fā)光二極管閃爍;使其閃爍必須滿足:亮——延時(保持亮)——暗——延時(保持暗)——再亮這樣一個須要2次延時的完整周期,延時時間符合人眼視滯規(guī)律,不少于20ms
7) 助記符后面的立即數(shù),如果有2個應(yīng)該用逗號隔開,語法規(guī)定:如果只有一個應(yīng)舍去逗號,否則語法錯誤,通不過。
8)每一條指令前面不應(yīng)有順序號(按照程序編寫的順序人為編排的順序號),否則,語法錯誤,編譯通不過。
9) 在程序中各功能塊之間不能用連續(xù)的’*****’或‘----------’隔開。如想隔開,前面必須加 ‘;’,分號后面再用連續(xù)的’*******’或‘-----------’。
10)用復(fù)制的方法將.txt文件復(fù)制到Keil軟件中去,必須把擴展名更改為‘.ASM’ ,然后‘保存’、‘添加文件’三步之后,程序中的指令字體會變成藍色,注釋字體變成綠色這樣才能‘編譯’,‘建造.HEX文件’,否則提示錯誤!有時能通過,但不產(chǎn)生.HEX文件。
11)寄存器不能重復(fù)使用,如:在主程序中已經(jīng)使用R0(不光是R0,其他寄存器也是如此), 主程序的其他地方不能再使用;子程序中也不能重復(fù),否則程序運行不正常,但編譯能通過。
12) 編寫雙向單路流水燈時,選擇第一個燈亮從P0.0還是P0.7開始,這個選擇和流向要一致,否則會出現(xiàn)‘亮燈’從這一端開始,而流向的第一只燈卻是另一端的第一只燈。其現(xiàn)象:從這一端開始流向另一端前,‘亮燈’會從開始的這一端直接跳到另一端再跳回來才開始正常流動。編譯能通過,’.HEX’文件能產(chǎn)生。
13) 偽指令: 定義字節(jié)命令(并賦初值)—— “DB “
14)同樣的“跳轉(zhuǎn)指令連同后面標號”在程序中可以出現(xiàn)多次,但跳轉(zhuǎn)到目標處的“標號”必須是唯一的,否則程序會出現(xiàn)混亂。
15) 助記符后面的立即數(shù),十六進制數(shù)第一位是字母的情況下前面必須加零‘0’, 是數(shù)字時不管他。如:MOV
16) 欲使整個主程序循環(huán)起來,絕對調(diào)轉(zhuǎn)指令‘AJMP’應(yīng)加入到主程序和延時子程序之間,加到延時子程序之后不起作用。
17) 將編寫好的匯編源程序.txt文本文件復(fù)制到Kiel軟件中,語句后面的分號、注釋不呈現(xiàn)綠色這是不正常的,編譯不會通過,需要更正,刪除分號重新鍵入分號;按一次Back Space鍵(退格鍵)刪除時會出現(xiàn)亂碼,因為Keil對中文支持不好(只要更改的是中文就會出現(xiàn)亂碼),只要連續(xù)按2次退格鍵即可刪除亂碼重新鍵入分號(或中文)即可,這樣分號及注釋都會變成綠色。
18) 鍵入注釋必須打開大寫鍵鍵入分號,否則(不是綠色)編譯通不過。
19) 編譯好的.ASM文件復(fù)制時,粘貼的目的文件夾必須是關(guān)閉的狀態(tài),否則粘貼過去的文件中的中文會出現(xiàn)亂碼(對中文支持不好的緣故)。
評論