① asm 文件編譯出錯error :org_2 can not fit absolute secti
你的錯誤代碼是errorc129:這是一個C語言方面的語法錯誤,說明你的文件被保存為C文件(文件名為.c後綴)。我用你這段程序放在keil編譯器中試驗過,當程序保存為c文件並編譯時,會出現如你所示的errorc129的錯誤且指向程序的第一句代碼處;若將文件另存為匯編文件(文件名為.asm後綴)再進行編譯,則不會出現c129的報錯。 現在將這段程序保存為.asm文件,並將程序整理為以下形式: ORG 0000H LJMP START ORG 000BH ; LJMP INTT0; START: MOV R0,#70H MOV R7,#0CH INIT: MOV @R0,#00H INC R0 DJNZ R7,INIT MOV 72H,#10 MOV 75H,#10 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#03CH SETB EA SETB ET0 SETB TR0 START1: LCALL SCAN LCALL KEYSCAN SJMP START1; DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET; DL20MS:對於以上程序段,不知道整理出來之後是否與你的原代碼相同,但其中有一點需要說明,匯編文件中的分號「;」的作用與C文件中的「 //」作用類似,它後面緊跟的是注釋內容。 你這段程序,若按以上整理,那麼所有命令後面的分號「 ;」都可以不要的。不過,也有可能你確實使用了分號的作用,將後面一些命令作了屏蔽處理,則此處不另作說明。下面將整理後的程序進行編譯,會出現以下報錯情況:錯誤、警告的解釋: 第4行的錯誤原因是:標志符號「INTT0」沒有定義; 第18行的錯誤原因是:標志符號「SCAN」沒有定義; 第19行的錯誤原因是:標志符號「KEYSCAN」沒有定義; 第27行的警告原因是:代碼結束處沒有「END」命令;(註:所有匯編文件結尾處都應有一句「END」命令表示結束) 可以看得出,你這段程序應該不是完整的,另有一部份你沒有復制出來。你可以根據以上說明,再結合你的實際情況處理你的程序。祝你成功!
② 51單片機 keil軟體編譯時出錯 Text1.asm(7): error A45: UNDEFINED SYMBOL (PASS-2)
你編輯的程序開頭位置出錯了,應該如下
ORG 0000H
LJMP MAIN
ORG 0030H ; 主程序入口
MAIN: SETB P2.6 ; 置無線發射模塊為發射狀態
CLR P1.0 ; P1.0口置0
MOV A,P2
JNB ACC.4,PR1
以下雷同
③ 匯編語言用keil編譯報錯 2.asm(11): error A46: CODE-ADDRESS EXPECTED,求解,謝謝!
ORG 0000H ;復位時程序從此開始
SJMP START ;跳到START進行初始化
ORG 0003H ;外部引腳P3.2中斷入口
11)AJMP INT0;--INT0 是關鍵字,不能當作標號
ORG 000BH ;定時器T0中斷入口
AJMP TIMER0 ;跳轉到標號TIMER0處(定時器中斷服務子程序)
ORG 0030H ;初始化程序從30H開始
----------
AJMP 後面,應該寫「標號」。
START、TIMER0,都是正確的標號。
INT0,在 KEIL 中的關鍵字,就不能當作標號。