mov ax, SelectorData
mov ds, ax
cmp byte [iFlagMultiTask], 0
jnz .MultiTask_p2
.MultiTask_p1:
mov byte [iFlagMultiTask], 1
pop ecx ; 恢复现场
pop es ; 恢复现场
pop ds ; 恢复现场
sti
mov al, 20h ; 通知中断控制器中断处理结束
out 20h, al
pop eax
jmp SelectorTSSP1:0 ; [iFlagMultiTask] == 0
.MultiTask_p2:
mov byte [iFlagMultiTask], 0
pop ecx ; 恢复现场
pop es ; 恢复现场
pop ds ; 恢复现场
sti
mov al, 20h ; 通知中断控制器中断处理结束
out 20h, al
pop eax
jmp SelectorTSSP2:0 ; [iFlagMultiTask] != 0