Hola buenas,
Estoy ratando de aprender asm y el otro dia hice un programa para leer el valor de EAX y EBX e imprimirlo en pantalla. Solo puedo imprimir valores entre 0-9, al tener que descomponer numeros mayores cifra a cifra y pasarlos a ASCII (num+0x30).
He buscado en internet y no he encontrado nada claro sobre el tema de leer carcateres y manipular strings. Como habrían hecho este programa? Me interesa ver otras formas de concadenar sin tener que estar limitado por qword y porque el numero no sea mayor de 9.
Les dejo el programa:
section .data
section .bss
msg resq 1 ; resverva 64 bits a la variable msg
section .text
global _start
_start:
mov ax,9 ; inic registros
mov bx,0
add ax,0x30 ; convierte a ASCII
add bx,0x30
mov dword [msg],'EAX:' ; impresion del valor de registros eax y ebx
mov dword [msg+4],eax
mov dword [msg+5],' EBX'
mov dword [msg+9],':'
mov dword [msg+10],ebx
mov dword [msg+11],0xA ; salto de linea
mov edx,12 ; longitud cadena
mov ecx,msg ; string
mov ebx,1 ; stdout
mov eax,4 ; print
int 0x80
mov eax,1 ; exit
int 0x80
Gracias :3
Estoy ratando de aprender asm y el otro dia hice un programa para leer el valor de EAX y EBX e imprimirlo en pantalla. Solo puedo imprimir valores entre 0-9, al tener que descomponer numeros mayores cifra a cifra y pasarlos a ASCII (num+0x30).
He buscado en internet y no he encontrado nada claro sobre el tema de leer carcateres y manipular strings. Como habrían hecho este programa? Me interesa ver otras formas de concadenar sin tener que estar limitado por qword y porque el numero no sea mayor de 9.
Les dejo el programa:
section .data
section .bss
msg resq 1 ; resverva 64 bits a la variable msg
section .text
global _start
_start:
mov ax,9 ; inic registros
mov bx,0
add ax,0x30 ; convierte a ASCII
add bx,0x30
mov dword [msg],'EAX:' ; impresion del valor de registros eax y ebx
mov dword [msg+4],eax
mov dword [msg+5],' EBX'
mov dword [msg+9],':'
mov dword [msg+10],ebx
mov dword [msg+11],0xA ; salto de linea
mov edx,12 ; longitud cadena
mov ecx,msg ; string
mov ebx,1 ; stdout
mov eax,4 ; print
int 0x80
mov eax,1 ; exit
int 0x80
Gracias :3