Anda di halaman 1dari 8

TÉCNICAS Y ESTRUCTURAS DIGITALES

Tema: Interrupciones TP
19
Ingeniería Informática – Licenciatura en Sistemas

Apellido y Nombre: LU:


2018 Carrera: Fecha:

PROBLEMAS RESUELTOS
A. Explique detalladamente los pasos que sigue el µP cuando se produce una interrupción.
Un computador debe disponer de los elementos suficientes para que el programador tenga un control total sobre todo lo
que ocurre durante la ejecución de su programa. La llegada de una interrupción provoca que la CPU suspenda la ejecución
de un programa e inicie la de otro (rutina de atención de interrupción). Como las interrupciones pueden producirse en
cualquier momento, es muy probable que se altere la secuencia de sucesos que el programador había previsto
inicialmente. Es por ello que las interrupciones deben controlarse cuidadosamente.
Los pasos seguidos por el µP ante una interrupción son los siguientes:

1. Un dispositivo del sistema envía la solicitud de interrupción al µP.


2. El procesador termina la ejecución de la instrucción en curso y analiza la petición de interrupción (hardware o
software). Si el µP no atiende la interrupción (por ejemplo porque el bit I=1) continuará normalmente con la ejecución
de la siguiente instrucción, caso contrario procede de acuerdo a la interrupción producida:

NMI Se atiende sin verificar el valor de la máscara.


IRQ Se atiende si no está puesta la máscara (I=0)
SWI Se atiende sin verificar el valor de la máscara.
RESET Se atiende sin verificar el valor de la máscara.

3. Se almacenan los registros internos (PC, IDX, AccA, AccB y CCR) a partir de la dirección indicada por el puntero de pila
(SP) y en sentido decreciente de direcciones de memoria (siete bytes en total), como muestra la siguiente tabla:
SP-6 CCR
Referencia:
SP-5 Acc B H = High = ALTO (la parte más
SP-4 Acc A significativa de la palabra)
SP-3 IDXH
SP-2 IDXL L = Low = BAJO (la parte menos
SP-1 PCH significativa de la palabra)
SP PCL

4. El µP coloca en 1 la máscara de interrupción (I = 1; bit I del CCR) para impedir la atención de otras interrupciones
mientras se atiende la presente.
5. El µP calcula la dirección de memoria donde se encuentra la primera instrucción de la rutina de atención de la
interrupción (vector de interrupción):
FFF8 IRQH
FFF9 IRQL
FFFA SWIH
FFFB SWIL
FFFC NMIH
FFFD NMIL
FFFE ResetH
FFFF ResetL

6. La dirección calculada se carga en el PC, con lo que se pasa el control a la rutina de interrupción.
7. La ejecución continúa hasta que el procesador encuentra la instrucción de retorno de interrupción (depende de cada
tipo de solicitud de interrupción).
Página 1
TÉCNICAS Y ESTRUCTURAS DIGITALES
8. Cuando se encuentra la instrucción de retorno se restaura el estado del procesador con los valores almacenados en la
pila y se devuelve el control al programa interrumpido.

B. Ejemplos

Ejemplo 1. El estado de operación de un M6800 es el siguiente:

Registro Valor
Registro CCR %11001000
Acumulador A %00000110
Acumulador B %01010000
Registro PC %0000000000010000
Registro IDX %0000010100000000

El vector de interrupciones tiene la siguiente información:

Dirección $FFF8 $FFF9 $FFFA $FFFB $FFFC $FFFD $FFFE $FFFF


Contenido $40 $20 $10 $00 $7B $00 $00 $00

Y el Puntero de Pila (SP) vale $3A00.


