Autor
|
Tema: Error en practica (Leído 4,847 veces)
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
Hola, bueno soy yo de nuevo el noob de siempre xD. Os muestro esto: format pe console entry start include 'win32ax.inc' .data nt db ? .code start: xor eax,eax add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov [nt],eax xor eax,eax xor ebx,ebx mov eax,6 div [nt] push nt call[printf] push 0 call [getchar] ret section '.idata' import data readable library msvcrt,'MSVCRT.dll' import msvcrt,printf,'printf',getchar,'_fgetchar'
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
|
|
« Última modificación: 8 Julio 2009, 14:04 pm por Eternal Idol »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
nt es d b (un byte) y eax es un registro de 32 bits, tenes que declarar nt como dd. Y la division: xor edx, edx mov eax,[nt] mov ecx, 6 div ecx
¿Sabes usar printf? El primer parametro tiene que ser un puntero a una cadena, no un entero. Por ejemplo en .data: formato db "Total %d Media %d", 13, 10, 0
Y se llama asi en este caso: push eax ;ese el resultado de la division push [nt] push formato call [printf] add esp, 0Ch ;hay que arreglar la pila, 3 parametros x 4 bytes cada uno = 12 = 0Ch
Mas facil: cinvoke printf, formato, [nt], eax
PD. No te olvides de usar cinvoke o arreglar la pila cuando llames a funciones con convencion de llamada C.
|
|
« Última modificación: 8 Julio 2009, 14:06 pm por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
Muchísimas gracias idol, eres un crack. EDIT: Entonces el uso de variables es inecesario EDIT2: Código final: format pe console entry start include 'win32ax.inc' .data formato db "Media %d", 13, 10, 0 .code start: xor eax,eax xor edx,edx add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov ecx, 6 div ecx push eax push formato call [printf] push 0 call [getchar] ret section '.idata' import data readable library msvcrt,'MSVCRT.dll' import msvcrt,printf,'printf',getchar,'_fgetchar'
|
|
« Última modificación: 8 Julio 2009, 14:19 pm por Erik# »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
De nada; fijate que la pila sigue estando mal, el programa da una excepcion en lugar de terminar correctamente.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
Perdon me olvide de arreglar la pila con: add esp, 0Ch
Y acabar con ExitProcess: format pe console entry start include 'win32ax.inc' .data formato db "Media %d", 13, 10, 0 .code start: xor eax,eax xor edx,edx add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov ecx, 6 div ecx push eax push formato call [printf] add esp, 0Ch push 0 call [getchar] push 0 call [exp] section '.idata' import data readable library msvcrt,'MSVCRT.dll',k32,'kernel32.dll' import msvcrt,printf,'printf',getchar,'_fgetchar' import k32,exp,'ExitProcess'
|
|
« Última modificación: 8 Julio 2009, 14:47 pm por Erik# »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
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 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?
|
|
« Última modificación: 8 Julio 2009, 15:04 pm por Erik# »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Para equilibrar la pila, empujaste dos DWORDs eax y formato. Asi tiene que funcionar bien: format pe console entry start include 'win32ax.inc' .data formato db "Media %d", 13, 10, 0 .code start: xor eax,eax xor edx,edx add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov ecx, 6 div ecx push eax push formato call [printf] add esp, 8 call [getchar] ret section '.idata' import data readable library msvcrt,'MSVCRT.dll' import msvcrt,printf,'printf',getchar,'_fgetchar'
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
Para equilibrar la pila, empujaste dos DWORDs eax y formato. Asi tiene que funcionar bien: format pe console entry start include 'win32ax.inc' .data formato db "Media %d", 13, 10, 0 .code start: xor eax,eax xor edx,edx add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov ecx, 6 div ecx push eax push formato call [printf] add esp, 8 call [getchar] ret section '.idata' import data readable library msvcrt,'MSVCRT.dll' import msvcrt,printf,'printf',getchar,'_fgetchar'
Si y claroooo, cada dword esta formado por 4 bytes por eso empujamos con add 8 que bien eternal, muchas gracias
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
consulta con ejercicio de practica
« 1 2 »
Programación C/C++
|
urvreak
|
14
|
6,756
|
20 Enero 2011, 22:39 pm
por urvreak
|
|
|
PRACTICA MONOPOLY
Dudas Generales
|
shawwilliam
|
1
|
2,088
|
17 Mayo 2013, 17:22 pm
por shawwilliam
|
|
|
Práctica Revista 7 HxC
Programación Visual Basic
|
apoeti
|
2
|
1,868
|
26 Junio 2013, 23:08 pm
por apoeti
|
|
|
Live USB; en la práctica...
GNU/Linux
|
B€T€B€
|
7
|
4,696
|
14 Enero 2014, 01:38 am
por B€T€B€
|
|
|
Práctica de hacking
Hacking
|
Varlch
|
5
|
4,680
|
5 Diciembre 2014, 01:25 am
por Varlch
|
|