Está en la página 1de 19

Carrera: Analista Programador

SISTEMAS DE COMPUTACIÓN II

Módulo I

Creación de programas y procedimientos en Assembler

Unidad 2

Subrutinas e Interrupciones

Profesor titular: Ing. Mario Ginzburg

Autor de contenidos: Ing. Mario Ginzburg e Ing. Noelia Lloret

Módulo I

Unidad 1 Unidad 2

Codificación y programación Subrutinas e Interrupciones


en Assembler

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.1


Presentación

En la primera unidad usted ha desarrollado con Assembler programas que le


permitieron sumar, armar listas, ordenar números, etc. En esta unidad
estudiaremos la forma utilizar secuencias de instrucciones ya
confeccionadas que constituyen una subrutina, para facilitar su tarea como
programador. Por ejemplo, cómo utilizar una subrutina para obtener una
raíz cuadrada.

En primer lugar, veremos cómo mediante una instrucción se llama, desde


cualquier punto de un programa, a una subrutina para ser ejecutada y cómo
se retorna al programa que la solicitó. En segundo lugar, presentaremos la
forma de llamar a subrutinas o módulos de un sistema operativo mediante
interrupciones por software y por hardware.

Es importante que en el proceso de estudio de esta unidad considere que


sus contenidos están estrechamente relacionados con los temas
desarrollados en Sistemas de Computación I y en la primera unidad de esta
asignatura.

La propuesta del Trabajo Práctico Requerido Nº 2 (dividido en los ítems A y


B) lo invitará a recuperar conocimientos y habilidades para codificar y
programar en Assembler, agregando un nuevo reto: llamar a subrutinas
mediante las instrucciones CALL e INT. Este trabajo implica una fecha de
entrega y el cumplimiento de las consignas propuestas; por ello debe
considerar la organización de sus tiempos respecto a las lecturas y la
elaboración de los ejercicios presentados. Su elaboración será significativa
para la realización posterior de la primera Propuesta de Integración
Modular, que da cierre al Módulo I: Creación de programas y
procedimientos en Asembler.

A través del estudio de esta unidad esperamos que usted adquiera la


capacidad para:

Comprender la importancia y la secuencia de pasos presente en el


llamado a una subrutina y las características básicas del uso de la
pila y de su registro puntero: el stack pointer.
Conocer el significado de una interrupción, su utilización y su
desarrollo.
Vincular las interrupciones y los sistemas operativos.
Comprender las diferencias entre la ejecución de una interrupción
por hardware y una interrupción por software.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.2


A continuación, le presentamos un detalle de los contenidos y actividades
que integran esta unidad. Usted deberá ir avanzando en el estudio y
profundización de los diferentes temas, realizando las lecturas requeridas y
elaborando las actividades propuestas.

Contenidos y Actividades

1. Llamada a una subrutina

1.1 Detalle del llamado a una subrutina

1.2 Instrucciones Push y pop en las subrutinas

Lectura requerida

Ginzburg, M.; Llamada a subrutina En su: Assembler desde cero e


interrupciones. 3ª ed ampliada. Buenos Aires: 2010.

Trabajo Práctico Requerido

Trabajo Práctico Nº 2.A: Codificación y ejercitación de programas en


Assembler con llamado a Subrutinas.

2. Interrupciones

Lectura Sugerida

Ginzburg, M.; Apéndice 2 de la Unidad 1. Sistemas operativos: su


lugar y funciones como parte del Software. En su: La PC por dentro.
4ª ed. Buenos Aires: Biblioteca Técnica Superior, 2006, p.153.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.3


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.

Lectura requerida

Ginzburg, M.; Direcciones efectivas y registros de segmento. En su:


Assembler desde cero e interrupciones. 3ª ed. ampliada. Buenos
Aires: 2010.

2.1. Desarrollo de una interrupción por software

Lectura requerida

Ginzburg, M.; Utilización del programa Assembler. En su: Assembler


desde cero e interrupciones. 3ª ed ampliada. Buenos Aires: 2010.

2.2 Desarrollo de una interrupción por hardware

Lectura requerida

Ginzburg, M.; Utilización del programa Assembler. En su: Assembler


desde cero e interrupciones. 3ª ed ampliada. Buenos Aires: 2010.

Trabajo Práctico Requerido

Trabajo Práctico Nº 2.B: Codificación y ejercitación de programas en


Assembler con llamado a Subrutinas mediante interrupción por
Software.

Cierre de la Unidad

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.4


EVALUACIÓN PARCIAL
Propuesta para la Integración del Módulo I

