www.pudn.com > czxtsycx1.zip > P_2.ASM
; ; V_SEL_SETUP PROC FAR MOV AX,GDT_ASDATA_SEL MOV DS,AX MOV AX,OS_DATA_SEL MOV ES,AX XOR EDX,EDX MOV EBX,0C0423000H MOV DX,OS_CODE_LEN AND DX,0FFFH CMP DX,0 JE V_SEL_1 ADD EBX,1000H V_SEL_1: MOV DX,OS_CODE_LEN AND DX,0F000H ADD EBX,EDX ;STACK ADDR MOV ES:OS_STACK_ADDR,EBX MOV ECX,EBX MOV DS:V_OS_STACK.BASE_L,CX SHR ECX,16 MOV DS:V_OS_STACK.BASE_M,CL MOV DS:V_OS_STACK.BASE_H,CH MOV DX,OS_STACK_LEN AND DX,0FFFH CMP DX,0 JE V_SEL_2 ADD EBX,1000H V_SEL_2: MOV DX,OS_STACK_LEN AND DX,0F000H ADD EBX,EDX ;DATA ADDR MOV ES:OS_DATA_ADDR,EBX MOV AX,GDT_ASDATA_SEL MOV DS,AX MOV ECX,EBX MOV DS:V_OS_DATA.BASE_L,CX SHR ECX,16 MOV DS:V_OS_DATA.BASE_M,CL MOV DS:V_OS_DATA.BASE_H,CH MOV AX,OS_DATA_SEL MOV DS,AX RET V_SEL_SETUP ENDP SEG_MOV MACRO s_sel,d_sel,s_off,d_off,mov_len LOCAL SEG_MOV1 MOV AX,s_sel MOV DS,AX MOV AX,d_sel MOV ES,AX MOV SI,s_off MOV EDI,d_off MOV CX,mov_len SEG_MOV1: MOV AL,DS:[SI] MOV ES:[EDI],AL INC SI INC EDI LOOP SEG_MOV1 ENDM SEGS_MOV_2M PROC FAR XOR ESI,ESI XOR EDI,EDI SEG_MOV GDT_IDT_SEL,GDT_MOV_SEL,0,0,IDT_LEN SEG_MOV OS_TSS_ASDATA_SEL,GDT_MOV_SEL,0,1000H,OS_TSS_LEN SEG_MOV GDT_ASDATA_SEL,GDT_MOV_SEL,0,2000H,GDT_LEN SEG_MOV OS_CODE_SEL,GDT_MOV_SEL,0,23000H,OS_CODE_LEN ;MOV AX,OS_DATA_SEL ;MOV DS,AX ;MOV EBX,DS:OS_STACK_ADDR ;SUB EBX,0C0400000H XOR EDX,EDX MOV EBX,0 MOV DX,OS_CODE_LEN AND DX,0FFFH CMP DX,0 JE G_MOV_1 ADD EBX,1000H G_MOV_1: MOV DX,OS_CODE_LEN AND DX,0F000H ADD EBX,EDX ADD EBX,23000H SEG_MOV OS_STACK_SEL,GDT_MOV_SEL,0,EBX,OS_STACK_LEN ;MOV EBX,DS:OS_DATA_ADDR ;SUB EBX,0C0400000H MOV DX,OS_STACK_LEN AND DX,0FFFH CMP DX,0 JE G_MOV_2 ADD EBX,1000H G_MOV_2: MOV DX,OS_STACK_LEN AND DX,0F000H ADD EBX,EDX SEG_MOV OS_DATA_SEL,GDT_MOV_SEL,0,EBX,OS_DATA_LEN SEGS_MOV_2M ENDP INIT_PDT PROC MOV AX,GDT_PDT_SEL MOV ES,AX XOR DI,DI MOV CX,1024 XOR EAX,EAX REP STOSD MOV EAX,GDT_PDT0_ADDR OR 3 MOV DWORD PTR ES:[0],EAX ADD EAX,1000H MOV DWORD PTR ES:[4],EAX ADD EAX,1000H MOV DWORD PTR ES:[3072],EAX ADD EAX,1000H MOV DWORD PTR ES:[3076],EAX MOV AX,GDT_PDT0_SEL MOV ES,AX XOR DI,DI MOV CX,2048 XOR EAX,EAX OR EAX,3 INIT_PGT0: STOSD ADD EAX,1000H LOOP INIT_PGT0 MOV CX,1024 MOV EAX,0A0000H OR EAX,3 INIT_PGT768: STOSD ADD EAX,1000H LOOP INIT_PGT768 MOV CX,53H MOV EAX,200000H OR EAX,3 INIT_PGT769: STOSD ADD EAX,1000H LOOP INIT_PGT769 RET INIT_PDT ENDP