
Сообщение от
Manwe
Стало быть, надо их выправлять перед началом.
А кто мешает? Добавляем модификаторы:
Код:
PUSHA: MOV #5,PUCN$
MOV (PC)+,(PC)
.WORD 10046
PUMD$: MOV R0,-(SP)
ADD #100,PUMD$
DEC (PC)+
PUCN$: .WORD 5
BPL PUMD$
POPA: MOV #5,POCN$
MOV (PC)+,(PC)
.WORD 12605
POMD$: MOV (SP)+,R5
DEC POMD$
DEC (PC)+
POCN$: .WORD 5
BPL POMD$
Получаем ещё более бесполезного монстра.
С моей точки зрения, ничего лучше, чем метод подсмотренный в ПЗУ БОС БК11М не придумать.
Код:
;вызов так: JSR R5,PUSHA, сохраняем все регистры
;но через R5 нельзя передать параметр функции, чтобы было можно, есть более сложный метод
PUSHA: MOV R4,-(SP)
MOV R3,-(SP)
MOV R2,-(SP)
MOV R1,-(SP)
MOV R0,-(SP)
;MOV R5,-(SP) ;это - чтобы и в R5 можно было
;MOV 14(SP),R5 ;передавать параметры
;CALL @(SP)+
CALL (R5)
MOV (SP)+,R0
MOV (SP)+,R1
MOV (SP)+,R2
MOV (SP)+,R3
MOV (SP)+,R4
MOV (SP)+,R5
RETURN
;пример использования
SUBR: JSR R5,PUSHA ;сохраняем все регистры выполняем функцию
...
...
RETURN ;выход и восстановление всех регистров