BIBLIOGRAFÍA OBLIGATORIA
Ginzburg, Mario; Assembler desde Cero e interrupciones 3ª ed ampliada.
Buenos Aires: Biblioteca Técnica Superior, 2003.

Ginzburg, Mario; La PC por Dentro 4ª ed. Buenos Aires: Biblioteca Técnica


Superior, 2006

Organizador Gráfico

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.5


Lo/a invitamos a comenzar con el estudio de los contenidos que conforman esta
primera unidad.

1. Llamada a una subrutina

En la programación en Assembler se utiliza lo que se denomina subrutina. Este


término alude a un procedimiento o programa construido especialmente, que se
puede utilizar en distintos puntos de un programa o por diferentes programas. Por
ejemplo, un procedimiento para ordenar números puede ser incorporado para ser
ejecutado, en cualquier punto de un programa en ejecución. Ésta acción se
denomina “llamado” o“call” a subrutina.

Se utilizan por dos razones:

Para comprender el proceso de llamado a subrutina es preciso profundizar y


conocer qué son y cómo se opera con las estructuras de datos denominadas pilas.

Una pila o stack es una zona de


memoria que almacena temporariamente,
en forma apilada, direcciones y datos
relacionados con la ejecución de
subrutinas.

Los datos almacenados tienen una


restricción de acceso: sólo pueden
agregarse o eliminarse por un extremo de
la pila, conocido como “cima”. El último
dato de la pila es el primero en extraerse.
En ingles esto se expresa con la sigla
LIFO (last in, first out). La imagen mental
que lo puede ayudar a representar una
pila es, justamente, una pila de platos: el
ultimo en apilarse será el primero en
salir.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.6


Cuando hablamos de Stack Pointer (SP), también conocido como puntero de
pila, nos referimos a un registro que proporciona la dirección del último dato que
se ha almacenado en la cima de la pila. El SP es actualizado en forma automática
por la UC durante la ejecución de las instrucciones que escriben o leen la pila.

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.1 Detalle del llamado a una subrutina

En el Assembler de Intel/AMD una subrutina es llamada desde un programa, cada


vez que se la necesita, mediante la instrucción CALL. Cuando se ejecuta ésta
instrucción, el hardware de la UC realiza los siguientes pasos: calcula la dirección
de retorno, prepara el apilamiento, apila y salta a la subrutina.
A continuación detallaremos cada uno de los pasos mencionados y un ejemplo en
la columna derecha para ayudar a su comprensión:

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.

2. Preparación del apilamiento: le


resta 2 al valor que tiene el registro
SP, para que la nueva cima de la
pila se encuentre 2 celdas más
arriba en la zona de memoria donde
se formará la pila.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.7


3. Apilamiento: a partir de la
dirección de la nueva cima de la
pila, la UC escribirá la dirección
de retorno que calculó.

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.

1.2 Instrucciones Push y Pop en las subrutinas

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

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.8


debe ser así porque es muy factible que, alguno o todos ellos hayan sido usados
por el programa en el momento en que éste llamó a la subrutina.
Infiera que cuando el programa llamó a la subrutina dejo el registro AX con el
valor 0042. Si una instrucción de la subrutina como ADD AX,BX cambia el valor de
AX, cuando se termine de ejecutar la subrutina y se retorne al programa llamador,
éste al querer volver a usar AX lo encontrará con otro valor que no será 0042. De
la misma manera ADD AX, BX puede cambiar el valor de los flags guardados en
RE.
Para evitar que la subrutina al finalizar cambie el valor de los registros que usó el
programa cuando la llamo, las subrutinas comienzan con instrucciones tipo
“PUSH”. La palabra PUSH está asociada con la acción de empujar (apilar) como
una moneda en un monedero con resortes, siendo que POP implica lo contrario.
La ejecución de PUSH AX guardará en la pila una copia de 0042, apilándolo sobre
la dirección de retorno (2436 del ejemplo anterior), por lo que antes la UC, como
en el caso de CALL, deberá restarle 2 a SP, para que la nueva cima sea FFEA
(FFEC – 2 = FFEA, siguiendo el ejemplo). Igualmente, también, la subrutina
deberá tener al comienzo la instrucción PUSH F (push Flags) para que se guarde
en la pila una copia del registro de estado (RE) con el valor de cada flag tal cual
como lo dejó el programa. Asimismo, SP luego de que se ejecute PUSHF quedará
en FFE8.
Por lo tanto, al comenzar una subrutina deberá haber una instrucción PUSH
para cada registro que utilizará la subrutina. de esta forma se guardará en la
pila el valor con que lo venía usando el programa llamador, aunque algunos de
esos registros el programa no los use.
Durante su ejecución, la subrutina podrá cambiar el valor de esos registros, y sus
últimas instrucciones (antes de RET citada) serán del tipo “POP”, que ordenan
restaurar desde la pila hacia la UCP el valor de cada registro guardado mediante el
PUSH correspondiente. Entonces, siguiendo con el ejemplo, si la subrutina
empezaba con PUSH AX y PUSHF, que apilaban una copia de los contenidos de AX
y RE, deberá terminar con POPF y POP AX (y al final RET) para que esos
contenidos vuelvan a AX y RE, para que luego de RET se retorne al programa
llamador (en la instrucción que sigue a CALL), y encuentre a todos los registros
como los había dejado antes de que se ejecute CALL.
De manera semejante a RET, cada POP desapila el registro involucrado, cuyo
contenido vuelve a la UCP, y luego le suma 2 al valor del SP, para que la cima de
la pila descienda.
Es importante profundizar sobre la implementación y concreción de las subrutinas.
Es por ello que lo/a invitamos a realizar la siguiente actividad de lectura.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.9


Lectura requerida
Ginzburg, M.; Llamada a subrutina En su: Assembler desde cero e
interrupciones. 3ª ed. Buenos Aires, 2010 p. 54 a 71.

Guía para la lectura

¿Cuáles son los pasos para el proceso de llamado a una


subrutina?

¿Cuál es la función de una pila? ¿Qué se indica con las


instrucciones “PUSH” y “POP”?

¿Qué indica el Stack Pointer?

¿Qué hacen las instrucciones CALL, PUSH, POP y RET?

Algunos conceptos que debemos tener en cuenta:

o Anidamiento de subrutinas: una subrutina puede llamar


a otra, ésta a una tercera y, así, sucesivamente. Este
proceso se denomina “anidamiento de subrutinas”. Cuando
una subrutina llamada termina de ejecutarse, se retorna a
la subrutina que la llamó, ésta a la que la llamó, etc. Los
retornos se dan de modo inverso al de las llamadas, es decir
el último retorno será hacia el programa principal, que
efectuó el primer llamado. Puede ser factible que la
subrutina llamada, a su vez, tenga una instrucción como
CALL 6500 que llama a otra subrutina. En ese caso el SP
(supuesto en FFE8 luego de PUSHF) pasará a valer FFE6, y
en la pila se guardará la dirección de la instrucción que
sigue a CALL 6500. Cuando termine la ejecución de la nueva
subrutina llamada (que tendrá sus PUSH y POP), su
instrucción RET hará que la primera subrutina citada prosiga
en la instrucción que sigue a CALL 6500 y el SP volverá a
valer FFE8.

o Pasaje de Parámetros: Se denomina pasaje de


parámetros al pase de datos del programa a la subrutina y
de resultados de la subrutina al programa. Refiere a la
necesidad de establecer dónde el programa debe dejar los
datos que procesará la subrutina que llamó y dónde la
subrutina dejará los resultados esperados. Puede ser en la
pila o en registros de la UCP. Dichos datos serán usados por

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.10


las instrucciones que siguen a la instrucción CALL, que llamó
a la subrutina.

Luego de realizar la lectura de la bibliografía requerida, le proponemos incluir


subrutinas en alguno de los programas que usted creó en el Trabajo Práctico Nº1.
Es por ello que lo/a invitamos a realizar la siguiente actividad.

Trabajo Práctico Requerido

Trabajo Práctico Nº 2.A: Codificación y ejercitación de


programas en Assembler con llamado a subrutinas.

En los trabajos prácticos 2A y 2B, el pasaje de parámetros se


efectúa a través de la pila, que actúa como buzón entre la subrutina
y el programa. En este caso existen en el programa llamador,
instrucciones PUSH antes del CALL, para enviar los datos que
procesará la subrutina e instrucciones POP para obtener de la pila los
resultados que ella procesó.

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

Hasta el momento hemos trabajado con subrutinas de usuario utilizando la


instrucción CALL. Ésta, entre otras cosas, llama o invoca una subrutina para
calcular una raíz cuadrada o para ordenar números. Este tipo de subrutinas no
pertenecen al sistema operativo.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.11


Por razones de seguridad y practicidad existen otras subrutinas que forman parte
del sistema operativo. Éstas se “llaman” mediante interrupciones. Como su
nombre lo indica, suponen la suspensión temporaria de la ejecución de un
programa, para pasar a ejecutar una subrutina que da servicio a esa
interrupción. Luego de ejecutarse se reanuda la ejecución del programa en el
punto donde quedó interrumpido.

Para facilitar la comprensión de este mecanismo particular es importante


recordar que el sistema operativo (S.O) se encarga de administrar los cuatro
recursos de un sistema:

El manejo de memoria

Prioridades relativas al orden en que la UC ejecuta los


programas que están en memoria.

El manejo de archivos

El manejo de periféricos.

Le acercamos el siguiente material que lo ayudará a establecer puentes


significativos entre sus conocimientos previos y los contenidos que
desarrollaremos a continuación.

Lectura Sugerida

Ginzburg, M.; Apéndice 2 de la Unidad 1. Sistemas operativos: su


lugar y funciones como parte del Software. En su: La PC por
dentro. 4ª ed. Buenos Aires: Biblioteca Técnica Superior, 2006,
p.153.

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.

Tienen su origen en la necesidad de que un programa se autointerrumpa en un


punto ya predeterminado. La instrucción que se pasa a ejecutar luego de INTxx
es la primera de una subrutina del SO., y de manera semejante a CALL, cuando

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.12


se termina de ejecutar esta subrutina se retorna a la instrucción que sigue en
memoria a INTxx.

Por otro lado, una interrupción por hardware interrumpe imprevistamente un


programa de usuario en ejecución para que se pase a ejecutar una subrutina de
S.O o del BIos, que no se relaciona con los objetivos del programa interrumpido.
Estas interrupciones no se originan en ninguna instrucción que llama al S.O, sino
por instrucciones que la UCP no puede ejecutar (internas a la UCP), o (externas a
la UCP) porque un periférico avisa mediante su interfaz, que una subrutina del S.O
o del BIOS debe atender a un evento ocurrido. Un claro ejemplo es la terminación
de escritura de un sector en el disco por ADM o problemas de papel con la
impresora.

Por lo afirmado hasta aquí se pueden identificar dos tipos de interrupciones por
hardware:

Internas (a la UCP) por ejemplo, ejecución de una instrucción de código de


operación inexistente, u otra de división cuyo resultado no entra en el
formato predeterminado, u otra que ordena escritura a celdas de memoria
no permitidas por razones de seguridad, para no destruir información que
debe conservarse. En todos estos casos, la instrucción en cuestión no
puede terminar de ejecutarse, y se pasa a ejecutar una subrutina del S.O
para atender el evento ocurrido.

Externas (a la UCP) que a su vez pueden ser:

Enmascarables se puede demorar su detención, por ejemplo: la


activación de una línea IRQ de un bus, que es la forma más
corriente de una interrupción por hardware, que también llama a
una subrutina del S.O o del BIOS, para que atienda dicha
activación. Ésta, como se anticipó, puede originarse en algún evento
que avisa un periférico mediante su interfaz que activa su línea IRQ.

No enmascarables deben ser atendidas sin demora. Por ejemplo:


las acciones a seguir cuando cesa accidentalmente el suministro de
energía de un computador.

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.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.13


Entonces, resulta que este programa “Z” fue interrumpido, a partir de la activación
de esa IRQ para que una subrutina del S.O lleve a cabo algo relacionado con otro
programa “A”, y no con el programa Z.

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.

Luego de esta breve introducción sobre qué es una interrupción y cómo se


clasifican, lo invitamos a continuar con la siguiente actividad de lectura.

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.

Guía para la lectura

¿Qué son las interrupciones?

¿Cómo opera una interrupción por hardware externa?

¿Cómo operan las interrupciones por Software?

¿Cómo se retorna al programa interrumpido?

¿Qué es la zona de memoria principal denominada pila”?

¿Qué es la zona de memoria de “vectores interrupción”?

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:

Por razones didácticas, en el Trabajo Practico requerido Nº 2. A: Codificación y


ejecución de programas en Asembler con llamado a Subrutinas, para las

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.14


direcciones de las instrucciones, sólo hemos operado con la componente
derecha: valor del registro IP.

En la imagen se puede observar que la instrucción ADD AX [5000], cuyo código


de máquina es 03060050 tiene por dirección 1039:0203. La componente
izquierda 1039, corresponde al valor de registro CS (Code Segmen).

Por lo tanto, cualquier instrucción a ejecutar consta de dos componentes


separados por dos puntos. Una provista por el registro CS y la otra por IP.

Es importante considerar el valor del registro CS ya que en las interrupciones CS


se guarda en la pila junto con IP.

Luego de esta indicación lo/a invitamos a continuar con la siguiente actividad de


lectura.

Lectura requerida

Ginzburg, M.; Direcciones efectivas y registros de segmento. En su:


Assembler desde cero e interrupciones. 3ª ed. ampliada. Buenos Aires:
2010.

