www.pudn.com > czxtsycx1.zip > PS_LDT.ASM
USER_Ps_LDT_INIT PROC FAR
PUSH DS
MOV AX,USER_PsLDTSEG
MOV DS,AX
MOV CX,USER_Ps_LDT_INIT_COUNT
MOV SI,OFFSET USER_Ps_LDT_INIT_BEGIN
USER_Ps_LDT_INIT1:
MOV AX,[SI].LIMIT
CMP AX,0FFFFH
JE USER_Ps_LDT_INIT2
DEC AX
USER_Ps_LDT_INIT2:
MOV [SI].LIMIT,AX
MOV AX,[SI].BASE_L
MOVZX EAX,AX
SHL EAX,4
SHLD EDX,EAX,16
MOV [SI].BASE_L,AX
MOV [SI].BASE_M,DL
MOV [SI].BASE_H,DH
ADD SI,SIZE GDT_DESC
LOOP USER_Ps_LDT_INIT1
POP DS
;
XOR DX,DX
MOV CX,16
MOV AX,USER_PsLDTSEG
MUL CX ;DX:AX=32 address for GDT
MOV USER_Ps_LDT_ADDR,USER_PsLDTLEN
MOV USER_Ps_LDT_ADDR+2,AX
MOV USER_Ps_LDT_ADDR+4,DX
RET
USER_Ps_LDT_INIT ENDP