TE Comp Sem-I MMC Prac 6 (DPMI)


.MODEL SMALL
.486P

DISPLAY1 MACRO MSG
    MOV AH,09H

    LEA DX,MSG
    INT 21H
ENDM

DIS MACRO CHAR
    MOV AH,02H
    MOV DL,CHAR
    INT 21H
ENDM

.DATA
    DPMI DW ?,?
    HEXTAB DB '0123456789ABCDEF'
   
    MSG_LDTR DB 10,13,"LDTR CONTAINS : $"
    MSG_IDTR DB 10,13,"IDTR CONTAINS : $"
    MSG_GDTR DB 10,13,"GDTR CONTAINS : $"
    MSG_TR DB 10,13,"TR CONTAINS : $"
    MSG_MSW DB 10,13,"MSW CONTAINS : $"
    GDTR DQ ?
    LDTR DW ?
    MSW DW ?
    TR DW ?
    IDTR DQ ?
    COLON DB ':'
.CODE
.STARTup
    MOV AX,1687H   
    INT 2FH            ;get DPMI entry point
    MOV DPMI[0],DI        ;dpmi entry point - offset
    MOV DPMI[2],ES        ;dpmi entry point - segment
     MOV ES,AX        ;invoke far call
    CALL DWORD PTR DPMI    ;switch to protected mode
    JNC PMODE
    JMP EXIT   
PMODE:
    SIDT IDTR
    SGDT GDTR
    SLDT LDTR
    SMSW MSW
    STR TR

        DISPLAY1 MSG_IDTR
    MOV BX,WORD PTR[IDTR+4]
    CALL CONV
    MOV BX,WORD PTR[IDTR+2]
    CALL CONV
    DIS COLON
    MOV BX,WORD PTR[IDTR]
    CALL CONV

        DISPLAY1 MSG_GDTR
    MOV BX,WORD PTR[GDTR+4]
    CALL CONV
    MOV BX,WORD PTR[GDTR+2]
    CALL CONV
    DIS COLON
    MOV BX,WORD PTR[GDTR]
    CALL CONV

        DISPLAY1 MSG_LDTR
    MOV BX,WORD PTR[LDTR]
    CALL CONV

        DISPLAY1 MSG_MSW
    MOV BX,WORD PTR[MSW]
    CALL CONV
   
        DISPLAY1 MSG_TR
    MOV BX,WORD PTR[TR]
    CALL CONV
   
EXIT:MOV AH,4CH
    INT 21H
       
CONV PROC NEAR
    MOV CX,4
DIGIT:
    ROL BX,4
    PUSH BX
    MOV DI,BX
    AND DI,000FH
    MOV DL,HEXTAB[DI]
    MOV AH,02H
    INT 21H
    POP BX
    LOOP DIGIT
    RET
CONV ENDP

end

No comments:

Post a Comment