minixa.asm

来自「minix rtos 测试代码」· 汇编 代码 · 共 120 行

ASM
120
字号
;****************************************************************
;    MINIX ASM 模块
;
;
;****************************************************************
NAME MINIA

;*****************************************************************
;
;        内部函数声明
;
;
;*****************************************************************
;PUBLIC OS_SAVE_SYSTEM    ;保存系统积存器
;PUBLIC OS_RESTORE_SYSTEM ;恢复系统积存器
PUBLIC OS_GOTO_TASK       ;进入线程
PUBLIC OS_SAVE_THIS_TASK  ;保存当前线程

PUBLIC OS_SAVE_SYSTEM_R   ;保存系统R寄存器
PUBLIC OS_RESTORE_SYSTEM_R;恢复系统R积存器
;*****************************************************************
;
;        外部函数声明
;
;
;*****************************************************************
EXTRN CODE (OS_ATTEMPER)

;****************************************************************
;
;       中断入口
;
;****************************************************************
CSEG AT 000BH
LJMP  OS_SAVE_ISR_TASK  ;跳入保存线程


OS_SAVE_ISR_TASK:       ;保存线程
    PUSH 0
    PUSH 1
    PUSH 2
    PUSH 3
    PUSH 4
    PUSH 5
    PUSH 6
    PUSH 7
    PUSH DPL
    PUSH DPH
    PUSH B
    PUSH ACC
    PUSH PSW
    LJMP  OS_ATTEMPER
    RET

OS_GOTO_TASK:
    POP PSW
    POP ACC
    POP B
    POP DPH
    POP DPL
    POP 7
    POP 6
    POP 5
    POP 4
    POP 3
    POP 2
    POP 1
    POP 0
    RETI

OS_SAVE_THIS_TASK:
    PUSH 0
    PUSH 1
    PUSH 2
    PUSH 3
    PUSH 4
    PUSH 5
    PUSH 6
    PUSH 7
    PUSH DPL
    PUSH DPH
    PUSH B
    PUSH ACC
    PUSH PSW
    LJMP  OS_ATTEMPER
    RET

OS_SAVE_SYSTEM_R:
    PUSH 0
    PUSH 1
    PUSH 2
    PUSH 3
    PUSH 4
    PUSH 5
    PUSH 6
    PUSH 7

    MOV ACC,SP
    SUBB A,#08
    MOV SP,ACC

    RET

OS_RESTORE_SYSTEM_R:
    POP 7
    POP 6
    POP 5
    POP 4
    POP 3
    POP 2
    POP 1
    POP 0

    MOV ACC,SP
    ADD A,#08
    MOV SP,ACC

    RET
END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?