Ayuda manipular cadenas - NASM x86-64

Iniciado por BigKhalPablo, Febrero 05, 2017, 02:53:02 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

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