C51彙編程序出錯解決
最近開始學習了一點彙編語言,剛好應課程要求,就來編一些簡單的C51程序,結果在定時器中斷跳轉的時候出錯了,錯誤截圖如下:
demo.asm(8): error A51: TARGET OUT OF RANGE
源程序代碼塊是報錯在CJNE指令這裏
ORG 000BH
INC R1
CJNE R1,#4000,MAINLOOP
CPL P0.0
MOV R1, #0
RETI
錯誤原因:通俗講是因爲MAINLOOP代碼塊距離這個中斷代碼塊的地址太遠,所以超出範圍,無法跳轉過去,所以要解決就必須中間設置一個類似中轉站的地方。
錯誤解決之後的代碼如下:
ORG 000BH
INC R1
CJNE R1,#4000,0048H
CPL P0.0
MOV R1, #0
RETI
ORG 0048H
JMP MAINLOOP