EttinOS/src/BYTE2HEX.INC

50 lines
582 B
Plaintext

;Converts a byte in AL to a hex string at DI.
byte2hex:
;Store the initial registers in the stack
push si
push ax
push bx
push cx
;Move the byte to AH
mov ah, al
;Set a key for the hex digits
mov si, .key
;Set a counter for the two hex digits
mov cx, 0x2
.loop:
;Read a nibble
rol ax, 0x1
rol ax, 0x1
rol ax, 0x1
rol ax, 0x1
mov bx, ax
;Convert the nibble to a hex digit
and bx, 0xf
mov bl, [si + bx]
;Store the hex digit
mov [di], bl
;Repeat
inc di
dec cx
jnz .loop
;Load the initial registers from the stack
pop cx
pop bx
pop ax
pop si
ret
.key db "0123456789abcdef"