code SEGMENT Public byte 'CODE' ASSUME Cs:code, Ds:code buffer DB 6 DUP (?) _DebugChar PROC Near ; ; AL < Character To Be Shown ; push ax push dx mov ah, 1 mov dx, 0 int 14h pop dx pop ax ret _DebugChar ENDP _DebugString PROC Near ; ; BX < Offset of String To Be Shown (Null Terminate) ; push ax push bx push ds mov ax, cs mov ds, ax @@: mov al, [bx] inc bx or al, al jz @f call _DebugChar jmp @b @@: pop ds pop bx pop ax ret _DebugString ENDP NumHex PROC Near ; ; AL(0..3) < Hex Value ; AL > ASCII Code ; and al, 0Fh cmp al, 0Ah jb @f add al, 'A'-'0'-10 @@: add al, '0' ret NumHex ENDP NumByte PROC Near ; ; AL < Byte Value ; AX > Two ASCII Codes for Byte Value ; push dx mov dl, al call NumHex mov dh, al mov al, dl shr al, 1 shr al, 1 shr al, 1 shr al, 1 call NumHex mov dl, al mov ax, dx pop dx ret NumByte ENDP _DebugNumber PROC Near ; ; AX < Word Value To Be Shown ; push ax push bx push dx push bp push ds mov bx, cs mov ds, bx lea bx, buffer mov Byte Ptr [bx], 32 mov dx, ax mov al, dh call NumByte mov [bx+1], ax mov al, dl call NumByte mov [bx+3], ax lea bx, buffer call _DebugString pop ds pop bp pop dx pop bx pop ax ret _DebugNumber ENDP PUBLIC _DebugChar, _DebugString, _DebugNumber code ENDS END