Está en la página 1de 4

Nombre de la asignatura: Lenguajes de Interfaz Nombre del alumno: _____________________________________________________________________ Grupo: ISC601 Evaluacin: 3.

Cuestionario: 3-2 Calificacin del examen ____________ Escala __________ Calificacin Total _____________ _________________ Vo. Bo. Firma de estudiante Divisin de Ingeniera en Sistemas Computacionales
Instrucciones: Conteste correctamente cada una de las siguientes preguntas, cualquier ambigedad anulara la respuesta. 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? 2) Dibuje el esquema de la informacin en la pila para un subprograma al que se le pasa un solo parmetro en la pila 3) Dibuje el esquema de la informacin en la pila para un subprograma al que adems de pasarle un parmetro en la pila, se usa esta (la pila) para almacenar algn dato. 4) Cul es la razn de la existencia del registro EBP? 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

Evalu (13) Roberto Gonzlez Galn

Variables locales en la pila


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 llamando rutinas de ensam- blador desde C o ensamblado en lnea. 15) Diga ,dos razones por las cuales se sigue usando el lenguaje ensamblador combinado con lenguajes de programacin de alto nivel Se necesita acceso directo a caractersticas del hardware del compu- tador que es imposible o difcil acceder desde C. La rutina debe ser lo mas rapida posible y el programador puede op- timizar a mano el codigo mejor que el compilador 16) Diga cuales son los registros que en una subrutina en C conservan sus valores

EBX, ESI, EDI, EBP, CS, DS, SS, ES 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 La mayora de compiladores anteponen un guion bajo ( ) al inicio de los nombres de funciones y variables globales o static. 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 El valor que MOV almacena en EAX debe ser calculado por el ensamblador (esto es, debe ser una constante). Sin embargo, hay una ins- truccion que hace el c alculo deseado. Es llamada LEA (Load Efective Adress). 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

Evalu (13) Roberto Gonzlez Galn

24)

Explique cmo se almacenan valores de retorno de tipo entero de 32 bits ellos son extendidos a 32 bits cuando se almacenan en EAX. (el como se extienden depende de si ellos tipos son con o sin signo.) 25) Explique cmo se almacenan valores de retorno de tipo entero de 64 bits Los valores de 64 bits se retornan en el par de registros EDX:EAX. 26) Indique como se declara la convencin de llamado de una funcin en C para declarar una funcion void que usa la con- vencion de llamado est andar llamada f que toma un parametro int, use la siguiente sintaxis para su prototipo: void f( int ) attribute ((cdecl)); GCC tambien soporta la convencion de llamado estandar. La funcion de arriba se podra declarar para usar esta convencion reemplazando cdecl con stdcall. 27) Explique la diferencia entre los valores: stdcall y cdecl La diferencia entre stdcall y cdecl es que stdcall requiere que la subrutina quite los parametros de la pila (como lo hace la convencion de llamado de Pascal) 28) Diga dos caractersticas que un programa reentrante debe poseer No debe modicar ninguna instruccion del programa. En un lenguaje de alto nivel esto podra ser difcil, pero en ensamblador no es difcil para un programa intentar modicar su propio codigo. No debe modicar datos globales (tal como los datos que estan en el segmento data y bss). Todas las variables son almacenadas en la pila. 29) Diga que es un programa recursivo Estos tipos de subprogramas se invocan as mismos. La recursion puede ser directa o indirecta. 30) Diga cul es el problema de una mala condicin de terminacin de un programa recursivo Si la rutina recursiva no tiene una condicion de terminacion o la condici on nunca se vuelve verdadera, la recursion nunca termina (muy parecido a un bucle innito). 31) Diga que es un arreglo Un arreglo es un bloque contiguo de una lista de datos en la memoria. Cada elemento de la lista debe ser del mismo tipo y usar exactamente el mismo numero de bytes de memoria para almacenarlo. 32) Escriba como definir un arreglo en los segmentos data y en bss Para denir un arreglo con valor inicial en el segmento data, use las directivas normales: db, dw, etc. NASM tambien suministra la directiva lla- mada TIMES que se puede usar para repetir una instruccion muchas veces sin tener que duplicar las instrucciones a mano. Para denir un arreglo sin valor inicial en el segmento bss, use las directivas resb, resw, etc. Recuerde que estas directivas tienen un operando que especica cuantas unidades de memoria reservar. 33) Diga cmo acceder a los elementos de un arreglo Para acceder a un elemento del arreglo, se debe calcular su direccion. Considere las dos deniciones siguientes de arreglos: array1 db 5, 4, 3, 2, 1 ; arreglo de bytes

Evalu (13) Roberto Gonzlez Galn

array2 dw 5, 4, 3, 2, 1 ; arreglo de palabras

Evalu (13) Roberto Gonzlez Galn

También podría gustarte