www.pudn.com > czxtsycx1.zip > PX_LDT.ASM


USER_Px_LDT_INIT     PROC FAR 
        ; IN: ax:V86LDTSEG 
        PUSH  DS 
        MOV   DS,AX 
        MOV   CX,USER_Px_LDT_INIT_COUNT 
        MOV   SI,OFFSET USER_Px_LDT_INIT_BEGIN 
USER_Px_LDT_INIT1: 
        MOV   AX,DS:[SI].LIMIT 
        CMP   AX,0FFFFH 
        JE    USER_Px_LDT_INIT2 
        DEC   AX 
USER_Px_LDT_INIT2:     
        MOV   DS:[SI].LIMIT,AX 
        MOV   AX,DS:[SI].BASE_L 
        MOVZX EAX,AX 
        SHL   EAX,4 
        SHLD  EDX,EAX,16 
        MOV   DS:[SI].BASE_L,AX 
        MOV   DS:[SI].BASE_M,DL 
        MOV   DS:[SI].BASE_H,DH 
        ADD   SI,SIZE GDT_DESC 
        LOOP  USER_Px_LDT_INIT1 
 
        ; 
        ;XOR DX,DX 
        ;MOV CX,16 
        ;MOV AX,USER_PxLDTSEG 
        ;MUL CX             ;DX:AX=32 address for GDT 
        ;MOV USER_Px_LDT_ADDR,USER_PxLDTLEN 
        ;MOV USER_Px_LDT_ADDR+2,AX 
        ;MOV USER_Px_LDT_ADDR+4,DX 
        POP DS 
        RET 
USER_Px_LDT_INIT ENDP