Guía para la lectura

En el modelo de procesador que estamos usando en los TP, que


implican que nuestra CPU está operando en modo real (como

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.15


sucede cuando se enciende una PC), indicar cual es el tamaño de
los segmentos y el de la memoria.

¿Qué diferencia existe entre los programas .EXE y .COM? ¿Cuál de


estas dos clases de programas utilizamos en los trabajos
prácticos?

Indique cómo mediante el registro CS se determina el comienzo


del segmento de códigos

Suponiendo CS = 3502 e IP = 2502 indicar la dirección efectiva


donde está en memoria la dirección apuntada por dichos
registros.

2.1. Desarrollo de una interrupción por software

La ejecución de una instrucción de INTxx da lugar a que la UC realice un proceso


que permite localizar la subrutina que atiende a esa interrupción, dado que durante
éste, en la pila del programa interrumpido, la UC guardará los registros CS, IP y
RE.

La ultima instrucción IRET de la subrutina del SO ordenará volver a la instrucción


que sigue a INTxx, permitiendo que se reanude la ejecución del programa que fue
autointerrumpido por INTxx.

Para conocer más en detalle el desarrollo de una interrupción por software, le


proponemos realizar la siguiente actividad. En ella encontrará, también, ejemplos
ilustrativos que pueden facilitar su comprensión.

Lectura requerida

Ginzburg, M.; Utilización del programa Assembler. En su:


Assembler desde cero e interrupciones. 3ª ed. Buenos A2010 p.
44 a 49.

Guía para la lectura

Una instrucción tiene como componentes CS: IP = 2040:328ª.


Determinar su dirección efectiva indicándola con cinco cifras en
hexa.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.16


¿Qué contiene un vector interrupción? ¿Cuál es su contenido y
para qué sirve? ¿Cómo se obtiene su dirección?

¿Cuál es siempre para Intel en modo real la componente


izquierda de la dirección de un vector?

¿En qué modo opera la CPU cuando se pasa a ejecutar la


subrutina que llamó una instrucción INTxx?

¿Qué diferencia existe entre las intrucciones CALL e INTxx.

¿Qué es modo “user” y “modo kernell”? y cómo se pasa de uno


a otro?

2.2 Desarrollo de una interrupción por hardware

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.

Los pasos que suceden en una interrupción de tipo IRQ se desarrollan en el


siguiente material de lectura.

Lectura requerida
Ginzburg, M.; Utilización del programa Assembler. En su: Assembler desde
cero e interrupciones. 3ª ed. Buenos Aires: 2010.

Guía para la lectura

Describir los pasos que ocurren durante el proceso de una


interrupción por hardware hasta que se retorna al programa
interrumpido.

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.17


¿Cómo se localiza el vector interrupción en una interrupción tipo
IRQ?

¿Qué sucede cuando el flag I no permite la interrupción?

A partir de qué momento tienen igual desarrollo las


interrupciones por Hardware y las interrupciones por software?

¿Por qué las subrutinas que atienden a las interrupciones por


software o por hardware deben terminar con la instrucción IRET
en lugar de la intraucción RET como ocurre en las subrutinas
llamadas por CALL?

Luego de analizar y estudiar los contenidos correspondientes a esta unidad le


proponemos realizar la segunda parte del Trabajo Practico Requerido.

Trabajo Práctico Requerido

Trabajo Práctico Nº 2.B: Codificación y ejercitación de


programas en Assembler con llamado a subrutinas mediante
una interrupción por software.

Cierre de la unidad

Como cierre de Unidad, le sugerimos armar un cuadro comparativo identificando


las principales diferencias entre interrupciones por software y por hardware y del
llamado a subrutinas mediante CALL e INTxx. Esta actividad le ayudara a realizar
una síntesis de los contenidos más importantes de la unidad

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.18


EVALUACIÓN PARCIAL
Propuesta para la Integración del Módulo I

En esta primera Evaluación Parcial de la asignatura usted deberá


desarrollar consignas de trabajo que apuntan a la creación de
programas y procedimientos en Assembler.
Durante el desarrollo de la propuesta ponga en juego sus
conocimientos, revise el material y no olvide considerar los criterios
que se tomarán en cuenta para su evaluación, tratando de ajustar su
producción a ellos.
Este trabajo tiene fecha de comienzo y finalización. Consulte el
Cronograma de actividades de la Asignatura para realizar su entrega
en tiempo y forma, ya que es de carácter obligatorio.

Fin Módulo 1

Sistemas de Computación II / Módulo I / Unidad 2 / Pág.19

También podría gustarte