diff --git a/src/elib/convert.asm b/src/elib/convert.asm index 85860e7..af5b421 100644 --- a/src/elib/convert.asm +++ b/src/elib/convert.asm @@ -5,10 +5,22 @@ HEX_OUT: db "0x0000", ASCII_END ; since it fills the register with the desired ; pointer toward the string. hexToASCII: + ; pusha mov cx, 0 ; incrementor hexloop: + cmp cx, 4 ; check if we reached the end + je return ; 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 return: mov bx, HEX_OUT diff --git a/src/equ/ASCII.asm b/src/equ/ASCII.asm index e9f1cc9..8ae3828 100644 --- a/src/equ/ASCII.asm +++ b/src/equ/ASCII.asm @@ -7,3 +7,7 @@ ASCII_VERTICAL_TAB equ 11 ASCII_LINEBREAK equ 10 ASCII_CARRIAGE_RETURN equ 13 ASCII_CLEAR equ 12 + +; Offsets +ASCII_OFFSET_NUM equ 0x30 +ASCII_OFFSET_CHAR equ 0x40