94 lines
884 B
NASM
94 lines
884 B
NASM
|
|
;Input AX
|
|
PRINT_16_HEX:
|
|
PUSH DX
|
|
|
|
TEST AH,#0xF0
|
|
jz NOT_FIRST_NIBBLE
|
|
MOV DL,AH
|
|
CALL PRINT_HIGH
|
|
JMP SKIP1
|
|
|
|
NOT_FIRST_NIBBLE:
|
|
TEST AH,#0x0F
|
|
jz NOT_SECOND_NIBBLE
|
|
SKIP1:
|
|
MOV DL,AH
|
|
CALL PRINT_LOW
|
|
JMP SKIP2
|
|
|
|
NOT_SECOND_NIBBLE:
|
|
TEST AL,#0xF0
|
|
jz NOT_THIRD_NIBBLE
|
|
SKIP2:
|
|
MOV DL,AL
|
|
CALL PRINT_HIGH
|
|
|
|
NOT_THIRD_NIBBLE:
|
|
MOV DL,AL
|
|
CALL PRINT_LOW
|
|
|
|
PUSH AX
|
|
MOV AH,#0x02
|
|
MOV DL,#0x20
|
|
INT #0x21
|
|
POP AX
|
|
|
|
POP DX
|
|
RET
|
|
|
|
PRINT_HIGH:
|
|
AND DL,#0xF0
|
|
TEST DL,#0x80
|
|
jz NOT1
|
|
OR DL,#0x08
|
|
NOT1:
|
|
TEST DL,#0x40
|
|
jz NOT2
|
|
OR DL,#0x04
|
|
NOT2:
|
|
TEST DL,#0x20
|
|
jz NOT3
|
|
OR DL,#0x02
|
|
NOT3:
|
|
TEST DL,#0x10
|
|
jz DONE
|
|
OR DL,#0x01
|
|
DONE:
|
|
|
|
PRINT_LOW:
|
|
PUSH AX
|
|
AND DL,#0x0F
|
|
CMP DL,#0x0A
|
|
JNS LETTERS
|
|
ADD DL,#0x30
|
|
MOV AH,#0x02
|
|
INT #0x21
|
|
POP AX
|
|
RET
|
|
|
|
LETTERS:
|
|
ADD DL,#0x37
|
|
MOV AH,#0x02
|
|
INT #0x21
|
|
POP AX
|
|
RET
|
|
|
|
PRINT_0_8_HEX:
|
|
MOV DL,AL
|
|
|
|
PUSH AX
|
|
CALL PRINT_HIGH
|
|
POP AX
|
|
|
|
MOV DL,AL
|
|
CALL PRINT_LOW
|
|
|
|
PUSH AX
|
|
MOV AH,#0x02
|
|
MOV DL,#0x20
|
|
INT #0x21
|
|
POP AX
|
|
|
|
RET
|