Se produce una petición de interrupción a través de la línea NMI (nivel bajo) y se dispara la secuencia de instrucciones de
la rutina de interrupción respectiva. Se solicita:
a) Liste el contenido de la pila al momento de ejecutarse la primera instrucción de la rutina de interrupción respectiva.
b) Indique el estado del bit I del CCR una vez que se está ejecutando la rutina de interrupción.
c) Indique el contenido del PC al momento de ejecutarse la primera instrucción de la rutina de interrupción.
d) Consigne la dirección inicial de las rutinas de interrupción especificadas en el vector de interrupciones e indique a
cuáles corresponde.
Solución
a) Contenido de la pila al ejecutarse la primera instrucción de la interrupción:
$39FA $C8 CCR
$39FB $50 B
$39FC $06 A
$39FD $05 IDXH
$39FE $00 IDXL
$39FF $00 PCH
$3A00 $10 PCL
b) El estado del bit I del CCR cuando se está ejecutando la rutina de interrupción: I = 1.
c) Contenido del PC al ejecutarse la primera instrucción de la rutina de interrupción PC = $ 7B00
d) La dirección inicial de la rutina de interrupción especificada en el vector de interrupciones corresponde a la interrupción
no enmascarable NMI y es:

$FFFC (NMIH) -> $7B (H)


$7B00
$FFFD (NMIL) -> $00 (L)

Ejemplo 2. Un dispositivo conectado a la línea IRQ del M6800 (µP 6800), realiza una solicitud de interrupción para que el
procesador inicialice en $FF el segmento de memoria comprendido entre las direcciones $1000 y $3000. El vector de
interrupciones contiene en las direcciones $FFF8 y $FFF9 los valores $00 y $10, respectivamente. Codifique la rutina de
interrupción que realice lo especificado.

Página 2
TÉCNICAS Y ESTRUCTURAS DIGITALES

VECTOR DE MODO DE
PC PROGRAMA
INTERRUPCIONES DIRECCIONAMIENTO
$0010 LDAA #$FF Inmediato
$0012 LDX #$1000 Inmediato
$FFF8=$00 BUCLE $0015 STAA $00,X Indexado
$FFF9=10 $0017 INX Inherente
… $0018 CPX #$3000 Inmediato
$001B BLE BUCLE Relativo
$001D RTI Inherente

Ejemplo 3. Un programa ejecutándose en el M6800, realiza una solicitud de interrupción para que el procesador determine la
cantidad de valores negativos almacenados del segmento de memoria comprendido entre las direcciones $AB00 y $FE00. El
valor de la cuenta debe almacenarse en la dirección $AAFF. El vector de interrupciones contiene en las direcciones $FFFA y
$FFFB los valores $23 y $00, respectivamente. Codifique la rutina de interrupción que realice lo especificado.

VECTOR DE MODO DE
PC PROGRAMA
INTERRUPCIONES DIRECCIONAMIENTO
… $2300 CLR $AAFF Extendido
$FFFA=$23 $2303 LDX #$AB00 Inmediato
$FFFB=00 BUCLE $2306 LDAA $00,X Indexado
… $2308 CMPA #$00 Inmediato
$230A BGE SEGUIR Relativo
$230C INC $AAFF Extendido
SEGUIR $230F INX Inherente
$2310 CPX #$FE00 Inmediato
$2313 BLE BUCLE Relativo
$2315 RTI Inherente

PROBLEMAS A RESOLVER
1. Responda:
a) ¿Qué es una interrupción? ¿Qué tipos de interrupción atiende el µP?
b) ¿Qué significa que una interrupción sea enmascarable?
c) ¿Qué significa que una interrupción sea no enmascarable?
d) Cuál es el vector de atención de interrupciones del microprocesador M6800, ¿qué contiene?
e) ¿Cuál debe ser el contenido de las últimas posiciones del mapa? ¿Qué ocurriría en el sistema si en las últimas
ubicaciones del mapa no se conectara ningún dispositivo?
f) Realice un esquema (diagrama de flujo) del proceso de atención de interrupciones del μP M6800. Explique.
g) ¿Qué instrucción de retorno de interrupción le corresponde a cada una de las interrupciones?
h) Las instrucciones SWI y BSR transfieren el control de ejecución del programa hacia otra ubicación. ¿Cuál es la diferencia
entre ellas? Explique y ejemplifique.

2. Explique detalladamente qué pasos sigue el procesador suponiendo:


a) Se atiende una interrupción enmascarable.
b) Se atiende una interrupción no enmascarable.
c) Se atiende una interrupción por software.
d) Se ejecuta una instrucción WAI

Página 3
TÉCNICAS Y ESTRUCTURAS DIGITALES
3. El estado de operación de un M6800 es el siguiente:

Registro Valor
Registro CCR %11101110
Acumulador A %11000010
Acumulador B %10011100
Registro IDX %1010100001110111
Registro PC %0010111011010110
Registro SP %1100100100100000

El vector de interrupciones tiene la siguiente información:

Dirección Contenido
$FFF8 %01111011
$FFF9 %10001110
$FFFA %10001111
$FFFB %11101100
$FFFC %00011010
$FFFD %01110001
$FFFE %11000111
$FFFF %11111001

Se produce una petición de interrupción a través de la línea NMI (nivel bajo) y se dispara la secuencia de instrucciones de
la rutina de interrupción respectiva. Se solicita:
a) Liste el contenido de la pila al momento de ejecutarse la primera instrucción de la rutina de interrupción.
b) Indique el estado del bit I del CCR una vez que se está ejecutando la rutina de interrupción.
c) Indique el valor del PC al momento de ejecutarse la primera instrucción de la rutina de interrupción.
d) Indique la dirección inicial de las rutinas de interrupción especificadas en el vector de interrupciones, ¿cuál corresponde
a la rutina solicitada?
e) ¿En qué momento vuelve el procesador al estado salvado en la pila?

4. Un dispositivo que se conecta al M6800 a través de la línea IRQ, realiza un pedido de interrupción al que el procesador
responde con la ejecución de la rutina ubicada a partir de la dirección $7C00. Dicha rutina copia el contenido del CCR al
segmento de memoria comprendido entre las posiciones $6600 y $71FF. Codifique la rutina correspondiente e indique
cuál es la dirección del vector de interrupciones que lee el procesador para ejecutar el programa de atención de
interrupciones.

5. A fin de atender las solicitudes de un dispositivo conectado a la línea NMI de un µp6800, codifique una rutina de atención
de interrupciones que reemplace los valores negativos de la primera página de memoria por el valor almacenado en la
dirección $32FF. En caso de no realizar reemplazos, debe almacenarse el valor $77 en la posición $0000. Además indique:
a) contenido la pila al iniciarse la rutina de interrupción,
b) dirección de la primera instrucción de la rutina de interrupción y
c) dirección del último registro almacenado en la pila.

Considere que el estado del procesador y el contenido del vector de interrupciones es el siguiente:

Página 4
TÉCNICAS Y ESTRUCTURAS DIGITALES

$FFFF $83

Acumulador A %00111111 $FFFE $F2

Acumulador B %01110000 $FFFD $10

Registro de Códigos de $FFFC $81


%11100110
Condición $FFFB $30
Registro Índice %1010011000001100 $FFFA $4B
Contador de Programa %0111000000001011 $FFF9 $A0
Puntero de Pila %1110001100100010 $FFF8 $BB

6. Un programa que realiza una petición de interrupción dispara una rutina que contabiliza los valores positivos, negativos y
ceros almacenados en el segmento de memoria comprendido entre las direcciones $3200 y $32FF. Suponga que las
posiciones $0010, $0020 y $0030 almacenarán las cuentas realizadas. Además indique:
a) contenido la pila al iniciarse la rutina de interrupción,
b) dirección de la primera instrucción de la rutina de interrupción y
c) dirección del último registro almacenado en la pila.
Considere que el estado del procesador y el contenido del vector de interrupciones es el siguiente:

$FFFF $33
Acumulador A %10001001 $FFFE $FB
Acumulador B %00000111 $FFFD $20
Registro de Códigos de %1100100010 $FFFC $FF
Condición
$FFFB $30
Registro Índice %0111000011110111
$FFFA $67
Contador de Programa %1001000000110000
$FFF9 $AB
Puntero de Pila %1010000101110000
$FFF8 $91

7. Un programa que realiza una petición de interrupción dispara una rutina que reemplaza los valores positivos de un
segmento de memoria por el valor del acumulador A mientras que los negativos son sustituidos por el contenido del
acumulador B. Suponga que el segmento de memoria se encuentra entre las direcciones $5500 y $58FF.
Considerando que el estado del sistema antes de iniciar la rutina es

Ac. A %10110101 $FFFF $10


