Título: error al imprimir Publicado por: Flamer en 28 Abril 2012, 01:40 am Hola amigos tengo una falla en mi codigo en masm quiero imprimir un numero digitado por el usuario este es el codigo
Citar .code start: call main exit main proc local num1:dword mov num1,input("dame un numero : ") mov eax,num1 print str$(eax) pero tiene un error me imprime la direccion de memoria de el valor no me imprime el valor digitado ejemplo numero digitado 5 y me imprime 4206640 cual es mi error a otra cosa que libro de masm me recomiendan y donde lo bajo (en español) saludos flamer Título: Re: error al imprimir Publicado por: Flamer en 29 Abril 2012, 01:37 am hola amigos ya lo solusione
Citar local num1:dword y listo el problema es pedir otro numero y sumarlos le pongomov num1,input("dame el numero") print (num1) Citar add num1,num2 y me marca errorbueno saludos flamer Título: Re: error al imprimir Publicado por: x64core en 29 Abril 2012, 09:05 am eso es cosa de conceptos basicos, debido que la CPU trabaja con los buses de control donde son pasados
los datos no podes usar dos posiciones de memoria, tenes que usar un registro de 8,16,32,64 bits dependiendo del tamaño de operando de memoria que es o podes usar las instruccion MOVZ . por cierto pone el codigo completo, creo que usas macros, porque? macros en ASM para eso programo en un lenguaje de alto nivel Título: Re: error al imprimir Publicado por: Flamer en 29 Abril 2012, 17:59 pm eso es todo el codigo lo demas son include lo de las librerias
perdona mi ignorancia pero nunca e usado masm y nose si estoy usando macros pero se genera el exe compilandolo en macros generas exe saludos y perdona mi ignorancia Título: Re: error al imprimir Publicado por: x64core en 29 Abril 2012, 19:49 pm eso es todo el codigo lo demas son include lo de las librerias perdona mi ignorancia pero nunca e usado masm y nose si estoy usando macros pero se genera el exe compilandolo en macros generas exe saludos y perdona mi ignorancia pues si, eso queria ver, que librerias usas... bueno jugando un poco con la macro porque no encontre la documentacion :| devuelve el puntero a los datos y no es necesario usar la Str$ con solo que hagas esto te imprime porque la print obtiene el puntero: mov num1,input("dame un numero : ") mov eax,num1 print eax pero la macro input parece que no te guarda el caracter nullo dentro de la cadena solamente lo escribe, talves alveces funcione porque en el espacio de memoria donde se encuntre el dato que escribiste, cerca solo se encuentren valores a 0, pero lo mas correcto es seria hacerlo así: mov num1,input("dame un numero : ") mov eax,num1 print eax print chr$(0) escribimos el caracter nullo Título: Re: error al imprimir Publicado por: Flamer en 30 Abril 2012, 00:47 am hola rhl ya pude como dije antes imprimir el numero dado por el usuario el problema ahora es sumarlo con otro numero dado por el usuario
pido el numero lo guardo en num2 y lo sumo con el comando add num1,num2 y me marca error no en tiendo por que pero yo creo que ya me sali del nombre del tema pido disculpas si es que tengo que abrir un tema para preguntar eso saludos Título: Re: error al imprimir Publicado por: x64core en 30 Abril 2012, 06:37 am entonces despues de obtener el puntero has esto:
mov reg32,dword ptr [puntero] add reg32,sumando resultado = reg32 Título: Re: error al imprimir Publicado por: Flamer en 30 Abril 2012, 18:00 pm boy a calarlo
reg32 es una variable el puntero es la direcion de memoria donde se al masena el numero correcto o estoy mal saludos EI: juntando mensajes. gracias RHL ya pude sumar los numeros el problema es otro pero yo lo resuelvo gracias por tu ayuda saludos flamer Título: Re: error al imprimir Publicado por: x64core en 1 Mayo 2012, 02:01 am reg32 deberia haber sido un registro de 32 bits, puntero, una variable o un registro donde conteniera el puntero no deberia
ser un inmediato |