mirror of https://github.com/E-Almqvist/eOS
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
876 B
41 lines
876 B
HEX_OUT: db "0x0000", ASCII_END
|
|
|
|
; SR to convert hex values into ASCII strings
|
|
; This SR is going to mess up some registers
|
|
; since it fills the register with the desired
|
|
; pointer toward the string.
|
|
|
|
hex_to_ascii:
|
|
mov cx, 0 ; incrementor
|
|
|
|
hexloop:
|
|
cmp cx, 4 ; check if we reached the end
|
|
je hexreturn ; if so just return our new ASCII string
|
|
|
|
mov ax, dx
|
|
|
|
; mask the hex value in ax so that we get the last "char"
|
|
and ax, 0x000f
|
|
|
|
; convert ax into ASCII (numeric)
|
|
add al, ASCII_OFFSET_NUM ; add 0x30
|
|
|
|
cmp al, 0x39 ; if al (char) > "9"
|
|
jle hexloop2
|
|
|
|
add al, 7 ; 7 distance from "A"
|
|
|
|
hexloop2:
|
|
; Write the char into the HEX_OUT string
|
|
mov bx, HEX_OUT + 5
|
|
sub bx, cx
|
|
|
|
mov [bx], al ; write the char into the string
|
|
ror dx, 4 ; "rotate" the string
|
|
|
|
inc cx ; increment and go onto next char
|
|
jmp hexloop
|
|
|
|
hexreturn:
|
|
mov bx, HEX_OUT
|
|
ret
|
|
|