Tengo este código que suma 2 numeros de 2 dígitos en ensamblador NASM, pero quisiera mostrar el resultado en pantalla mediante una función CALL, el problema es que no entiendo como realizarlo ya que el resultado de la suma està en el registro eax y està en hexadecimal, tengo mi duda de si tengo que realizar una conversion a decimal de ese número o algua cosa así.
Código
section .data msg_1: db "Introduce un primer numero :", 10 lnmsg1 : equ $-msg_1 msg_2: db "Escribe un segundo numero :", 10 lnmsg2 : equ $-msg_2 msg_3: db "El resultado de la suma es:",10 lnmsg3 : equ $-msg_3 diez db 10 section .bss num1 resb 10 num2 resb 10 resultado resb 10 aux resb 10 section .text global _start _start: mov ecx, msg_1 mov edx, lnmsg1 mov ebx, 1 mov eax, 4 int 0x80 mov ecx, num1 mov edx, 10 mov ebx, 1 mov eax, 3 int 0x80 mov ecx, msg_2 mov edx, lnmsg2 mov ebx, 1 mov eax, 4 int 0x80 mov ecx, num2 mov edx, 10 mov ebx, 1 mov eax, 3 int 0x80 mov esi, num1 call atoi pop eax mov esi, num2 call atoi pop ebx add eax, ebx ;El resultado de la suma se guarda en eax call imprimir jmp end atoi: push ebp mov ebp, esp xor eax, eax .top: movzx ecx, byte [esi] ; obtener un caracter inc esi ; leer la siguiente dirección cmp ecx, '0' ; digito valido? jb .done cmp ecx, '9' ja .done sub ecx, '0' ; "convertir" caracter a numero imul eax, eax, 10 ; multiplicar el resultado obtenido por 10 add eax, ecx ; sumatoria jmp .top ; until done .done: pop ebp ret imprimir: push ebp mov ebp, esp mov [resultado], eax mov eax, 4 mov ebx, 1 mov ecx, msg_3 mov edx, lnmsg3 int 0x80 mov eax, 4 mov ebx, 1 mov ecx, resultado mov edx, 10 int 0x80 pop ebp ret end: mov eax, 1 xor ebx, ebx int 80h ; algoritmo de conversion ; val = 0 ; numero = "289" ; val = val + ('9' - 48) * 10⁰ ; val = 9 + ('8' - 48) * 10¹ ; val = 89 + ('2' - 48) * 10² ; imul dest, op1, op2