看板 ASM 關於我們 聯絡資訊
小弟我在寫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
gothatet:PUSH 太多次 POP只有一次?? 你的程式有個詭異的迴圈 12/30 18:24
gothatet:我不知道你A怎麼動 但是只要 CJNE A,#81,RX_STR_LOOP 12/30 18:25
gothatet:跳了 那你的堆疊就亂了 如果我沒看錯的話XD 12/30 18:25
gothatet:堆疊亂了的話 RET是根據堆疊在回的 所以也一起掰掰XD 12/30 18:25
chenkaihsu:謝啦~~哈哈~~我以為call fuction的stack~~跟一班stack 12/30 19:22
chenkaihsu:不一樣~~ 12/30 19:22
chenkaihsu:謝囉~~解決了~~ 12/30 19:22