Ensamblador y C

Iniciado por nadin, 2 Junio 2013, 03:20 AM

0 Miembros y 3 Visitantes están viendo este tema.

nadin

Tengo que disenar un programa en ensamblador que interactue con una funcion escrita en C. la funcion en C se encargara de realizar una multiplicacion con dos parámetros y devolvera su resultado al programa en ensamblador.
El programa en ensamblador pedira los dos parámetros por teclado, llamara a la funcion y devolver el resultado en pantalla

dooque

y tu pregunta cual es? (no se si leiste las normas del foro pero no hacemos ejercicios)

De nuevo, no tengo claro cual es tu duda. De paso podrías darnos algo más de informacion, por ejemplo:

> Arquitectura
> Sistema Operativo
> Version de C
> Compilador
> Ensamblador

Sds.
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.  -- Kernighan

dato000

Cita de: nadin en  2 Junio 2013, 03:20 AM
Tengo que disenar un programa en ensamblador que interactue con una funcion escrita en C. la funcion en C se encargara de realizar una multiplicacion con dos parámetros y devolvera su resultado al programa en ensamblador.
El programa en ensamblador pedira los dos parámetros por teclado, llamara a la funcion y devolver el resultado en pantalla

Di por favor, y además no se entiende que quieres, una función en C? facil en ensamblador lo que se puede hacer es dumpear ciertos resultados y mostrarlos en memoria, pero no he visto como hacer para que se haga compile un codigo HEX directamente en windows, a lo mucho, ponerlo en un editor HEX y ver su resultado en pantalla con desensamblador.

Ya de por si cuando usas C estas compilando, eso quiere decir que estas pidiendo un espacio de memoria, y como no estas usando memoria dinamica se usa un determinado parametro denominado "Head/Cabecera" en donde se resuelven las peticiones que no requieran demasiada memoria (como por ejemplo puede ser ejecuciones de main o pequeñas operaciones) así que estas requiriendo una ejecución directa del procesador para realizar tales procedimiento, en los cuales pasan desde comandos y funciones que son entendidas por el programador (programadas en C) y pasan a un lenguaje ensamblado (el compilador) que luego terminan siendo ordenes en lenguaje maquina/binario (el procesador) que se ejecutan en un determinado periodo haciendo lo que se le ordena.

Viejo quieres un programa en C que haga una multiplicacion, y retorne un resultado para mostrarlo en pantalla, vale, pero hay formas de solicitar las cosas, te sugiero que aprendas a hacer las cosas y no confundir terminos, aprende lo basico, o sino terminas con una laguna muy profunda.

Ah y el código... bueno, di por favor.  :silbar: :silbar:



0xDani

Dejando de lado lo poco que ha especificado el usuario, ahí va un tip sobre como se podría hacer esto:

Creas un archivo en el que implementes la función de C:


// mul.c

int mul(int a, int b)
{
return a*b;
}


Y lo compilas (sin enlazarlo), con gcc sería tal que así:

Código (bash) [Seleccionar]
gcc -c mul.c -o mul.o

Después creas tu archivo de código en ensamblador, que llame a la función de C (acuérdate de declararla como extern) y lo ensamblas. Después enlazas los dos ficheros juntos.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

cpu2

No saben que en este foro no se hacen tareas?

Es un trabajo seguro, porque lo que quiere hacer no tiene sentido alguno, al menos para mi, usa la instrucción mul o imul sera más eficiente que la función escrita en  C.

Un saludo.

0xDani

Cita de: cpu2 en  4 Junio 2013, 18:53 PM
No saben que en este foro no se hacen tareas?

Es un trabajo seguro, porque lo que quiere hacer no tiene sentido alguno, al menos para mi, usa la instrucción mul o imul sera más eficiente que la función escrita en  C.

Un saludo.

Evidentemente es un trabajo, pero dado que el usuario que preguntó no parece que vaya a responder, lo dejo simplemente para quien lo vea.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

leosansan

#6
Cita de: 0xDani en  4 Junio 2013, 20:21 PM
................................ lo dejo simplemente para quien lo vea.

Yo, por ejemplo. Gracias 0xDani por compartir conocimientos. ;-) ;-) ;-) ;-)

Saluditos! .... ..

0xDani

Cita de: leosansan en  4 Junio 2013, 20:53 PM
Yo, por ejemplo. Gracias 0xDani por compartir conocimientos. ;-) ;-) ;-) ;-)

Saluditos! .... ..

De nada, para eso estamos  :)
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM