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