3
如何將寄存器中的內存地址傳遞給其他地址?我的下面的例程接收來自堆棧的字符串內存地址(是的,這是必要的),然後嘗試放入D1
寄存器,但它不起作用,並且EASy68k模擬器崩潰(或進入無限循環?),當我嘗試運行這個。通過寄存器傳遞內存地址
代碼:
START ORG $1000
MOVE.L T,D0
MOVE.L D0,-(SP)
BSR PRINTS
PRINTS:
MOVE.L D0,(SP)+
MOVE.W D0,A1
MOVE #14,D0
TRAP #15
RTS
T DC.B 'HELLO',0
END START
更新:我更新的方式作爲參數被壓,並從堆棧彈出。更改爲使用PEA
指令,看起來像做我想要的,但它仍然無法正常工作。
START ORG $1000
PEA T(PC)
*MOVE.L D0,-(SP)
BSR PRINTS
ADDQ.L #4,SP
MOVE #9,D0
TRAP #15
PRINTS:
MOVE 4(SP),A1
MOVE #14,D0
TRAP #15
RTS
是的。謝謝。我解決了這個問題,但它看起來像是問題的一半。它仍然不起作用。 –
不應該'MOVE.L T,D0'是'LEA T,D0'?你想要T的地址,而不是T的內容。 –
此舉將以與當前代碼相同的方式工作。 'LEA T,D0'返回一個錯誤:'錯誤:無效的尋址模式' –