• Martes 7 de Mayo de 2024, 22:40

Autor Tema:  Convertir Cadena A Numero  (Leído 2497 veces)

Forly

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Convertir Cadena A Numero
« en: Sábado 12 de Febrero de 2005, 22:18 »
0
Hola a todos.
Soy nuevo en este tipo de programación, y no se cómo hacer para convertir una cadena de caracteres con más de 2 digitos a un número entero.

Por ejemplo:

CadNum db '95'         ; Cadena con 2 digitos.
Num       db 0            ; Numero entero resultado.
VPos      db  1           ; Valor posicional.

Esto se como hacerlo:
1) tomo el digito menos significativo de la cadena CadNum ('5')
2) lo convierto a número restándole 48 decimal.
3) multiplico el numero resultante por VPos (Valor posicional).
4) Sumo el resultado obtenido al contenido de Num.
5) Multiplico el valor posicional (VPos) por 10 decimal.
6) guardo el resultado en VPos.
7) tomo el digito siguiente y repito las operaciones desde el punto (2)

Esto que sigue no se como hacerlo

CadNum  db  '1234'
Num       dd   0
VPos       qw  1

(El tema es que no entiendo cómo manejar el número resultante cuando
 se encuentra en dos registros - DX:AX).

¿Alguno de ustedes podría explicármelo?

Desde ya les quedo muy agradecido por dedicarme su tiempo.

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Convertir Cadena A Numero
« Respuesta #1 en: Domingo 13 de Febrero de 2005, 19:27 »
0
Otra forma es tomar primero el más significativo y sumarlo a lo que tengas en "acumulado", para agregar otro dígito multiplicas lo que tengas en "acumulado" por 10 y sumas el siguiente dígito hasta terminar la cadena.

Manejar un número de 32 bits en DX:AX (en DX los 16 bits altos) en modo de 16 bits (sin utilizar EAX, EDX, etc) es problemático por que necesitas agregar codigo extra. En 16 bits no basta con una simple instrucción MUL, no dispones de un registro de 32 bits. Lo mismo en 32 bits si quieres multiplicar por un número de 64 bits: no te basta una simple instrucción y el código se complica, no es algo deseable pero tampoco imposible. Todas las operaciones se complican, tienes que usar los flags de carry, borrow... es un lio.

Forly

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Convertir Cadena A Numero
« Respuesta #2 en: Domingo 13 de Febrero de 2005, 23:21 »
0
Gracias Amilius:

Voy a intentarlo.

Te mando un abrazo.