Ac. B %10011010 $FFFE $34
IDX %0110000000011000 $FFFD $60
SP %1100100000011100 $FFFC $CB
PC %1010000010101011 $FFFB $DE
CCR %11001100 $FFFA $23
$FFF9 $30
$FFF8 $5C
a) indique el contenido de la pila del sistema,
b) indique el valor de PC, SP y bit de máscara de interrupción, una vez iniciada la interrupción y
c) codifique la rutina de interrupción.

Página 5
TÉCNICAS Y ESTRUCTURAS DIGITALES
8. Un dispositivo conectado a la línea IRQ realiza una petición de interrupción y dispara una rutina que coloca en 1 los bits 7
(más significativo) y 0 (menos significativo) de los registros de la memoria comprendida entre $1000 y $23FF.
Considerando que el estado del sistema antes de iniciar la rutina es

Ac. A %11001100 $FFFF $E1


Ac. B %11010101 $FFFE $63
IDX %1010001110110111 $FFFD $01
SP %1100111001001110 $FFFC $AA
PC %0000000100001001 $FFFB $1B
CCR %11011000 $FFFA $BB
$FFF9 $2C
$FFF8 $C3
a) Indique el contenido de la pila del sistema
b) Indique el valor de PC, SP y bit de máscara de interrupción, una vez iniciada la interrupción.
c) Codifique la rutina de interrupción.

9. Un dispositivo conectado a la línea NMI realiza una petición de interrupción y se dispara una rutina que copia el
contenido del vector de interrupciones a partir de la posición $0000. El estado del sistema antes de iniciar la rutina es

Registro CCR Acumulador A Acumulador B Registro IDX Registro PC Registro SP


%11100001 %01101010 %10110110 %1001010111000001 %1100011000000000 %1010111011001010

Dirección $FFF8 $FFF9 $FFFA $FFFB $FFFC $FFFD $FFFE $FFFF


Contenido $C8 $82 $CC $6B $80 $3F $D9 $77

a) Indique el contenido de la pila del sistema


b) Indique el valor de PC, SP y bit de máscara de interrupción, una vez iniciada la interrupción.
c) Codifique la rutina de interrupción.

10. Un dispositivo conectado a la línea IRQ del microprocesador realiza una petición de interrupción y se dispara una rutina
que suma los valores positivos del segmento de memoria comprendido entre las direcciones $3300 y $4FFF en tanto no
se produzca desborde. Considere que el resultado de la suma (sin desborde) se almacenará en la posición $0100. El
estado del sistema antes de iniciar la rutina es

Registro CCR Acumulador A Acumulador B Registro IDX Registro PC Registro SP


$ D0 $ 00 $ FF $ 9432 $ 2387 $ B200

Dirección $FFFF $FFFE $FFFD $FFFC $FFFB $FFFA $FFF9 $FFF8


Contenido $ 30 $ 0A $ A1 $ 22 $ 52 $ 30 $ B8 $ 45

a) Indique el contenido de la pila del sistema (direcciones y contenido)


b) Indique el valor de PC y SP antes de iniciar la interrupción, y al momento de iniciar la rutina de interrupción.
c) Codifique la rutina de interrupción.

11. En el segmento de memoria comprendido entre las direcciones $A200 hasta $A4FF se almacenó una serie numérica
creada aleatoriamente. Un dispositivo, asociado a la línea NMI del procesador, genera una solicitud de interrupción que
dispara la siguiente rutina: contar las apariciones de los acumuladores A y B en el segmento de memoria especificado.
Realice el diagrama de flujo y codifique el programa que atiende la interrupción.

Página 6
TÉCNICAS Y ESTRUCTURAS DIGITALES
12. Un dispositivo externo solicita interrupción al microprocesador a través de la línea NMI. La rutina de interrupción
solicitada, según el valor almacenado $1001, reemplaza la primera página de memoria con el contenido del registro
índice IDX (M($1001)=$AA) o borra la primera página ((M($1001)=$FF)). Codifique la rutina y ubíquela a partir de la
dirección $3C00.

