作者chenkaihsu (Harry)
看板ASM
标题[问题] 关於acall function时 ret的问题(8051)
时间Fri Dec 30 10:47:03 2011
小弟我在写8051期末project时遇到一个问题
我在main function用acall subroutine时
回不了main function
我在main function call
我的subroutine
main:
acall RX_STR
EXIT:
ajmp EXIT
RX_STR:
mov R0,#0
RX_STR_LOOP:
acall _RX_CHAR
acall _TX_CHAR
push ACC
inc R0
CJNE A,#81,RX_STR_LOOP
pop ACC
;ACALL _TX_CHAR
mov A,#10
ACALL _TX_CHAR
dec R0
ret
请问为什麽这个subroutine的ret没work??(害我要用AJMP跳回主程式)
然而ACALL _RX_CHAR和ACALL _TX_CHAR就可以回来??
谢谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.242.8.136
1F:推 gothatet:PUSH 太多次 POP只有一次?? 你的程式有个诡异的回圈 12/30 18:24
2F:→ gothatet:我不知道你A怎麽动 但是只要 CJNE A,#81,RX_STR_LOOP 12/30 18:25
3F:→ gothatet:跳了 那你的堆叠就乱了 如果我没看错的话XD 12/30 18:25
4F:→ gothatet:堆叠乱了的话 RET是根据堆叠在回的 所以也一起掰掰XD 12/30 18:25
5F:→ chenkaihsu:谢啦~~哈哈~~我以为call fuction的stack~~跟一班stack 12/30 19:22
6F:→ chenkaihsu:不一样~~ 12/30 19:22
7F:→ chenkaihsu:谢罗~~解决了~~ 12/30 19:22