⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p_user_1.asm

📁 操作系统实验教程核心技术与编程实例书中地例子代码
💻 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 + -