標(biāo)題:
求大佬們的幫助,關(guān)于單片機匯編查詢關(guān)鍵字的一個程序
[打印本頁]
作者:
小多啦
時間:
2020-6-23 00:15
標(biāo)題:
求大佬們的幫助,關(guān)于單片機匯編查詢關(guān)鍵字的一個程序
大佬們啊,這題目是從50個字節(jié)的無序表中查找一個關(guān)鍵字“××H”。若找到,將關(guān)鍵字所在地址存入R2R3;若找不到,將0000H存入R2R3,我寫的程序是這樣的,為什么運行結(jié)果就是不對呢?
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV 30H,#00H
MOV R1,#16
MOV A, #22
MOV DPTR, #TAB4
LOOP: PUSH ACC
MOVC A, @A+DPTR
CJNE A, 30H, LOOP1
MOV R2, DPH
MOV R3, DPL
DONE: RET
LOOP1: POP ACC
INC DPTR
DJNZ R1, LOOP
MOV R2, #00H
MOV R3, #00H
AJMP DONE
TAB4: DB 01H, 03H, 05H, 10H, 11H, 18H, 09H, 17H, 10H, 20H, 21H, 25H, 32H, 31H, 37H, 43H
END
作者:
Y_G_G
時間:
2020-6-23 08:18
1:PUSH ACC和POP ACC指令盡量不要用,在這壓入,在那彈出,進進出出的,你也不知道他彈出的是哪個值
2:沒有CALL指令,盡量不要用RET指令,你也不知道它會返回到哪里
3:匯編是個麻煩的東西,可以的話,盡量加注釋,也好找出問題出在哪里
作者:
csmyldl
時間:
2020-6-23 09:01
LOOP循環(huán)有問題,執(zhí)行MOVC A, @A+DPTR時的A應(yīng)該清0,MOV A, #22這一句用處不大,而且進行了保護,實際上每次執(zhí)行MOVC A, @A+DPTR時的A是22,好象不符合題意,把22改成0試試
作者:
suve
時間:
2020-6-23 09:24
有BUG 慢慢找出錯誤來
作者:
carpcarey
時間:
2020-6-23 09:27
MOV A, #22改為MOV A, #0
作者:
小多啦
時間:
2020-6-23 20:34
謝謝各位大佬指點,我已經(jīng)找出問題了,問題出在了修正值那里,A的修正值應(yīng)該為0,因為是用的@A+DPTR,移動指針是DPTR,然后還有一個地方就是在第一個loop最后加一個SJMP $來終止循環(huán);然后那個壓棧和入棧可以刪掉也可以留著,因為那個本來是用來給修正值用的
作者:
WEI12
時間:
2020-6-28 00:20
小多啦 發(fā)表于 2020-6-23 20:34
謝謝各位大佬指點,我已經(jīng)找出問題了,問題出在了修正值那里,A的修正值應(yīng)該為0,因為是用的@A+DPTR,移動 ...
敢問是HFUT的嗎
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1