新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用Keil軟件編寫匯編源程序應(yīng)注意事項(xiàng)

使用Keil軟件編寫匯編源程序應(yīng)注意事項(xiàng)

作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
1)一定要使用微軟的txt文本編輯器,否則鍵入逗號(hào)時(shí)編譯通不過。應(yīng)該是這個(gè)樣('),不該是這個(gè)樣(,)。

2) 用數(shù)字做標(biāo)號(hào)時(shí),前面一定要加一個(gè)英文字母,否則編譯通不過。

本文引用地址:http://butianyuan.cn/article/201611/320411.htm

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

文件。

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

5) 輸入的標(biāo)號(hào)應(yīng)成對(duì)出現(xiàn),無論是標(biāo)號(hào)還是標(biāo)號(hào)地址(跳轉(zhuǎn)指令后面和標(biāo)號(hào)相同的字符串)只要單獨(dú)出現(xiàn),編譯通不過并提示錯(cuò)誤!

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

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

7) 助記符后面的立即數(shù),如果有2個(gè)應(yīng)該用逗號(hào)隔開,語法規(guī)定:如果只有一個(gè)應(yīng)舍去逗號(hào),否則語法錯(cuò)誤,通不過。

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

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

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

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

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

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

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

14)同樣的“跳轉(zhuǎn)指令連同后面標(biāo)號(hào)”在程序中可以出現(xiàn)多次,但跳轉(zhuǎn)到目標(biāo)處的“標(biāo)號(hào)”必須是唯一的,否則程序會(huì)出現(xiàn)混亂。

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

16) 欲使整個(gè)主程序循環(huán)起來,絕對(duì)調(diào)轉(zhuǎn)指令‘AJMP’應(yīng)加入到主程序和延時(shí)子程序之間,加到延時(shí)子程序之后不起作用。

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

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

19) 編譯好的.ASM文件復(fù)制時(shí),粘貼的目的文件夾必須是關(guān)閉的狀態(tài),否則粘貼過去的文件中的中文會(huì)出現(xiàn)亂碼(對(duì)中文支持不好的緣故)。




關(guān)鍵詞: Keil軟件編寫匯編源程

評(píng)論


技術(shù)專區(qū)

關(guān)閉