Símplez+i4: modelo estructural
UCP
12
bus A
bus C
bus D
UC
MP
X
12
3
AC
UAL
teclado
pantalla
CTEC
CPAN
c
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 1
Modelo funcional
Formatos de instrucciones:
11
9
8
7
6
5
0
CO
R J I
CD
11
9
8
7
0
1 1 1 ECO
Modos de direccionamiento:
JI modo
DE
00 directo
DE=(CD)
01 indirecto
DE=((CD))
10 indexado
DE=(CD)+(X)
11 indirecto
e indexado
DE=((CD))+(X)
φφ
inmediato
operando=(CD)
Repertorio de instrucciones
CO
CO
CO
Significado
(bin.) (oct.) (nem.)
000
0
ST(AC)
→
MP[DE], o (X)
→
MP[DE]
001
1
LD(MP[DE])
→
AC, o (MP[DE])
→
X
010
2
ADD(AC) + (MP[DE])
→
AC, o
(X) + (MP[DE])
→
X
011
3
BRsiguiente instrucción en MP[DE]
100
4
BZsi cero en UAL, sig. instr. en MP[DE]
101
5
LD #(CD)
→
AC, o (CD)
→
X
110
6
SUB #(AC) – (CD)
→
AC, o (X) – (CD)
→
X
11100 70, 71
HALTdetiene la ejecución
11101 72, 73
EIpermite interrupciones
11110 74, 75
DIinhibe interrupciones
c
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 3
Direccionamientos directo e indirecto
bit 6 del primer formato: I = 0, directo; I = 1, indirecto
•
Ejemplos de instrucciones con direccionamiento
directo:
Binario
Octal Simbólico
Efecto
010000100000 2040
ADD .A,/32(AC) + (32)
→
AC
010100100000 2440
ADD .X,/32(X) + (32)
→
X
100000000101 4005
BZ /5Si el último resultado en la UAL fue 0,
bifurca a la dirección 5
•
Ejemplos de direccionamiento
indirecto:
Binario
Octal Simbólico
Efecto
010001100000 2140
ADD .A,[/32℄(AC) + ((32))
→
AC
010101100000 2540
ADD .X,[/32℄(X) + ((32))
→
X
100001000101 4105
BZ [/5℄Si el último resultado en la UAL fue 0,
bifurca a la dirección contenida en la
palabra de dirección 5
Direccionamientos indexado e indirecto–indexado
bit 7 del primer formato: J = 0, no indexado; J = 1, indexado
•
Ejemplos de direccionamiento
indexado:
Binario
Octal Simbólico
Efecto
010010100000 2240
ADD .A,/32[.X℄(AC) + (32 + (X))
→
AC
010110100000 2640
ADD .X,/32[.X℄(X) + (32 + (X))
→
X (raro, pero válido)
100010000101 4205
BZ /5[.X℄Si el último resultado en la UAL fue 0,
bifurca a la dirección 5 + (X)
•
Ejemplos de direccionamiento
indirecto–indexado:
Binario
Octal Simbólico
Efecto
010011100000 2340
ADD .A,[/32℄[.X℄(AC) + ((32) + (X))
→
AC
010111100000 2740
ADD .X,[/32℄[.X℄(X) + ((32) + (X))
→
X
(raro, pero válido)
100011000101 4305
BZ [/5℄[.X℄Si último resultado en la UAL 0,
bifurca a la dirección (5) + (X)
c
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 5
Direccionamiento inmediato
11
9
8
7
6
5
0
1 0 1
R
ø ø
operando
("literal")
(LD #)
11
9
8
7
6
5
0
1
R
ø ø
operando
("literal")
1 0
(SUB #)
En Símplez+i4, el direccionamiento inmediato sólo es aplicable a las
instrucciones
LD #y
SUB #(que sólo admiten este modo)
•
Ejemplos de direccionamiento
inmediato:
Binario
Octal Simbólico
Efecto
101000111111 5077
LD .A,#6363
→
AC
101010111111 5277
LD .A,#6363
→
AC
101100111111 5477
LD .X,#6363
→
X
101111111111 5777
LD .X,#6363
→
X
110000000001 6001
SUB .A,#1(AC) – 1
→
AC
Ejemplo: intercambio («swapping») en la MP
Programa
Zona A
0
100
149
200
249
Zona B
2
1
BR /4
D’100
D’200
X
X
4095
Usamos una palabra (
[1℄) como puntero al
comienzo de la zona A y otra (
[2℄) como
puntero al comienzo de la zona B
Usamos el registro de índice para
desplazarnos dentro de ambas zonas
Intercambio de dos palabras:
[5℄ 1301 LD .A,[/1℄[.X℄
[6℄ 0003 ST .A,/3; variable temp
[7℄ 1302 LD .A,[/2℄[.X℄
[8℄ 0301 ST .A,[/1℄[.X℄
[9℄ 1003 LD .A,/3
[10℄ 0302 ST .A,[/2℄[.X℄
c
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 7
Interrupciones: causas y cambios de contexto
Causas: en Símplez+i4, sólo los dos periféricos
Línea de interrupción
Asíncronas con el programa que se está ejecutando
Para cada periférico, una zona de datos y una RS
Cambios de contexto
(en general):
1. Al pasar a atender a una interrupción:
•
Salvaguardar el estado de la UCP (registros y punto en
que se ha interrumpido el programa)
•
Entrar en el nuevo contexto (bifurcar a la RS)
2. Al terminar la RS, volver al contexto del programa
interrumpido:
•
Restaurar el estado de la UCP
Interrupciones: zonas, permiso e inhibición
Causa
Interrumpe cuando
Zona de datos Rutina de servicio
Pantalla está preparada para
recibir un carácter
3840–3919
transfiere de zona de
datos al puerto 4093
Teclado se pulsa una tecla
(preparado para enviar
carácter)
3920–3999
transfiere del puerto
4095 a zona de datos
Permiso e inhibición:
Generales: instrucciones
EIy
DIParticulares: bit «IT» en los puertos de estado de direcciones
4092 (pantalla) y 4094 (teclado)
11
1
0
IT PR
c
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 9
Interrupciones: modelo procesal
Cuando aparece una interrupción:
1. La UCP termina la instrucción en curso
2. Inhibe todas las interrupciones
3. Guarda la dirección de retorno en D’63
4. Bifurca a la dirección D’4000
El resto, mediante software: el programa que empieza en 4000:
1.
Salva el estado
((AC) y (X)) y averigua la causa
2.
Realiza el servicio
(transferencia entre el puerto de datos y la
zona de datos)
Interrupciones: organización de la MP
zona de datos de la pantalla
zona de datos del teclado
0
63
3919
3920
3999
4000
4095
puertos de e/s (no MP)
4092
dirección de retorno
consulta y rutinas de
servicio de interrupciones
programa
3840
Direcciones arbitrarias
(Las únicas fijadas en el hardware
son D’63, D’4000 y D’4092 a D’4095)
c
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 11
Ejemplo de uso de interrupciones
Un programa que
1. Escribe en la pantalla un mensaje pidiendo datos
2. Los lee del teclado y los procesa
3. Escribe resultados en la pantalla
4. Vuelve a 1
Suponemos que el programa
Mientras se escriben los mensajes puede ir haciendo otra cosa
Mientras los datos se leen puede ir haciendo otra cosa
Comunicaciones programa–RS pantalla
Para escribir por la pantalla:
El programa
1. Introduce los caracteres en la zona de datos
(«de abajo arriba» es más fácil en Símplez+i4)
2. Inicia una palabra, o «variable global»,
XPAN, con el valor 79
(valor inicial del índice para la RS)
3. Permite interrupciones de la pantalla
La RS
1. Va escribiendo los caracteres que hay en la zona de datos;
a medida que lo hace, va decrementando (
XPAN)
2. Cuando ha terminado ((
XPAN) = 0) «avisa» al programa
mediante otra variable global,
MSPANc
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 13
Comunicaciones programa–RS teclado
Para leer del teclado:
El programa
1. Inicia una palabra, o variable global,
XTEC, con el valor 79
(valor inicial del índice para la RS)
2. Permite interrupciones del teclado
La RS
1. Va leyendo caracteres y almacenándolos en la zona de
datos («de abajo arriba»); a medida que lo hace, va
decrementando (
XTEC)
2. Cuando ha terminado ((
XTEC) = 0) «avisa» al programa
mediante otra variable global,
MSTECVariables globales y punteros
[ 0℄ 3014 BR /PRINC
[ 1℄ 0000 MSPAN RES 1 ; Mensaje de la pantalla
[ 2℄ 0000 MSTEC RES 1 ; Mensaje del te lado
[ 3℄ 0000 XPAN RES 1 ; Índi e para la RS de la pantalla
[ 4℄ 0000 XTEC RES 1 ; Índi e para la RS del te lado
[ 5℄ 7400 PZPAN DATA 3840 ; Puntero a la zona de la pantalla [ 6℄ 7520 PZTEC DATA 3920 ; Puntero a la zona del te lado
[ 7℄ 7774 PEPAN DATA 4092 ; Puntero al puerto de estado de pantalla [ 8℄ 7776 PETEC DATA 4094 ; Puntero al puerto de estado de te lado [ 9℄ 7775 PDPAN DATA 4093 ; Puntero al puerto de datos de pantalla [10℄ 7777 PDTEC DATA 4095 ; Puntero al puerto de datos de te lado [11℄ 0117 CTE79 DATA 79 ; Constante para ini iar índi es
[12℄ PRINC ...
;
; Ini ia ión y uso de las RS ;
[50℄ HALT
[51℄ 0000 AC RES 1 ; para guardar el a umulador
[52℄ 0000 X RES 1 ; para guardar el registro X
[53℄ 7662 PRSTEC DATA RSTEC ; puntero a la RS del te lado
[54℄ 7654 PBIFPAN DATA BIFPAN ; para bifur a ión en la RS de la pantalla [55℄ 7671 PBIFTEC DATA BIFTEC ; para bifur a ión en la RS del te lado [56℄ 7676 PFIN DATA FIN ; para salida a opera iones finales
c
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 15
Iniciación y uso de las RS
[ 0℄ 3014 BR /PRINC
...
[12℄ PRINC ... ; Entre otras osas, el programa llena
... ; la zona de datos de la pantalla
[20℄ 5000 LD .A,#0
[21℄ 0001 ST .A,/MSPAN ; Ini ia [1℄ y [2℄ (donde
[22℄ 0002 ST .A,/MSTEC ; las RS ponen sus mensajes)
[23℄ 1013 LD .A,/CTE79
[24℄ 0003 ST .A,/XPAN ; Ini ia los índi es para
[25℄ 0004 ST .A,/XTEC ; las zonas de datos
[26℄ 5003 LD .A,#3 ; Ini ia el puerto de estado
[27℄ 0107 ST .A,[/PEPAN℄ ; de la pantalla
[28℄ 5002 LD .A,#2 ; Ini ia el puerto de estado
[29℄ 0110 ST .A,[/PETEC℄ ; del te lado
[30℄ 7200 EI ; A partir de este momento la UCP
... atiende interrup iones
[40℄ 1002 ESPT LD .A,/MSTEC ; Ahora el programa ne esita
[41℄ 4050 BZ /ESPT ; los ara teres del te lado:
... ; espera a que la RS avise
...
[45℄ 1001 ESPP LD .A,/MSPAN ; Ahora quiere es ribir otra
[46℄ 4055 BZ /ESPP ; línea por la pantalla: espera
...
Consulta y servicio de interrupciones (1)
El programa que empieza en [4000] tiene cuatro partes:
1. Salvar el estado y averiguar la causa
2. Si pantalla, RS de la pantalla
3. Si teclado, RS del teclado
4. Restaurar el estado y volver
Variables locales y punteros (necesarios para bifurcaciones
locales, ya que las direcciones son mayores que 63):
[51℄ 0000 AC RES 1 ; para guardar el a umulador
[52℄ 0000 X RES 1 ; para guardar el registro X
[53℄ 7662 PRSTEC DATA RSTEC ; puntero a la RS del te lado
[54℄ 7654 PBIFPAN DATA BIFPAN ; para bifur a ión en la RS de la pantalla [55℄ 7671 PBIFTEC DATA BIFTEC ; para bifur a ión en la RS del te lado [56℄ 7676 PFIN DATA FIN ; para salida a opera iones finales
c
2009 DIT-ETSIT-UPM
Símplez+i4
transp. 17
Consulta y servicio de interrupciones (2)
1. Salvar el estado y averiguar la causa:
[4000℄ 0063 ST .A,/AC ; Guarda (AC)
[4001℄ 0464 ST .X,/X ; Guarda (X)
[4002℄ 1110 LD .A,[/PETEC℄ ; Mira el te lado
[4003℄ 6003 SUB .A,#3
[4004℄ 4165 BZ [/PRSTEC℄ ; Si te lado, bifur a
2. RS de la pantalla:
[4005℄ 1403 LD .X,/XPAN ; Índi e para la pantalla
[4006℄ 4166 BZ [/PBIFPAN℄ ; ¾Último ará ter?
[4007℄ 1305 LD .A,[/PZPAN℄[.X℄ ; A ede a la zona
[4008℄ 0111 ST .A,[/PDPAN℄ ; es ribe el ará ter
[4009℄ 6401 SUB .X,#1 ; y de rementa el índi e
[4010℄ 0403 ST .X,/XPAN
[4011℄ 3170 BR [/PFIN℄ ; Va al final
[4012℄ 5001 BIFPAN LD .A,#1 ; Último ará ter; inhibe
[4013℄ 0107 ST .A,[/PEPAN℄ ; interrup iones,
[4014℄ 0001 ST .A,/MSPAN ; avisa al programa,
[4015℄ 1105 LD .A,[/PZPAN℄ ;
[4016℄ 0111 ST .A,[/PDPAN℄ ; es ribe el ará ter
Consulta y servicio de interrupciones (3)
3. RS del teclado:
[4018℄ 1404 RSTEC LD .X,/XTEC ; Si último ará ter,
[4019℄ 4167 BZ [/PBIFTEC℄ ; va a (PBIFTEC) = 4025
[4020℄ 1112 LD .A,[/PDTEC℄ ; Lleva el ará ter
[4021℄ 0306 ST .A,[/PZTEC℄[.X℄ ; a la zona de datos
[4022℄ 6401 SUB .X,#1 ; y de rementa el índi e
[4023℄ 0404 ST .X,/XTEC
[4024℄ 3170 BR [/PFIN℄
[4025℄ 5001 BIFTEC LD .A,#1 ; Último ará ter; inhibe
[4026℄ 0107 ST .A,[/PETEC℄ ; interrup iones,
[4027℄ 0002 ST .A,/MSTEC ; avisa al programa
[4028℄ 1110 LD .A,[/PDTEC℄ ; y lee el ará ter
[4029℄ 0106 ST .A,[/PZTEC℄ ;
4. Restaurar el estado y volver:
[4030℄ 1063 FIN LD .A,/AC ; Éstas son las opera iones
[4031℄ 1464 LD .X,/X ; finales: restaurar AC y X,
[4032℄ 7200 EI ; permitir interrup iones
[4033℄ 3177 BR [/63℄ ; y volver al programa
END