www.pudn.com > czxtsycx1.zip > 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