Programación General > ASM (Ensamblador)

 Lectura De Un Numero

(1/4) > >>

Enko:
Ahora que tenía un par de dias libres, decidi probar algunas cosas de assembly, estoy usando fasm para DOS.

Lo que quiero hacer, es basicamente leer un numero por teclado y almacenarlo en alguna variable y mostrarlo luego en la pantalla.

El problema mio consiste en que logro leer un vector de numeros.... pero no logro convertirlo a un numero.
Lo que tendria que hacer es algo asi (pseudocodigo):

--- Código: Text --- for(i=0; i<=Length(Numeros); i++){    Resultado += Numeros[i] * Potencia(10, i);}  
Este es el codigo, la parte problematica est'a resltada con mayusculas
trate de recortarlo lo mejor que pude (tendria que ser una calculadora con opciones, solo dejé la de sumar, de ahí comienza)

--- Código: Text --- format MZentry codseg : start segment codsegstart:    push dataseg   pop ds sumar:   mov   [result], 0   mov   dx, input_text   mov   ah, 9   int   21h   xor   si, si   mov   bx, numberingreso:;se pide el ingreso del caracter   mov   ah, 08h   int   21h;verifico si el ingreso es un numero   cmp   al, 13   je    seg_suma;es menor que 0   cmp   al, 30h   jl    ingreso;es mayor que 9   cmp   al, 39h   jg    ingreso;el numero es valido se guarda y se imprime   mov   ah, 02h   mov   dl, al   int   21h   mov   [bx + si], al   inc siloop ingreso seg_suma:;write line   mov   dx, write_line   mov   ah, 9   int   21h;write the number   mov   [bx+ si], byte '$'   mov   dx, number   mov   ah, 9   int   21h  ;save the number;**************************************************************;ESTA ES LA PARTE QUE NO SE COMO HACER;ES DECIR, QUIERO CONVERTIR LA CADENA EJ> '6','5',2' EN EL NUMERO 652   ;ACA TERMINA SUPUESTAMENTE LA PARTE PROBLEMATICA;*************************************************************  segment dataseg      pause_text    db 'Adios, presione una tecla....$'      input_text    db 'Ingrese numero: $'      write_line    db 13,10,'$'      number        db 0,0,0,0,0,0,0,0,0,'$'      result        dd 0                           
PD: Por sierto, FASM tiene procedimientos? trate de poner la palabra proc, pero no hubo caso :(:S

Enko:
Por sierto,  conocen algun ejemplo para usar la consola de windows, lo que necesito es solo el Read, ReadLine, Write, WriteLine.... es que odio DOS.
Busque en internet pero no hubo caso,.... :(

Eternal Idol:
Mira que el pseudocodigo no funciona tampoco eh, tenes que empezar a obtener los numeros de atras para adelante (el ultimo es la unidad y tiene que ser potenciada por cero asi termina siendo multiplicada por uno) y restarles el valor en ASCII de 0.

La verdad es que no me acuerdo de haber usado proc (tampoco lo suelo usar en MASM) con FASM, capaz aca encontras algo: http://flatassembler.net/docs.php

En cuanto a la consola de Windows: http://msdn.microsoft.com

Primero usas GetStdHandle para obtener un HANDLE a la consola y despues usas ese HANDLE con las funciones de I/O.

Enko:

--- Citar ---Mira que el pseudocodigo no funciona tampoco eh, tenes que empezar a obtener los numeros de atras para adelante (el ultimo es la unidad y tiene que ser potenciada por cero asi termina siendo multiplicada por uno) y restarles el valor en ASCII de 0.

--- Fin de la cita ---
Si me di cuenta en la noche cuando fui a dormir  :-$

Por sierto, no usas proc? ¿Se arregla toda la cosa con saltos?

Gracias por lo links, el de la pagina de Fasm ya lo había revisado, pero ahora me fijo lo de msnd.

Eternal Idol:

--- Cita de: "Enko" --- Por sierto, no usas proc? ¿Se arregla toda la cosa con saltos?
--- Fin de la cita ---
Una cosa es que no use PROC y otra que no use funciones. Basicamente lo que hago es meter por codigo lo que la directiva PROC del MASM mete "ocultamente". En MS-DOS se suelen pasar los parametros por registros y despues hacer el call y en Windows se usa la pila a placer.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa