Título: [AYUDA] No funciona este código Publicado por: tete55 en 9 Diciembre 2014, 12:10 pm He programado esta operación y no me funciona.
Alguien que entienda me la puede echar un ojo para ver que esta mal o si esta incompleto? Muchas gracias!!! :D :D Aquí os dejo el código: Código: ;X=A *B *C /100 Título: Re: [AYUDA] No funciona este código Publicado por: Eternal Idol en 9 Diciembre 2014, 13:01 pm ¿Que estas tratando de hacer? ¿Con que ensamblas eso? ¿Sabes que es codigo de 64 bits, no?
Y lo mas importante de todo: ¿Es esto una tarea y por eso borraste el codigo en el hilo anterior y creaste uno nuevo? Título: Re: [AYUDA] No funciona este código Publicado por: tete55 en 9 Diciembre 2014, 14:11 pm No he borrado ningún código de otro sitio, sino que he creado este nuevo post con el código completo para haber si alguien me podía ayudar
Estoy intentando aprender ensamblador en 32 bits, me he puesto a realizar la operación de multiplicar y dividir. El programa en sí realiza la operación: x = (a * b * c) / 100 lo estoy ensamblando con nasm pero no me da el resultado de la operación y no se por que. Por todo esto quería que alguien que sepa del tema me diga en que me he equivocado y así aprender Gracias Título: Re: [AYUDA] No funciona este código Publicado por: Eternal Idol en 9 Diciembre 2014, 15:06 pm ¿Que sentido tiene negarlo? Ahi habia codigo, es evidente.
https://foro.elhacker.net/asm/programa_que_calcule_multiplicaciones_asm-t425883.0.html Bueno, como te decia antes ese codigo es de 64 bits, los registros con el prefijo R son de 64 bits. Esto es algo elemental asi que te recomiendo LEER (lo ideal es con un buen libro) antes de volver a preguntar. https://foro.elhacker.net/asm/entry_point-t256455.0.html https://foro.elhacker.net/asm/libro_de_ensamblador-t255032.0.html https://foro.elhacker.net/asm/ensambladores_documentacion_herramientas-t393616.0.html Un poco del codigo: mov rax, qword [rbp+16] << Me imagino que aca esperas encontrar argv[1]. ¿Cual es el tipo de argv? mov qword [resultado], rax << QWORD es una palabra CUADRUPLE, una palabra - WORD - son 2 bytes, reservaste 4 bytes en total, suficiente para un DWORD no para un QWORD. ver 3.2.2 RESB and friends: Declaring Uninitialised Data http://www.posix.nl/linuxassembly/nasmdochtml/nasmdoc3.html El resto mas o menos deberia ir bien aunque no entiendo el sentido de empujar a la pila resultado, pasar de eax a ecx el cociente para despues asignarlo en resultado, ni lo siguiente: mov dword ptr [resultado],ecx ;para que queres poner en resultado el valor de A mov qword ptr [resultado],rbx ;idem con RBX que puede no ser identico al valor de B Seran copy/paste supogno ... en fin, la clave esta en como intentas recibir los parametros del programa. Título: Re: [AYUDA] No funciona este código Publicado por: tete55 en 10 Diciembre 2014, 17:35 pm Muchas gracias por la información aportada ya que gracias a ello he modificado varias cosas del código pero me sigue sin realizar la fórmula, si son tan amables de aportar alguna idea lo agradecería mucho.
Lo que debería hacer el programa es la operación Resultado = (a * b * c )/100 Muchas gracias a todos y perdonen las molestias :D :D :D Código: segment .data Título: Re: [AYUDA] No funciona este código Publicado por: Eternal Idol en 10 Diciembre 2014, 17:44 pm No mire con atencion el codigo por una sencilla razon: seguis teniendo el mismo problema conceptual con los parametros.
Mira lo que hay realmente en la pila, presta atencion al tipo de argv: http://www.gnu.org/software/libc/manual/html_node/Program-Arguments.html Título: Re: [AYUDA] No funciona este código Publicado por: xv0 en 10 Diciembre 2014, 20:44 pm Ese code esta 100% para reciclar, no te ofendas pero haces cosas sin sentido alguno ya te lo comento @EI.
Por que no usas un sistema fastcall? Usas los registros para pasar parametros, ya que estas en x64 tienes los registros r8-15 por descontado, ojo que algunos tienen funciones y podrian darte problemas. Ejemplo, que r13 == a, r14 == b, r15 == c, podrian ser punteros o lo que quieras. Tambien por otra parte, cuando chequeas los posibles Overflows? Para algo esta esa bandera, podrias tener datos erroneos por culpa de cosas como esa. Un saludo. Título: Re: [AYUDA] No funciona este código Publicado por: Vaagish en 10 Diciembre 2014, 22:36 pm Agrego un detalle:
Citar Estoy intentando aprender ensamblador en 32 bits Citar Bueno, como te decia antes ese codigo es de 64 bits, los registros con el prefijo R son de 64 bits. Esto es algo elemental asi que te recomiendo LEER Codigo nuevo: Código
Atención al leer,, y leer primero !!! Intenta limpiar el codigo,, tenes cosas de mas.. Saludos! |