context.asm

来自「r&s1.10版本+文档是国内一个自主开发的操作系统还在升级完善中」· 汇编 代码 · 共 73 行

ASM
73
字号
        [BITS 16]


%define  FUN(name)   global  name
%define  VAR(name)   extern  name

 ;##########################################################

global  __task_init_bkp

FUN(___switch_start)
___switch_start:      
        mov     bp, sp
        mov     ax, [bp+4]      ; load next sp
        mov     bx, [bp+6]
        mov     ss, bx
        mov     sp, ax
        retf
        
__task_init_bkp:
        pop     ds
        popf
        retf

 ;##########################################################
FUN(___switch_to)
___switch_to:
        push    bp
        mov     bp, sp
        push    si
        push    di
        push    es

        push    seg __task_bkp
        push    __task_bkp
        
        les     bx, [bp+0x06]      ; current ptr
        mov     [es:bx+2], ss
        mov     [es:bx+0], sp

        mov     ax, [bp+0x0a]      ; load next sp
        mov     bx, [bp+0x0c]
        mov     ss, bx
        mov     sp, ax

        retf
        
__task_bkp:
        pop     es
        pop     di
        pop     si
        pop     bp
        retf

;##########################################################
extern ___timer_interrupt

FUN(___timer_intr_s)
___timer_intr_s:

        pusha
        push    es
        push    ds

        call    far ___timer_interrupt

        pop     ds
        pop     es
        popa
        iret


⌨️ 快捷键说明

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