📄 p_user_1.asm
字号:
;任务1的段定义
USER1_STACK SEGMENT
DB 1024 DUP(0)
USER1_STACK_LEN=1024
USER1_STACK ENDS
USER1_TSS SEGMENT
DW 0,0 ;TSS_LINK
DD USER1_STACK_LEN ;TSS_ESP0
DW USER1_STACK_SEL,0 ;TSS_SS0
DD 0 ;TSS_ESP1
DW 0,0 ;TSS_SS1
DD 0 ;TSS_ESP2
DW 0,0 ;TSS_SS2
DD 0 ;TSS_CR3
DW USER1_BEGIN,0 ;TSS_EIP
DD 0 ;TSS_EFLAGS
DD 0 ;TSS_EAX
DD 0 ;TSS_ECX
DD 0 ;TSS_EDX
DD 0 ;TSS_EBX
DD USER1_STACK_LEN-1 ;TSS_ESP
DD 0 ;TSS_EBP
DD 0 ;TSS_ESI
DD 0 ;TSS_EDI
DW 0,0 ;TSS_ES
DW USER1_CODE_SEL,0 ;TSS_CS
DW USER1_STACK_SEL,0 ;TSS_SS
DW OS_DATA_SEL,0 ;TSS_DS
DW 0,0 ;TSS_FS
DW 0,0 ;TSS_GS
DW USER1_LDT_SEL,0 ;TSS_LDT
DW 0 ;TSS_FLAG_T
DW $+2 ;TSS_BITMAP
DB 0FFH
USER1_TSS_LEN =$
USER1_TSS ENDS
USER1_LDT_SEG SEGMENT
USER1_LDT_NULL STRUCT_SEG<>
USER1_LDT_INIT_BEGIN LABEL BYTE
USER1_LDT_CODE STRUCT_SEG<0FFFFH,USER1_CODE,0,9AH,0,0>
USER1_CODE_SEL =USER1_LDT_CODE-USER1_LDT_NULL+04H
;USER1_LDT_ASDATA STRUCT_SEG<0FFFFH,USER1_LDT_SEG,0,92H,0,0>
;USER1_LDTDATA_SEL =USER1_LDT_ASDATA-USER1_LDT_NULL+04H
USER1_LDT_STACK STRUCT_SEG<0FFFFH,USER1_STACK,0,92H,0,0>
USER1_STACK_SEL =USER1_LDT_STACK-USER1_LDT_NULL+04H
USER1_LDT_INIT_COUNT =($-USER1_LDT_INIT_BEGIN)/(SIZE STRUCT_SEG)
;USER1_LDT_TO_OS STRUCT_GATE<0FFFFH,V_OS_TSS_SEL,0,85H,0>
USER1_LDT_TO_OS STRUCT_GATE<0FFFFH,OS_TSS_SEL,0,85H,0>
USER1_TO_OS_SEL =USER1_LDT_TO_OS-USER1_LDT_NULL+04H
USER1_LDT_LEN =$-USER1_LDT_NULL
USER1_LDT_SEG ENDS
USER1_CODE SEGMENT
ASSUME CS:USER1_CODE,DS:OS_DATA,SS:USER1_STACK
USER1_BEGIN:
MOV AH,2 ;用浅蓝色清屏
MOV CL,9
INT 21H
MOV AH,07H ;显示矩形框
MOV BX,130
MOV DX,200
MOV SI,400
MOV DI,200
MOV CH,07H
MOV CL,08H
INT 21H
MOV AH,07H ;显示矩形框
MOV BX,135
MOV DX,205
MOV SI,400-10
MOV DI,200-10
MOV CH,08H
MOV CL,07H
INT 21H
MOV AX,OS_DATA_SEL ;显示字符串
MOV DS,AX
MOV ES,AX
MOV AX,0100H
MOV DI,OFFSET USER1_MSG_1
MOV BX,12
MOV DX,37
MOV CL,07H
INT 21H
MOV AX,OS_DATA_SEL ;显示字符串
MOV ES,AX
MOV AX,0100H
MOV DI,OFFSET USER1_MSG_2
MOV BX,35
MOV DX,2
MOV CL,07H
INT 21H
MOV AH,7 ;显示矩形框
MOV BX,16*34+4
MOV DX,8*69
MOV SI,8*26
MOV DI,40
MOV CH,08H
MOV CL,0FH
INT 21H
MOV AX,OS_DATA_SEL ;显示字符串
MOV ES,AX
MOV AX,0100H
MOV DI,OFFSET MSG_PLP
MOV BX,35
MOV DX,72
MOV CL,07H
INT 21H
LBL_WAIT_S: ;等待按S键
IN AL,60H
CMP AL,1FH
JNZ LBL_WAIT_S
DB 0EAH
DW OFFSET LBL_BACK_TO_OS
DW USER1_TO_OS_SEL
USER1_CODE_LEN =$
USER1_CODE ENDS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -