Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISTEMAS DE COMPUTACIÓN II
Módulo I
Unidad 2
Subrutinas e Interrupciones
Módulo I
Unidad 1 Unidad 2
Contenidos y Actividades
Lectura requerida
2. Interrupciones
Lectura Sugerida
Lectura requerida
Lectura requerida
Lectura requerida
Cierre de la Unidad
BIBLIOGRAFÍA OBLIGATORIA
Ginzburg, Mario; Assembler desde Cero e interrupciones 3ª ed ampliada.
Buenos Aires: Biblioteca Técnica Superior, 2003.
Organizador Gráfico
Cada programa al llamar una subrutina, origina una pila en memoria principal o en
la UCP. Ésta desaparece al finalizar con la última instrucción de esa subrutina.
1. Cálculo de la dirección de
retorno: la UC le suma 3 al valor
que tenía el registro IP cuando se
pidió la instrucción CALL porque su
código de máquina ocupa 3 celdas
de memoria. De este modo, el IP
sirve para determinar la dirección de
la instrucción que sigue a CALL en
memoria.
4. Salto a la subrutina: el IP
tomará el valor de la dirección de la
primera instrucción donde en
memoria está la subrutina.
Asimismo, toda subrutina llamada por CALL debe terminar con la instrucción RET.
Ésta ordena retornar para ejecutar la instrucción que en el programa sigue a
CALL.
La ejecución de RET supone las siguientes acciones por parte de la UC:
a) Que el IP tome el valor de la dirección de retorno: la dirección de
retorno estaba guardada en la pila luego de la ejecución de CALL, su copia
(siguiendo el ejemplo mencionado es de 2436) deberá pasar, de la pila
(que será leída en memoria) al registro IP (que será escrito en la UCP).
Entonces, la ejecución de las instrucciones por parte de la UC continuará
con la instrucción del programa que sigue a CALL.
b) Desapilamiento: al SP se le suma 2, de manera que la pila desaparece.
En nuestro caso SP vuelve al valor originario (FFEE) que tenía antes de que
se llame a la subrutina, el cual es asignado por el sistema operativo como
administrador de la memoria.
El programador que escribe una subrutina no tiene por qué ser la misma persona
que escribe el programa que la va a llamar. Por consiguiente, los registros de la
UCP que usa la subrutina pueden coincidir o no, total o parcialmente, con los
registros que está usando el programa que la llama. Como esto no puede
conocerse, toda subrutina debe empezar guardando en la pila el contenido
de cada uno de los registros que utiliza, en el momento que es llamada. Esto
Tenga en cuenta que los trabajos que produzca durante los procesos
de estudio son insumos muy valiosos y de preparación para la
Evaluaciones Parciales. Por lo tanto, guarde sus notas, apuntes y
gráficos, le serán de utilidad.
Por otro lado considere que las dudas pueden ser consultadas en los
Foros o en el espacio de Tutoría.
2. Interrupciones
El manejo de memoria
El manejo de archivos
El manejo de periféricos.
Lectura Sugerida
Las interrupciones pueden ser por software o por hardware. Las primeras se
originan cuando se ejecuta la instrucción que para el Assembler de Intel es
INTxx (XX es un número en hexa). Por ejemplo, se puede emplear para llamar a
una subrutina que abra o guarde un archivo.
Por lo afirmado hasta aquí se pueden identificar dos tipos de interrupciones por
hardware:
Supongamos que un programa “A” solicitó una escritura en un disco por medio de
una interrupción por software (ejecución de una instrucción INTxx) y quedó
autointerrumpido. Cuando se complete la escritura, la interfaz del disco originará
una interrupción por hardware activando una línea IRQ del bus al que está
conectada. Esta activación implicará una solicitud de interrupción (Interrupt
ReQuest = IRQ) para que se interrumpa el programa “Z” en ejecución en ese
momento, a fin de que una subrrutina del S.O o del BIOS verifique que la
grabación pedida por el programa “A”, se haya concretado correctamente.
De este modo, las interrupciones tipo IRQ llaman a subrutinas del S.O que
atienden a eventos que no están contemplados en el programa que se está
ejecutando y que, típicamente, no están relacionados con él.
Lectura requerida
Ginzburg, M.; 1.11 Las interrupciones por hardware:”timbres” para llamar a
subrutinas. En su: La PC por dentro. 4ª ed. Buenos Aires: Biblioteca
Técnica Superior, 2006, p.91-95.
Para conocer más en detalle las interrupciones, es necesario que usted advierta
que una dirección de memoria para INTEL posee dos componentes numéricas
separadas por dos puntos.
Por ejemplo:
Lectura requerida
Lectura requerida
Como se ha afirmado, la activación de una línea IRQ de un bus por parte de una
interfaz de un periférico origina una interrupción por hardware del tipo
enmascarable. La UC según se verá interrumpirá al programa en ejecución,
siempre y cuando, éste no sea del S.O y, luego, tendrá lugar un proceso
semejante al que ocurre en una interrupción por software. En el caso que la
solicitud de interrupción IRQ no sea habilitada por la UC, ésta deberá esperar
hasta que la UC la autorice. Esta espera o “enmascaramiento” temporario no
ocurre en ningún otro tipo de interrupciones. La ejecución de una instrucción
INTxx (interrupción por software) no puede demorarse, como ocurre con cualquier
instrucción.
Lectura requerida
Ginzburg, M.; Utilización del programa Assembler. En su: Assembler desde
cero e interrupciones. 3ª ed. Buenos Aires: 2010.
Cierre de la unidad
Fin Módulo 1