13. Un programa que ejecuta una petición de interrupción dispara una rutina que compara 2 series numéricas, de igual
tamaño, almacenadas en memoria. Las series a comparar inician en las direcciones $0100 y $0400, respectivamente, y la
cantidad de elementos de las series se guarda en $00FF. El resultado de la comparación debe almacenarse en $0000: $00
(iguales) o $FF (distintos)
Considerando que el estado del sistema antes de iniciar la rutina es:

Dirección Contenido
Registro Valor
$FFF8 $7C
Registro CCR %11100111
$FFF9 $40
Acumulador A %11001101
$FFFA $E7
Acumulador B %00110010
$FFFB $01
Registro IDX %1001001000000110
$FFFC $83
Registro PC %1011000000011001
$FFFD $80
Registro SP %1101101000001000
$FFFE $9B
$FFFF $10

a) indique el contenido de la pila del sistema,


b) indique el valor de PC, SP y bit de máscara de interrupción, una vez iniciada la interrupción y
c) codifique la rutina de interrupción.

14. Un dispositivo conectado a la línea NMI realiza una petición de interrupción y dispara una rutina que borra el medio byte
superior de los registros de memoria comprendidos entre $2200 y $22FF. Considerando que el estado del sistema antes
de iniciar la rutina es

Dirección Contenido
$FFF8 $92
Registro Valor
$FFF9 $3C
Registro CCR %11101100
$FFFA $DB
Acumulador A %10111000
$FFFB $00
Acumulador B %01110111
$FFFC $A1
Registro IDX %1001010100101110
$FFFD $50
Registro PC %0110001100110011
$FFFE $8F
Registro SP %1110101011100111
$FFFF $F0

a) Indique el contenido de la pila del sistema


b) Indique el valor de PC, SP y bit de máscara de interrupción, una vez iniciada la interrupción.
c) Codifique la rutina de interrupción.
15. En un sistema basado en el M6800, la parte alta del mapa de direcciones se encuentra ocupada por memoria ROM.
Escriba un programa de atención de interrupciones que transfiera a memoria RAM la rutina (conjunto de instrucciones)
que atiende la interrupción RESET. Realice la copia a partir de la mitad del mapa de direcciones.

Página 7
TÉCNICAS Y ESTRUCTURAS DIGITALES

PROBLEMAS PROPUESTOS
16. Un programa solicita al µP una interrupción por software. La rutina correspondiente genera y almacena el código Binario
Natural (8 bits) a partir de la dirección $1B00. Codifique la rutina e indique el contenido del CCR antes de restaurar el
estado del sistema.

17. Un pedido de interrupción por hardware solicita al µP que replique el contenido del vector de interrupciones en las
direcciones de memoria anteriores al vector. Indique las posiciones de memoria implicadas, su contenido y codifique la
rutina de interrupción.

18. Una solicitud de interrupción por software dispara una rutina que modifica los valores del segmento de memoria
comprendido entre las direcciones $0100 y $01FF de la siguiente manera:
 Si el valor presente en la memoria es CERO se reemplaza por valor $FF
 Si el valor presente en la memoria es NEGATIVO e IMPAR se reemplaza por su complemento a 2.
 Si el valor presente en la memoria es POSITIVO se reemplaza por su duplo
 Si no corresponde a ninguno de los casos anteriores, se reemplaza por $00

Finalmente se debe guardar el conteo de las ocurrencias de cada caso y en el orden en que se mencionaron en las
primeras posiciones de memoria. Realice el diagrama de flujo y codificación correspondiente a tal rutina.

19. Dada una rutina de atención de interrupciones SWI que copia el estado del procesador antes de atender la interrupción
(contenido de la pila) a las primeras posiciones del mapa de direcciones, realice el diagrama de flujo y codificación
correspondiente de esta rutina teniendo en cuenta que el vector de interrupciones es el siguiente:

$FFF8 $FFF9 $FFFA $FFFB $FFFC $FFFD $FFFE $FFFF


%00101100 %11110000 %00101100 %01010111 %01111000 %11100111 %10000000 %00111111
20. Una rutina de interrupción por hardware copia el contenido de la primera página de memoria a partir de la mitad del
mapa. Realice el diagrama de flujo y codificación de la rutina que atienda tal interrupción teniendo en cuenta el vector de
interrupciones del punto anterior.



Página 8

Anda mungkin juga menyukai