Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5) En al siguiente rutina, especifique la accin de cada una de las instrucciones. Dibuje tambin,
la estructura de la pila inmediatamente tambin de la ejecucin de la lnea 3 del cdigo.
6) Indique tambin el tipo de convencin de llamado de C.
7) Explique con que otra instruccin podra realizar la accin de la lnea 3 del cdigo anterior
8) Explique la razn del uso de la instruccin ADD sobre la otra instruccin propuesta
9) Explique dos razones por las cuales es conveniente el uso de la pila para guardar variables
locales
.
Programas Multinmdulo
10) Qu es un programa multi-inmdulo?
11) Explique la razn de la directiva extern
12) Explique la razn de la directiva global
13) Dibuje el archivo esqueleto que se puede usar como punto de partida para
escribir programas en ensamblador
Interfazando Ensamblador con lenguaje C
14) De cuantas formas podemos usar rutinas en ensamblador en lenguaje C
15) Diga ,dos razones por las cuales se sigue usando el lenguaje ensamblador
combinado con lenguajes de programacin de alto nivel
16) Diga cuales son los registros que en una subrutina en C conservan sus valores
17) Diga cul es la estrategia seguida en programacin hbrida para asegurar que los
registros anteriores conserven sus valores.
18) Cul es la forma en que los compiladores indican el nombre de funciones o de variables
globales
19) Que es lo que indica la convencin en cuanto al orden del paso de parmetros en el
llamado de una funcin en C
20) Considere el caso de pasar la direccin de una variable (la llamaremos x) a
una funcin (que llamaremos foo). Si x est en EBP 8 en la pila, Indique porque
uno no puede usar:
mov eax, ebp 8
para calcular la direccin de la variable local x
21) Cul es la alternativa a seguir para resolver el problema anterior
22) Explique la operacin de la instruccin que Ud. Contesto
23) Explique el significado de un parmetro void como valor de retorno en una
funcin
24) Explique cmo se almacenan valores de retorno de tipo entero de 32 bits
25) Explique cmo se almacenan valores de retorno de tipo entero de 64 bits
26) Indique como se declara la convencin de llamado de una funcin en C
27) Explique la diferencia entre los valores: stdcall y cdecl
28) Diga dos caractersticas que un programa reentrante debe poseer
29) Diga que es un programa recursivo
30) Diga cul es el problema de una mala condicin de terminacin de un
programa recursivo
31) Diga que es un arreglo
32) Escriba como definir un arreglo en los segmentos data y en bss
33) Diga cmo acceder a los elementos de un arreglo
Cuestionario3-2Respuestas
Pasando parmetros en la pila
1) Cuando se realiza el paso de parmetros en la pila, los parmetros no son sacados de la pila
por el subprograma, en lugar de ello son accedidos desde la pila misma. Explique las dos
razones por las cuales se realiza lo anterior?
RESPUESTA
Ya que ellos se han empujado a la pila antes de la instruccin CALL, la direccin de retorno
tendra que haberse sacado primero (y luego metido otra vez).
A menudo los parmetros tendran que usarse en varios lugares en el subprograma.
Normalmente, ellos no se pueden dejar en un registro durante todo el subprograma y tendra
que almacenarse en memoria. Dejndolos en la pila tenemos una copia del dato en memoria
que se puede acceder en cualquier parte del subprograma.
|
2) Dibuje el esquema de la informacin en la pila para un subprograma al que se le pasa un solo
parmetro en la pila
1) Se asigna el parmetro en la pila antes
del llamado del procedimiento (CALL)
2) Despus se realiza el llamado CALL. Por
lo que la pila (ESP) apunta a la direccin
de retorno; el parmetro quedo
sepultado en ESP+4.
Repuesta:
Respuesta:
7) Explique con que otra instruccin podra realizar la accin de la lnea 3 del cdigo anterior
Respuesta: Una instruccin POP se podra usar para hacer esto pero requerira que el
resultado intil se almacene en un registro.
8) Explique la razn del uso de la instruccin ADD sobre la otra instruccin propuesta
Respuesta: El compilador usara POP en lugar de ADD porque ADD requiere ms
bytes para la instruccin. Sin embargo, POP tambin altera el valor de ECX.
Variables locales en la pila
9) Explique dos razones por las cuales es conveniente el uso de la pila para guardar variables
locales
Respuesta: Usar la pila para las variables es importante si uno desea que el
programa sea reentrante. En otras palabras, los programas reentrantes pueden ser
invocados recursivamente Los datos no almacenados en la pila estn usando la
memoria desde el comienzo hasta el final del programa (C llama este tipo de
variable global o static). Los datos almacenados en la pila solo usan la memoria
cuando el subprograma que los define est activo.
Programas Multinmdulo
10) Qu es un programa multi-inmdulo?
Respuesta: Un programa multi-inmdulo es uno que est compuesto de ms de un
archivo objeto.
11) Explique la razn de la directiva extern
Respuesta: La directiva le dice al ensamblador que trate esas etiquetas (las
marcadas con esta directiva) como externas al mdulo.
12) Explique la razn de la directiva global
Respuesta: En ensamblador, no se puede acceder externamente a las etiquetas por
omisin. Si una etiqueta puede ser accedida desde otros mdulos diferentes al cual
se defini, debe declararse global en su mdulo
13) Dibuje el archivo esqueleto que se puede usar como punto de partida para
escribir programas en ensamblador
Respuesta: