Как передать адрес памяти из регистра в другой? Моя следующая процедура получает адрес строковой памяти из стека (да, это необходимо), а затем пытайтесь помещать в регистры 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
UPDATE: Я обновил путь в качестве аргументов выталкиваются и poped из стека. Изменено для использования инструкции 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' возвращает ошибку:« ОШИБКА: Недействительный режим адресации » –