Цитата Сообщение от 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 ;выход и восстановление всех регистров