Título: Error en practica Publicado por: Erik# en 8 Julio 2009, 12:39 pm Hola, bueno soy yo de nuevo el noob de siempre xD.
Os muestro esto: Código
Estoy intentando hacer que entre 6 resultados de examenes los divida y me de la media, pero me salta error al intentar masar del eax al nt (nota total). ¿Que puede ocurrir? EI: juntando mensajes. En cambio, si pongo directamente 34 no me salta error, me muestra el codigo ascii (&) pero igualmente no me salta error :( Título: Re: Error en practica Publicado por: Eternal Idol en 8 Julio 2009, 13:51 pm nt es db (un byte) y eax es un registro de 32 bits, tenes que declarar nt como dd.
Y la division: Código
¿Sabes usar printf? El primer parametro tiene que ser un puntero a una cadena, no un entero. Por ejemplo en .data: Código
Y se llama asi en este caso: Código
Mas facil: Código
PD. No te olvides de usar cinvoke o arreglar la pila cuando llames a funciones con convencion de llamada C. Título: Re: Error en practica Publicado por: Erik# en 8 Julio 2009, 14:13 pm Muchísimas gracias idol, eres un crack.
EDIT: Entonces el uso de variables es inecesario EDIT2: Código final: Código
Título: Re: Error en practica Publicado por: Eternal Idol en 8 Julio 2009, 14:27 pm De nada; fijate que la pila sigue estando mal, el programa da una excepcion en lugar de terminar correctamente.
Título: Re: Error en practica Publicado por: Erik# en 8 Julio 2009, 14:42 pm Perdon me olvide de arreglar la pila con:
Código
Y acabar con ExitProcess: Código
Título: Re: Error en practica Publicado por: Eternal Idol en 8 Julio 2009, 14:59 pm ExitProcess no es necesario, a menos que no arregles la pila correctamente como en este caso, si empujas dos parametros entonces tenes que usar add esp, 08h. Y en getchar no hace falta empujar nada, no tiene parametros ;D
Título: Re: Error en practica Publicado por: Erik# en 8 Julio 2009, 15:01 pm ExitProcess no es necesario, a menos que no arregles la pila correctamente como en este caso, si empujas dos parametros entonces tenes que usar add esp, 08h. Y en getchar no hace falta empujar nada, no tiene parametros ;D Me sigue saltando error si no le pongo exitprocess. EDIT: Aun continuaba con el push 0 del exitprocess por eso me saltaba el error. ¿Por que se usa add esp,08h? Título: Re: Error en practica Publicado por: Eternal Idol en 8 Julio 2009, 15:12 pm Para equilibrar la pila, empujaste dos DWORDs eax y formato.
Asi tiene que funcionar bien: Código
Título: Re: Error en practica Publicado por: Erik# en 8 Julio 2009, 15:15 pm Para equilibrar la pila, empujaste dos DWORDs eax y formato. Asi tiene que funcionar bien: Código
Si y claroooo, cada dword esta formado por 4 bytes por eso empujamos con add 8 :) que bien eternal, muchas gracias :P |