Ejemplo de zona IID/IIE
En el programa siguiente, las ranuras 1, 2 y 7 tienen la capacidad de generar
interrupciones de E/S. Las instrucciones IID e IIE en los renglones 6 y 12 se
incluyen para evitar que las ISR de interrupción de E/S se ejecuten como resultado
de las peticiones de interrupción desde las ranuras 1, 2 ó 7. Esto permite que los
renglones 7 a 11 se ejecuten sin interrupción.
El bit de primer paso S:1/15 y la instrucción IIE en el
renglón 0 se incluyen para asegurar que la función de
interrupción de E/S se inicialice después de la
desconexión y reconexión de la alimentación eléctrica.
Debe incluir un renglón semejante cuando su programa
contenga una zona IID/IIE o una instrucción IID.
La instrucción IID en el renglón 6 pone a cero los bits de
habilitación de interrupción de E/S asociados con las
ranuras 1, 2 y 7 (S:27/1, S:27/2 y S:27/7). La instrucción
IIE en el renglón 12 establece estos mismo bits. Si una
interrupción de E/S es detectada por el procesador
mientras éste ejecuta los renglones 7-11, la interrupción
estará marcada como pendiente. (S:25/1, S:25/2 y/o
S:25/7 se establecerán.) Todas las interrupciones
marcadas como pendientes recibirán servicio al
momento de ejecución del renglón 12. La ranura con el
número de ranura más bajo recibe servicio primero
cuando los bits múltiples pendientes se establecen.
Cómo comprender las rutinas de interrupción
S:1
] [
0
15
] [
] [
1
2
3
4
5
6
La ejecución
] [
] [
7
ISR no ocurre
entre las
8
instrucciones
IID e IIE.
9
10
] [
] [
11
12
] [
] [
13
14
15
16
17
Archivo de programa 2
IIE
I/O INTERRUPT ENABLE
Slots:
1,2,7
( )
IID
I/O INTERRUPT DISABLE
Slots:
1,2,7
( )
( )
IIE
I/O INTERRUPT ENABLE
Slots:
1,2,7
( )
END
11–39