📄 chg_task.asm
字号:
;exec.asm
.MODEL HUGE
.386P
include \tc\g\include\g_def.asm
include \tc\g\include\tos_seg.asm
include \tc\g\include\user_p1.asm
TOS_CODESEG SEGMENT PARA USE16
ASSUME CS:TOS_CODESEG,DS:DATA_TOS,SS:TOS_STACKSEG
TOS_BEGIN:
TOS_BEGIN0
CALL DISP_TOS_IN_TOS
MOV BX,USER_P1LDT_SEL
LLDT BX
MOV AX,TOS_DATA_SEL
MOV DS,AX
DB 0EAH
DW 0 ;DS:G_WORK[6]
dw USER_P1TSS_SEL
COMEBACK_TO_TOS:
JMP TURN_TO_REAL_MODE
TURN_TO_REAL_MODE:
CALL TURN_TO_REAL
include \tc\g\include\tos_used.asm
TOS_CODELEN = $
TOS_CODESEG ENDS
GDTSEG SEGMENT PARA USE16
GDT LABEL BYTE
G_NULL GDT_DESC <>
REAL_SEG GDT_DESC <0FFFFH,0,0,92H,0,0>
REAL_SEL = REAL_SEG - GDT
GDT_INIT_BEGIN LABEL BYTE
TOS_CODE GDT_DESC <0FFFFH,TOS_CODESEG,0,9AH,0,0> ;9AH=exec/read ,DPL=0
;limit must be 0ffffh for returnning to real_mode
TOS_CODE_SEL = TOS_CODE - GDT
TOS_DATA GDT_DESC <DATALEN,DATA_TOS,0,92H,0,0> ;92H=P ,DPL=0,TYPE=2
TOS_DATA_SEL = TOS_DATA - GDT
DATASEG GDT_DESC <DATALEN,DATA,0,92H,0,0> ;92H=P ,DPL=0,TYPE=2
DATA_SEL = DATASEG - GDT
TOS_STACK GDT_DESC <TOS_STACKLEN,TOS_STACKSEG,0,93H,0,0> ;96H=R/W ,DOWN
TOS_STACK_SEL = TOS_STACK - GDT
TOS_TSS GDT_DESC <TOS_TSSLEN,TOS_TSSSEG,0,089H,0,0> ;89H=386TSS DPL=0
TOS_TSS_SEL = TOS_TSS - GDT
USER_P1TSS GDT_DESC <USER_P1TSSLEN,USER_P1TSSSEG,0,089H,0,0> ;9AH=exec/read ,DPL=0
USER_P1TSS_SEL = USER_P1TSS - GDT
USER_P1TSS_D GDT_DESC <USER_P1TSSLEN,USER_P1TSSSEG,0,92H,0,0> ;9AH=exec/read ,DPL=0
USER_P1TSS_D_SEL = USER_P1TSS_D - GDT
USER_P1LDTT GDT_DESC <USER_P1LDTLEN,USER_P1LDTSEG,0,82H,0> ;82H=LDT
USER_P1LDT_SEL = USER_P1LDTT - GDT
GDT_ASDATA GDT_DESC <GDTLEN,GDTSEG,0,92H,0,0>
GDT_ASDATA_SEL = $ - GDT
GDT_INIT_COUNT = ($ - GDT_INIT_BEGIN)/(SIZE GDT_DESC)
G_VRAM GDT_DESC <0FFFFH,08000H,0BH,92H,0,0> ;92H=P ,DPL=0,TYPE=2
G_VRAM_SEL = G_VRAM - GDT ;60h
G_BUF GDT_DESC <0FFFFH,0,30H,92H,0,0> ;92H=P ,DPL=0,TYPE=2 ,base=3M
G_BUF_SEL = G_BUF - GDT
ps_TO_TOS_SEL = $
V_TOS_CODE_SEL = $
V_TOS_DATA_SEL = $
GDTLEN = $ - GDT
GDTSEG ENDS
include \tc\g\include\COS_DATA.asm
include \tc\g\include\COS_IDT0.asm
CODE SEGMENT PARA USE16 ;PUBLIC 'CODE' ;/////real_mode segment--->start
ASSUME CS:CODE,DS:DATA,SS:STACK
include \tc\g\include\a20.asm
MAIN PROC FAR
START:
REAL_BEGIN_PAGE
TURN_TO_PROTECT_MODE:
CALL GDT_INIT
CALL USER_P1_LDT_INIT
TURN_TO_PROTECT_page
REAL_MODE:
TO_DOS
MAIN ENDP
include \tc\g\include\g_real.asm
include \tc\g\include\p1_ldt.asm
CODE ENDS
;////////////////////real_mode segment----->end
include \tc\g\include\DOS_DATA.asm
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -