CODE_DATA_SEG   SEGMENT
                ASSUME CS:CODE_DATA_SEG,DS:CODE_DATA_SEG
                ORG     100h

DISP_LINE       PROC NEAR
                MOV     BX,0
                MOV     CX,16
HEX_LOOP:
                MOV     DL,LINE[BX]
                PUSH    CX
                MOV     CL,4
                SHR     DL,CL
                POP     CX
                CALL    WRITE_DIGIT
                MOV     DL,LINE[BX]
                AND     DL,0Fh
                CALL    WRITE_DIGIT
                MOV     AH,02h
                MOV     DL,' '
                INT     21h
                INC     BX
                LOOP    HEX_LOOP

                MOV     BX,0
                MOV     CX,16
ASCII_LOOP:
                MOV     AH,02
                MOV     DL,LINE[BX]
                CMP     DL,20h
                JAE     DRUCKBAR
                MOV     DL,'.'
DRUCKBAR:
                INT     21h
                INC     BX
                LOOP    ASCII_LOOP

                INT     20h
DISP_LINE       ENDP

WRITE_DIGIT     PROC NEAR
                ADD     DL,30h
                CMP     DL,3Ah
                JB      DIGIT_OK
                ADD     DL,07h
DIGIT_OK:
                MOV     AH,02h
                INT     21h
                RET
WRITE_DIGIT     ENDP

;LINE            DB      30h, 31h, 32h, 33h, 34h, 35h, 36h, 37h
;                DB      38h, 39h, 3Ah, 3Bh, 3Ch, 3Dh, 3Eh, 3Fh
LINE            DB      10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h
                DB      38h, 39h, 3Ah, 3Bh, 3Ch, 3Dh, 3Eh, 3Fh

CODE_DATA_SEG   ENDS
                END DISP_LINE