Intel Syntax. This is from my bootloader but you should be able to get the idea.
print_value_of_CX:
print_value_of_C_high:
print_value_of_C_high_high_part:
MOV AH, CH
SHR AH, 0x4
CALL byte_hex_printer
print_value_of_C_high_low_part:
MOV AH, CH
SHL AH, 0x4
SHR AH, 0x4
CALL byte_hex_printer
print_value_of_C_low:
print_value_of_C_low_high_part:
MOV AH, CL
SHR AH, 0x4
CALL byte_hex_printer
print_value_of_C_low_low_part:
MOV AH, CL
SHL AH, 0x4
SHR AH, 0x4
CALL byte_hex_printer
byte_hex_printer:
CMP AH, 0x00
JE move_char_for_zero_into_AL_to_print
CMP AH, 0x01
JE move_char_for_one_into_AL_to_print
CMP AH, 0x02
JE move_char_for_two_into_AL_to_print
CMP AH, 0x03
JE move_char_for_three_into_AL_to_print
CMP AH, 0x04
JE move_char_for_four_into_AL_to_print
CMP AH, 0x05
JE move_char_for_five_into_AL_to_print
CMP AH, 0x06
JE move_char_for_six_into_AL_to_print
CMP AH, 0x07
JE move_char_for_seven_into_AL_to_print
CMP AH, 0x08
JE move_char_for_eight_into_AL_to_print
CMP AH, 0x09
JE move_char_for_nine_into_AL_to_print
CMP AH, 0x0A
JE move_char_for_A_into_AL_to_print
CMP AH, 0x0B
JE move_char_for_B_into_AL_to_print
CMP AH, 0x0C
JE move_char_for_C_into_AL_to_print
CMP AH, 0x0D
JE move_char_for_D_into_AL_to_print
CMP AH, 0x0E
JE move_char_for_E_into_AL_to_print
CMP AH, 0x0F
JE move_char_for_F_into_AL_to_print
move_char_for_zero_into_AL_to_print:
MOV AL, 0x30
CALL print_teletype_stringB
RET
move_char_for_one_into_AL_to_print:
MOV AL, 0x31
CALL print_teletype_stringB
RET
move_char_for_two_into_AL_to_print:
MOV AL, 0x32
CALL print_teletype_stringB
RET
move_char_for_three_into_AL_to_print:
MOV AL, 0x33
CALL print_teletype_stringB
RET
move_char_for_four_into_AL_to_print:
MOV AL, 0x34
CALL print_teletype_stringB
RET
move_char_for_five_into_AL_to_print:
MOV AL, 0x35
CALL print_teletype_stringB
RET
move_char_for_six_into_AL_to_print:
MOV AL, 0x36
CALL print_teletype_stringB
RET
move_char_for_seven_into_AL_to_print:
MOV AL, 0x37
CALL print_teletype_stringB
RET
move_char_for_eight_into_AL_to_print:
MOV AL, 0x38
CALL print_teletype_stringB
RET
move_char_for_nine_into_AL_to_print:
MOV AL, 0x39
CALL print_teletype_stringB
RET
move_char_for_A_into_AL_to_print:
MOV AL, 0x41
CALL print_teletype_stringB
RET
move_char_for_B_into_AL_to_print:
MOV AL, 0x42
CALL print_teletype_stringB
RET
move_char_for_C_into_AL_to_print:
MOV AL, 0x43
CALL print_teletype_stringB
RET
move_char_for_D_into_AL_to_print:
MOV AL, 0x44
CALL print_teletype_stringB
RET
move_char_for_E_into_AL_to_print:
MOV AL, 0x45
CALL print_teletype_stringB
RET
move_char_for_F_into_AL_to_print:
MOV AL, 0x46
CALL print_teletype_stringB
RET