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