📄 protect.seg
字号:
TOS_STACKSEG SEGMENT PARA USE16
TOS_STACKLEN = 4096
DB TOS_STACKLEN DUP(0)
TOS_STACKSEG ENDS
USER_P_STACKSEG SEGMENT PARA USE16
USER_P_STACKLEN = 1024
DB USER_P_STACKLEN DUP(0)
USER_P_STACKSEG ENDS
USER_P1_STACKSEG SEGMENT PARA USE16
USER_P1_STACKLEN = 1024
DB USER_P1_STACKLEN DUP(0)
USER_P1_STACKSEG ENDS
USER_P1_STACK0SEG SEGMENT PARA USE16
USER_P1_STACK0LEN = 1024
DB USER_P1_STACK0LEN DUP(0)
USER_P1_STACK0SEG ENDS
TOS_TSSSEG SEGMENT PARA USE16
TOS_TASK TASKSS <>
DB 0FFH
TOS_TSSLEN = $
TOS_TSSSEG ENDS
USER_PsTSSSEG SEGMENT PARA USE16
USER_Ps_TASK TASKSS <>
DB 0FFH
USER_PsTSSLEN = $
USER_PsTSSSEG ENDS
USER_P1TSSSEG SEGMENT PARA USE16
DD 0 ;LINK
DD USER_P1_STACK0LEN,0 ;0_STACK
DW USER_P1_STACK0_SEL,0
DD 0 ;1_STACK
DW ?,0
DD 0 ;2_STACK
DW ?,0
DD 0 ;CR3
DW USER_P1BEGIN,0 ;EIP
DD 0 ;EFLAGS
DD 0 ;EAX
DD 0 ;ECX
DD 0 ;EDX
DD 0 ;EBX
DD USER_P1_STACKLEN ;ESP
DD 0 ;EBP
DD 0 ;ESI
DD 0 ;EDI
DW G_VRAM_SEL,0 ;ES
DW USER_P1_SEL,0 ;CS
DW ?,0 ;USER_P1_STACK_SEL,0 ;SS
DW ?,0 ;TOS_DATA_SEL,0 ;DS
DW ?,0 ;USER_P1LDT_ASDATA_SEL,0 ;FS
DW ?,0 ;GS
DW USER_P1LDT_SEL,0
DW 0
DW $ + 2
DB 0FFH
USER_P1TSSLEN = $
USER_P1TSSSEG ENDS
USER_PSEG SEGMENT PARA USE16
ASSUME CS:USER_PSEG,DS:DATA,SS:USER_P_STACKSEG
USER_PBEGIN:
MOV AX,TOS_DATA_SEL
MOV DS,AX
; disp 'A'
MOV AX,G_VRAM_SEL
MOV ES,AX
MOV AH,24H;07 for white/black
mov al,41h
mov es:322,ax
; disp 'A'
MOV AH,9
MOV CX,0204H ;15 row 21 column
MOV DX,OFFSET user_p_run
INT 21H
; two segs_call
MOV AX,04242H
mov cx,0240H
CALL16 tos_code_sel,disp_ext_ax
cli
MOV AX,REAL_SEL
MOV ES,AX
MOV FS,AX
MOV GS,AX
MOV SS,AX
MOV DS,AX
MOV EAX,CR0
AND EAX,0FFFFFFFEH
MOV CR0,EAX
DB 0EAH
DW OFFSET PROTECT_RET
DW CODE
USER_PLEN = $
USER_PSEG ENDS
USER_P1SEG SEGMENT PARA USE16
ASSUME CS:USER_P1SEG ;,DS:DATA ;,SS:USER_P1_STACKSEG
USER_P1BEGIN:
;jmp USER_P1_end
;MOV AX,TOS_DATA_SEL
;MOV DS,AX
; disp 'A'
MOV AX,G_VRAM_SEL
MOV ES,AX
MOV AH,24H;07 for white/black
mov al,48h
mov es:3040,ax
; disp 'A'
jmp USER_P1_end
MOV AH,9
MOV CX,0204H ;15 row 21 column
MOV DX,OFFSET user_p_run
INT 21H
; two segs_call
MOV AX,04242H
mov cx,0240H
CALL16 tos_code_sel,disp_ext_ax
USER_P1_end:
DB 0EAH
DW 0 ;OFFSET PROTECT_RET
DW p1_to_tos_sel
cli
MOV AX,REAL_SEL
MOV ES,AX
MOV FS,AX
MOV GS,AX
MOV SS,AX
MOV DS,AX
MOV EAX,CR0
AND EAX,0FFFFFFFEH
MOV CR0,EAX
DB 0EAH
DW 0 ;OFFSET PROTECT_RET
DW p1_to_tos_sel
USER_P1LEN = $
USER_P1SEG ENDS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -