Story Transcript
DISEÑO DE UN COMPUTADOR SIMPLE DISEÑO DE UN COMPUTADOR SIMPLE Contenido:
D El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución. D
Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.
D
Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.
D
Uso a nivel ISP: ensamblador y ejemplo.
D
La visión de CS2 como computador.
Bibliografía básica ** C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997. ** C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.
Dpto. Tecnología Electrónica
EC
Modo Computador - 0
DISEÑO DE UN COMPUTADOR SIMPLE Desde la Calculadora hacia el Computador * Cambios funcionales: 1. Modo de operación: * Calculadora: Ejecuta una operación preparada por el usuario * Computador: Ejecuta un programa almacenado en memoria Programa: Conjunto ordenado de instrucciones cuya ejecución resuelve un problema
2. Se incrementarán las prestaciones: Más datos y más operaciones
* Diseño a nivel RT: Punto de partida: la Unidad de Datos de la Calculadora Método de diseño: Introducir los cambios básicos para un Computador genérico
Dpto. Tecnología Electrónica
EC
Modo Computador - 1
DISEÑO DE UN COMPUTADOR SIMPLE Incorporación de la Memoria * Para aumentar los datos, se sustituyen los registros A y B por una Memoria M * Aparecen MAR (Memory Address Register) y AB (Address Bus) para las direcciones E
MAR
R W
AB
M DB
T
WT DB
T
WT Δ
a
b a±b
a
RA WA
b a±b
s r Δ
[AC] AC Δ
A
RAC WAC ZAC
Dpto. Tecnología Electrónica
B
RB WB
s r
[AC] AC Δ
EC
RAC WAC ZAC
Modo Computador - 2
DISEÑO DE UN COMPUTADOR SIMPLE Codificación de instrucciones * Al incorporar la Memoria, los datos se identifican por su dirección en M * Las instrucciones tienen, por tanto, dos campos básicos: 1
COP: Código de Operación, en el que se indica la operación
2
Campo de direcciones, en el que se indican los operandos
Instrucción: Codificada con n bits
COP
Dirección
ncop
naddress n = ncop + naddress
Dpto. Tecnología Electrónica
EC
Modo Computador - 3
DISEÑO DE UN COMPUTADOR SIMPLE Memoria de datos y de programa
- - Inconveniente: Dobles buses ++ Ventaja: Independiza dimensión de datos e instrucciones
CPU
* Arquitectura de Von Neumann: La Memoria es la misma para Datos y para Programa: · Tiene las ventajas e inconvenientes opuestas · Hay que repartir la memoria en datos y programas · Elegiremos esta opción
Dpto. Tecnología Electrónica
EC
Mdatos
Mprog
* Arquitectura de Harvard: Memorias distintas para Datos y para Programa:
M CPU
Modo Computador - 4
DISEÑO DE UN COMPUTADOR SIMPLE Registro de instrucción, IR (Instruction Register) * Una elección: ¿cuántas palabras de memoria ocupará una instrucción? ** En sistemas reales hay instrucciones de 1 palabra, y de 2, y de 3, y... ** En este tema de introducción elegimos 1 única palabra por instrucción
* El código de instrucción tiene “n” bits, igual que todo lo relativo a los datos (DB, AC,...) ** Habrá “ncop“ bits que decodificará la Unidad de Control ** Habrá “naddress“ bits que se usarán como bits de direcciones e irán a MAR
Dpto. Tecnología Electrónica
EC
Modo Computador - 5
DISEÑO DE UN COMPUTADOR SIMPLE naddress IR COPDirección
n = ncop + naddress
naddress E
MAR
R W
AB
ncop
M T
2naddress x n
WT DB
Unidad de Control
a
b a±b
s r
[AC] AC Δ
Dpto. Tecnología Electrónica
EC
RAC WAC ZAC
Dimensión “n”
Modo Computador - 6
DISEÑO DE UN COMPUTADOR SIMPLE Contador de Programa, PC (Program Counter) * Contador de Programa: Se usa como puntero de la instrucción que habrá que ejecutar PC
** PC apuntará siempre a la memoria de programa
** PC tiene “naddress” bits y debe estar conectado a MAR
naddress
naddress IR COPDirección
n = ncop + naddress
naddress E
MAR
R W
AB
ncop
M T
2naddress x n
WT DB
Unidad de Control
a
b a±b
s r
[AC] AC Δ
Dpto. Tecnología Electrónica
EC
RAC WAC ZAC
Modo Computador - 7
DISEÑO DE UN COMPUTADOR SIMPLE Ejecución automática del Programa Fetch
Execute
* Ciclo de Búsqueda (Fetch cycle): Se busca en la memoria la instrucción que se va a ejecutar y se lleva al IR. También se apunta a la siguiente instrucción.
* Ciclo de Ejecución (Execute cycle): Se decodifica y se ejecuta.
* El ciclo Fetch-Execute termina cuando llega una instrucción especial (STOP, END o similar. * Es operación de control (no precisa hardware específico en la Unidad de Datos)
Dpto. Tecnología Electrónica
EC
Modo Computador - 8
DISEÑO DE UN COMPUTADOR SIMPLE Control genérico del computador S0 0
XS
1
Comienza la ejecución del programa
PC ← PCinicial
STOP Final del programa
COP No STOP
Parte ASM de Execute
Dpto. Tecnología Electrónica
EC
Ejecución automática
Parte ASM de Fetch
Modo Computador - 9
DISEÑO DEL CS1 A NIVEL RT DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D
El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución.
D Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso. D
Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.
D
Uso a nivel ISP: ensamblador y ejemplo.
D
La visión de CS2 como computador.
Bibliografía básica **
C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997.
**C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.
Dpto. Tecnología Electrónica
EC
Diseño de CS1 - 0
DISEÑO DEL CS1 A NIVEL RT Proceso de Diseño de Computador Simple 1 (CS1) * Seguiremos el proceso de diseño de Sistemas Digitales, metodología Top-Down 1. Especificación del CS1: → Modo de operación: computador simple (según apartado anterior) → Conjunto de instrucciones (ISP): definiremos sólo 4 ( ↔ 2 bits en COP) 2. Diseño de CS1 como Sistema Digital → Unidad de datos → Microprograma de control → Unidad de control * Terminaremos usando CS1 como un computador a nivel ISP
Dpto. Tecnología Electrónica
EC
Diseño de CS1 - 1
DISEÑO DEL CS1 A NIVEL RT Conjunto de Instrucciones del Computador Simple 1 (M es la memoria RAM)
IR7IR6
Mnemónico
Operación
Comentarios
00
STOP
NOP
Parada (fin de programa)
01
ADD $A
AC I AC + M($A)
Suma (en el acumulador)
10
SUB $A
AC I AC - M($A)
Resta (en el acumulador)
11
STA $A
M($A) I AC
Almacena (el acumulador en M)
* Por tanto, si los datos se dimensionan a 1 Byte de anchura, DB es de n = 8 bits: • IR es de n = 8 bits (n = ncop + naddress): • 2 de ellos para COP (nCOP=2): IR7IR6 • 6 para direcciones (naddress=6): IR5 - IR0 • M es 26 x 8 (64 Bytes) • MAR y PC son de 6 bits Dpto. Tecnología Electrónica
EC
Diseño de CS1 - 2
DISEÑO DEL CS1 A NIVEL RT Elecciones sobre el Programa:
2. La ejecución será LINEAL: tras ejecutar una instrucción (p.ej. “K”) se ejecutará la de la siguiente posición (“K + 1”)
M $0 Instrucción 1ª $1 Instrucción 2ª $2 Instrucción 3ª
Ejecución
1. El programa se almacena en las primeras posiciones de M: la primera instrucción es la que esté en M($0)
$3 Instrucción 4ª
* Por tanto, el PC debe ser un contador ascendente con puesta a 0: PC [6] con señales de operación IPC (: PC ← PC + 1) y CLPC (: PC ← 0) IPC
PC [6]
CLPC
Dpto. Tecnología Electrónica
EC
[6]
Diseño de CS1 - 3
DISEÑO DEL CS1 A NIVEL RT Unidad de datos del CS1 IPC CLPC
[6] TPC
AB
[6]
MAR[6]
A5-A0
[6]
IR[8] CO
D7-D0 CD
WT
[2]
UNIDAD XS
RAM 26 x 8
TIR
TB
M
E R W
PC[6]
DE CONTROL
.
Dpto. Tecnología Electrónica
E R A W S IPC CLPC TPC ZAC .. RAC WAC WAC
DB[8]
T[8] [8] ALU [8]
[8]
AC[8]
EC
Diseño de CS1 - 4
DISEÑO DEL CS1 A NIVEL RT Desarrollo en Micro-operaciones * Ciclo de Búsqueda (Fetch) μOp
S
Señales a activar
1 MAR I PC
TPC
2 IR I RAM, PC I PC + 1
E, R, TB, IPC
* Ciclo de Ejecución (Execute) S 3
STOP (00)
ADD (01)
STA (11)
MAR I IR (TIR)
NOP go to S0 T I RAM ( E, R, WT)
4 5
SUB (10)
AC I AC + T, goto S1 (A, WAC) Dpto. Tecnología Electrónica
RAM I AC, goto S1 ( E, W, RAC)
AC I AC - T, goto S1 (S, WAC) EC
Diseño de CS1 - 5
DISEÑO DEL CS1 A NIVEL RT Carta ASM de Datos S0 0 xs
S4
1
11(STA)
PC I PCinic
IR7,6
TIM
M I AC
MAR I PC
S1
IR I RAM PC I PC + 1
S2
FETCH
EXECUTE
IR7,6
S5 01(ADD)
S3
≠11
IR7,6
AC I AC + T
≠01(SUB)
AC I AC - T
00 (STOP)
≠ 00 MAR I IR
Dpto. Tecnología Electrónica
EC
Diseño de CS1 - 6
DISEÑO DEL CS1 A NIVEL RT Carta ASM de Control S0 0 xs
E
1
11(STA) CLPC
IR7,6
≠11 R, WT
W, RAC S1
TPC FETCH E, R,TB, IPC
WAC
S2 01(ADD)
S3
EXECUTE
S4
A
IR7,6
S5 ≠01(SUB) S
IR7,6 00 (STOP) ≠ 00 TIR
Dpto. Tecnología Electrónica
EC
Diseño de CS1 - 7
DISEÑO DEL CS1 A NIVEL RT Unidad de control: 1 biestable por estado >1 CLPC
TPC
>1
IPC TB
xs
TIR
1
2
3
&
0 4
IR7 IR6
STOP
Dpto. Tecnología Electrónica
0
S
1
A
5
1 DEC 0 2:4 1 1 2 0 3
R WAC
WT >1
E
W RAC
ADD STA
EC
Diseño de CS1 - 8
DISEÑO DEL CS1 A NIVEL RT Uso de CS1 a nivel ISP * PROBLEMA: Almacenar en la posición $3F el resultado de sumar los datos de las posiciones $3E y $3D y restarle el de $3C. Esto es, a nivel RT: M($3F) I M($3E) + M($3D) - M($3C) → El programa mnemónico es: Instrucciones comentarios 1: STA $20 2: SUB $20 con esto se hace [AC] = M($20) - M($20) = 0 3:
ADD $3E
[AC] = M($3E)
4:
ADD $3D
[AC] = M($3E) + M($3D)
5:
SUB $3C
[AC] = M($3E) + M($3D) - M($3C)
6:
STA $3F
M($3F) = M($3E) + M($3D) - M($3C)
7:
STOP
Dpto. Tecnología Electrónica
EC
Diseño de CS1 - 9
DISEÑO DEL CS1 A NIVEL RT MEMORIA: Código máquina y datos para M($3E)=126(10, M($3D)=105(10 y M($3C)=188(10 $A
[M($A)]
Instrucción/Dato
00
1110
0000
STA $20
01
1010
0000
SUB $20
02
0111
1110
ADD $3E
03
0111
1101
ADD $3D
04
1011
1100
SUB $3C
05
1111 1111
STA $3F
06
00xx
STOP
20
dddd dddd
Dato irrelevante
3C
1011 1100
188(10 = $BC
3D
0110 1001
105(10 = $69
3E
0111 1110
126(10 = $7E
3F
0010 1011
126(10 + 105(10 - 188(10 = 43(10 = $2 B
xxxx
Dpto. Tecnología Electrónica
EC
P R O G R A M A
D A T O S
Diseño de CS1 - 10
DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D
El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución.
D
Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.
D Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control. D
Uso a nivel ISP: ensamblador y ejemplo.
D
La visión de CS2 como computador.
Bibliografía básica **
C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997.
**C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 0
CS2: DISEÑO LÍNEA DE PROGRESO PARA CS2 •
Diversificar las instrucciones: ••
Tipos de Instrucciones: Tareas u operaciones que realizan
••
Modos de Direccionamiento: Formas de indicar los datos u operandos
y, en menor medida, la cantidad de datos •
Quedan pendientes otras muchas líneas de progreso: •• •• •• •• ••
Longitud variable para la instrucción Capacidad de entrada/salida Modificar memoria interna (incluir cache, aumentar la capacidad) Variar el sistema de buses Posibilidad de transferir el control de procesos
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 1
CS2: DISEÑO Diversificación de instrucciones • TIPOS DE INSTRUCCIONES: Tareas que realizan, como son: ••
ARITMÉTICAS Y LÓGICAS: Usualmente de 1, 2 o 3 operandos: A ← B ∗ C
••
TRANSFERENCIA DE DATO: Mueve un dato: destino ← fuente
••
DE SALTO: Modifica la ejecución lineal del programa: PC ≠ PC + 1
••
DE SUBRUTINA: Salto o retorno. Interviene el registro SP (Stack Pointer)
••
DE CONTROL DE ESTADO: Actúan con los bits o banderas (flags) de C, V, Z,...
••
MISCELÁNEA: Otras instrucciones no incluidas en los grupos anteriores
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 2
CS2: DISEÑO Subrutina • Concepto: Fragmento de programa que realiza una cierta operación y que se ejecuta varias veces en el Programa Principal
• Uso: Se escribe una sola vez y se llama las veces necesarias, retornando al lugar de llamada Programa Principal
Programa Principal
K: Salto a SUBR K+1: sigue
L: Salto a SUBR L+1: sigue
K: Salto a SUBR K+1: sigue
P: Q:
Ejecución
SUBR
L: Salto a SUBR L+1: sigue
P: Q:
SUBR
• Subrutinas imbricadas (anidadas, encadenadas,...): Cuando dentro de una subrutina se llama a otra, dentro de ésta a una tercera, etc. En cada caso hay que guardar la dirección de retorno correcta, para lo cual se usa una memoria tipo pila. Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 3
CS2: DISEÑO Diversificación de instrucciones • MODOS DE DIRECCIONAMIENTO: COP
Direccionamiento
•• IMPLÍCITO o INHERENTE •• INMEDIATO
COP
COP
- - - - - - - -
Mem
Dato
aaaa •• DIRECTO
COP
Dato
aaaa
Mem •• INDIRECTO
COP
Dpto. Tecnología Electrónica
aaaa
bbbb
bbbb
Dato
aaaa
EC
Computador Simple 2 Diseño - 4
CS2: DISEÑO Conjunto de instrucciones Load Accumulator IMmediate
LAIM AC ← inmediato
JuMP
JMP
PC ← ΑΑ
LoaD Accumulator
LDA
AC ← Μ
Branch if Carry Set
BCS
C: PC ← ΑΑ
STore Accumulator
STA
Μ ← AC
Decrement and Branch if Zero
DBZ
Μ ← Μ − 1; Ζ: PC ← Ν + 2
ADD
ADD
AC ← AC + M
CLear Carry
CLC
C←0
SUBtract
SUB
AC ← AC - M
SEt Carry
SEC
C←1
ADD Indirect
ADDI
AC ← AC + Mindirecto
STOP
STOP ΝΟP
ROtate Right
ROR
C, AC ← SHR(AC, C)
Jump to SubRoutine
JSR
push (PC) PC ← AA
ROtate Left
ROL
C, AC ← SHL(AC, C)
Return of Subroutine
RTS
PC ← (pull)
donde: * * * * * * *
inmediato es el dato incluido en la propia instrucción; AA es la dirección de salto incluida
M es la palabra de memoria direccionada, M(dirección incluida) Mindirecto es la M direccionada indirectamente: M( [M(dirección incluida)]7-0) N es la dirección donde se encuentra la instrucción actual (DBZ) AC: ACumulador; C: Carry; PC: Program Counter; Z: Zero C se pone a 0 al ejecutarse LAIM y LDA Pila ociosa: SP apunta a la última palabra escrita; inicialmente, SP = 0
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 5
CS2: DISEÑO R W
Unidad de Datos del Computador simple 2 AB [8]
A7-0 D11-0
TSP, TIR, TPC
RAM 28x12
MAR [8] IS, DS, CLSP
SP [8]
W4, W8, R8
DECODIFICACIÓN Y CONTROL
IPC, WPC RPC, CLPC
IR [12]
IR11-8
XS
PC [8]
DB11-8 “0”
CIM
∇
11-0
DB7-0
DB7-0
DB [12]
DB [12]
11-8
RT [12]
WT,RT,DT
Z A S
Csalida
ALU [12]
[AC]
COUT CC
C
AC [12]
SC WA, RR, RL ZA, RA
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 6
CS2: DISEÑO R W
Novedades en la U. D. del CS2 AB [8]
A7-0 D11-0
Dimensionamiento TSP, TIR, TPC
RAM MAR [8]
IS, DS CLSP
SP [8]
W4, W8, R8
DECODIFICACIÓN Y CONTROL
PC [8]
IPC, WPC RPC, CLPC
IR [12]
IR11-8
XS
28x12
DB11-8 “0”
CIM
∇
11-0
DB7-0
DB7-0
DB [12]
DB [12]
11-8
RT [12]
WT,RT,DT
Z A S
Csalida
ALU [12]
[AC]
COUT CC
C
AC [12]
SC WA, RR, RL ZA, RA
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 7
CS2: DISEÑO R W
Novedades en la U. D. del CS2 AB [8]
Registros
SP [8]
W4, W8, R8
LAIM
PC [8]
IPC, WPC RPC, CLPC
IR [12]
IR11-8
DECODIFICACIÓN Y CONTROL
RAM 28x12
MAR [8]
Subrutina IS, DS CLSP
XS
A7-0 D11-0
TSP, TIR, TPC
DB11-8 “0”
CIM
∇
11-0
DB7-0
DB7-0
DB [12]
DB [12]
11-8
RT [12]
WT,RT,DT
Z A S
Carry Csalida
ALU [12]
[AC]
COUT CC
C
AC [12]
SC WA, RR, RL ZA, RA
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 8
CS2: DISEÑO R W
Novedades en la U. D. del CS2 AB [8]
A7-0 D11-0
TSP, TIR, TPC
RAM 28x12
MAR [8]
Flujo de datos
IS, DS CLSP
SP [8]
W4, W8, R8
DECODIFICACIÓN Y CONTROL
Entradas de Control de estado
IPC, WPC RPC, CLPC Entrada/Salida
IR [12]
IR11-8
XS
PC [8]
DB11-8 “0”
CIM
∇
11-0
DB7-0
DB7-0
DB [12]
DB [12]
11-8
RT [12]
WT,RT,DT
Z A S
Csalida
de IR y PC
ALU [12]
Conexión hacia DB
[AC]
COUT CC
C
AC [12]
SC WA, RR, RL ZA, RA
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Diseño - 9
CS2: DISEÑO Unidad de Control 0 Xs 1 Inicialización
Carta ASM FETCH
F
0 1
COP 2 D (STOP)
ASM LAIM
ASM LDA
ASM STA
Dpto. Tecnología Electrónica
•••
ASM RTS
EC
Computador Simple 2 Diseño - 10
CS2: DISEÑO Unidad de Control 0 Xs Inicialización
1 Inicialización
Xs
Carta ASM FETCH
FETCH
0
LAIM
1
LDA
2
STA
D IR11:IR8 0 1
No Conectar
F COP
F
RTS
2 D (STOP)
ASM LAIM
ASM LDA
ASM STA
Dpto. Tecnología Electrónica
•••
ASM RTS
IR11:IR8
EC
Computador Simple 2 Diseño - 11
ENSAMBLADOR DEL CS2 DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D
El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución.
D
Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.
D
Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.
D Uso a nivel ISP: ensamblador y ejemplo. D
La visión de CS2 como computador.
Bibliografía básica ** C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997. ** C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 0
ENSAMBLADOR DEL CS2 Ensamblador ENSAMBLADOR es un término que sirve para:
LENGUAJE DE PROGRAMACIÓN con el que se escriben los programas en ensamblador
C PROGRAMA escrito en algún lenguaje que, a partir de un programa en ensamblador, obtiene el código ejecutable de la máquina (máquina es CS2)
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 1
ENSAMBLADOR DEL CS2 Lenguaje ensamblador En general, un lenguaje ensamblador consta de: INSTRUCCIONES EJECUTABLES: se escriben con el mnemónico correspondiente y se interpreta al código ejecutable. Ejemplo de CS2: 1010 01000011 DBZ $43 DIRECTIVAS DE ENSAMBLADO O PSEUDOINSTRUCCIONES: son instrucciones del lenguaje ensamblador, pero no de la máquina: no dan lugar a código ejecutable. * Las directivas sirven para DOCUMENTAR y para FACILITAR la escritura de programas: uso de variables, etiquetas, etc.
Lenguaje ensamblador del CS2: Cada línea del fichero del programa corresponde a una instrucción o directiva Las 16 instrucciones del CS2 con el mnemónico ya dado y: * direcciones en hexadecimal con el formato $HH: p. ej. BCS $0B * datos en decimal (p. ej. LAIM 50), hexadecimal (LAIM $32) u octal (LAIM #062) Las directivas son: * comentarios tras cada “ ; “ * variables para direcciones: EQU nombre $HH * etiquetas: nombre: instrucción ... ... ... ... otrainstrucción nombre
Dpto. Tecnología Electrónica
EC
; esto es un comentario EQU ALTA $AA ciclo1: ADDI ALTA ... ... ... ... JMP ciclo1
Computador Simple 2 Ensamblador- 2
ENSAMBLADOR DEL CS2 Programa ensamblador Ensamblador: programa que interpreta el programa del CS2. Este ensamblador es una aplicación que corre sobre un computador real.
* Detecta errores léxicos, sintácticos y semánticos Fichero en lenguaje ensamblador que programa el usuario. Se usa un editor.
* Se eliminan las directivas * Interpreta las instrucciones del CS2 creando el código ejecutable sobre CS2
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 3
ENSAMBLADOR DEL CS2 Ejemplo: Sumar n magnitudes (Prob. 44) Especificaciones:
comienzo
$HH
inicialización
[M($HH)]
sin mensaje de desbordamiento
00
instrucción 1
n = nº sumandos = 8
01
instrucción 2
...
acumula nuevo sumando
43
Resultado final (sin acarreo)
...
sí
ALTA (iniciar a $EF)
AA
dirección más alta de sumando
CONT (iniciar a 8)
AB
cuenta nº sumandos sin sumar aún
no acarreo
...
busca nuevo sumando sí
DATO n
no último
DATOS (magnitudes) EF
fin
Dpto. Tecnología Electrónica
DATO 1
...
EC
Computador Simple 2 Ensamblador- 4
ENSAMBLADOR DEL CS2 Programa en ensamblador ; Suma de n magnitudes (n = 8): ; M($43) = M($EF) + M($EE) + M($ED) + ... + M($E8) ; ; Variables EQU CONT $AB ; CONT cuenta sumas que faltan EQU ALTA $AA; ALTA señala al sumando siguiente ; ; Inicialización LAIM 8 ;n=8 STA CONT ; CONT es $AB = 8 LAIM $EF STA ALTA ; inicializa ALTA = $EF LAIM 0 ; AC = 0 ; Programa principal ciclo1: ADDI ALTA ; acumula suma BCS fin ; sale si hay acarreo DBZ ALTA ; siguiente sumando DBZ CONT ; salta (N+2) si último JMP ciclo1 STA $43 ; almacena resultado fin: STOP
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 5
ENSAMBLADOR DEL CS2 Programa en ensamblador
Ensamblador
; Suma de n magnitudes (n = 8): ; M($43) = M($EF) + M($EE) + M($ED) + ... + M($E8) ; ; Variables eliminadas EQU CONT $AB ; CONT cuenta sumas que faltan EQU ALTA $AA; ALTA señala al sumador siguiente ; ; Inicialización LAIM 8 ;n=8 STA CONT ; CONT es $AB LAIM $EF ALTA es $AA STA ALTA ; inicializa ALTA = $EF LAIM 0 ; AC = 0 ; Programa principal ciclo1 está en $05 ciclo1: ADDI ALTA ; acumula suma 2ª vez: fin está en $0B BCS fin ; sale si hay acarreo DBZ ALTA ; siguiente sumando DBZ CONT ; salta (N+2) si último JMP ciclo1 STA $43 ; almacena resultado fin está en $0B fin: STOP
Dpto. Tecnología Electrónica
EC
Programa código máquina $HH
mnem
[M]
00
LAIM 8
0000 0000 1000
01
STA $AB
0010 1010 1011
02
LAIM $EF
0000 1110 1111
03
STA $AA
0010 1010 1010
04
LAIM 0
0000 0000 0000
05
ADDI $AA
0101 1010 1010
06
BCS $0B
1001 0000 1011
07
DBZ $AA
1010 1010 1010
08
DBZ $AB
1010 1010 1011
09
JMP $05
1000 0000 0101
0A
STA $43
0010 0100 0011
0B
STOP
1101 (00 ... 00)
Computador Simple 2 Ensamblador- 6
ENSAMBLADOR DEL CS2 Ejercicios de programación con CS2 1. Escribir números en la palabra WORD de memoria (p. ej. $AA) * Se declara la variable WORD:
EQU WORD $AA
1a. Si el número es una magnitud, p. ej. 96:
LAIM 96; también LAIM $60 STA WORD ; WORD = $060
1b. Si el número es negativo (Ca2), p. ej. - 96 Se aprovecha que:
LAIM 96 STA WORD LAIM 0 SUB WORD ;AC=0-96= $FA0 STA WORD ; WORD = $FA0
-N=0-N
Cuestiones:
¿Cómo se introduce un número positivo? ¿Cuáles son el mayor y el menor valor que se pueden introducir según 1a? ¿Y según 1b?
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 7
ENSAMBLADOR DEL CS2 1.c. Si el número es una magnitud mayor de 255, p. ej. 596:
596 = $254
Hay que escribirlo por pasos. Entre otras opciones: * Introducir bit a bit con CLC/SEC seguidos de ROL/ROR * Introducir primero en M el dígito hexadecimal más significativo seguido de 0’s (M=$200), después los dos dígitos menos significativos (AC=$054) y, al fin, sumar M y AC. EQU M $AB LAIM $80 ; AC = 0000 1000 0000 ; En CS2 ahora el carry es C=0, si no, ejecutaría CLC ROL ; AC = 0001 0000 0000 ROL ; AC = 0010 0000 0000 = $200 STA M ; M = $200 LAIM $54 ; AC = $054 ADD M ; AC = $254 STA WORD ; WORD = $254 = 596
Cuestiones: ¿Cuáles son el mayor y el menor valor que se pueden introducir según 1a, b, c?
2. Sobre las subrutinas * Terminan con RTS (el programa, con STOP) ** Hay que tener presente cómo intercambian datos con el programa; usad variables *** Las direcciones de retorno se almacenan en $FF (después, en $FE, y en $FD, ...); hay que evitar , pues, usar las últimas direcciones de memoria para poner datos
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 8
ENSAMBLADOR DEL CS2 3. Bifurcar el flujo de ejecución en función de si AC es nulo o no EQU prov $AA STA prov ; prov = N LAIM 1 ADD prov STA prov ; prov = N + 1 DBZ prov JMP tarea2 JMP tarea1
* Sea [AC]inicial = N Sí
No AC = 0
Tarea 1
Tarea 2
* Para usar DBZ con el fin de saber si N=0, hay que poner N+1 en una posición de memoria .
.. sigue ... tarea1: ... ; 1ª instr. de Tarea 1
.
.. sigue ... tarea2: ... ; 1ª instr. de Tarea 2
Cuestiones (y soluciones) : *
¿Cómo se bifurca si se pregunta por el valor 0 de una posición de memoria? Para prov como posición de memoria, el algoritmo es como el de antes eliminando la primera instrucción STA prov
** ¿Cómo se podría conservar el contenido del AC en este último caso? En primer lugar se guarda AC (p. ej. en M), STA M , después se hace la bifurcación y, por último, se pone LDA M como 1ª instrucción tanto en tarea1: como en tarea2:
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 9
ENSAMBLADOR DEL CS2 4. La resta (SUB) y la bifurcación con BCS: SUB B ; AC ← AC - B Números con signo (Ca2)
Números sin signo (magnitudes)
→ Opera como el sumador/restador
→ Opera como el restador de magnitudes pero el valor de Bwout se escribe en C:
→ Resultado en notación Ca2 → Bit de signo en AC11 → El bit de carry, C, se modifica según los datos → No hay bit de overflow, V
→ Resultado magnitud si C = Bwout = 0 → Resultado en Ca2 si C = Bwout = 1 → El bit C se modifica según los datos, pero no tiene sentido de carry .
Para la suma, ADD o ADDI: El carry C y el acumulador AC muestran el contenido correcto de la suma y del acarreo de salida tanto para magnitudes como para Ca2
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 10
ENSAMBLADOR DEL CS2 4.a. A y B magnitudes: bifurcar según sea o no A > B A>B↔A-B>0 Sí
No A>B
Tarea 1
Tarea 2
* Hacer A -B → Bwout = C: ** C = 1 ↔ A < B ** C = 0 ↔ A > B
EQU A $AD EQU B $AE LDA A SUB B ; C = Bwout BCS tarea2 ... ; 1ª instr. de Tarea 1 ... ; 2ª instr. de Tarea 1
... sigue ... tarea2: ... ;1ª instr. de Tarea 2
... sigue ...
os
4.b. A y B n en Ca2: bifurcar según sea o no A > B Bit de signo AC11 * Hacer A -B → : ** AC11 = 1 ↔ A < B ** AC11 = 0 ↔ A > B
LDA A SUB B ; AC11 = Bwout ROL BCS tarea2 ... ; 1ª instr. de Tarea 1
... sigue ... tarea2: ... ;1ª instr. de Tarea 2
... sigue ...
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 11
ENSAMBLADOR DEL CS2 5. Almacenamiento Indirecto: STAI Supongamos que el acumulador en ciclos sucesivos se va a almacenar primero en $9F, después en $9E, después en $9D, etc. Si sólo disponemos de la instrucción STA, en la primera escritura habría que poner STA $9F, en la segunda STA $9E, en la tercera STA $9D, etc., siendo imposible hacer un bucle. Si dispusiéramos de la instrucción STAI se resolvería fácilmente esta cuestión.
* STAI stind, donde stind es la posición de referencia, que en nuestro ejemplo será $F0 * Se trata de “emular” STAI stind mediante una subrutina1: 1/ En dos posiciones de memoria consecutivas ($F0 y $F1) se escriben los códigos máquinas de STA y de RTS como sigue: M($F0) = $2nn Corresponde a STA $nn, siendo “$nn” la primera dirección (la mayor) donde se almacenará el acumulador, en el caso propuesto, es $9F M($F1) = $F00 Corresponde a RTS 2/ Cuando se quiera usar STAI en el programa principal se escribiría: EQU stind $F0 ; la posición elegida stind la situamos en $F0 JSR stind ; se ejecutará M(stind) = STA $nn y, seguidamente, RTS DBZ stind ; M(stind) = M(stind) - 1: se apunta a la siguiente dirección sigue 1 ; sigue ejecutando la tarea deseada tras “STAI” sigue 2 ; etc. 1. El autor de este idea es D. Alejandro Muñoz Rivera, cuando fue alumno de esta asignatura
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Ensamblador- 12
* Ejemplo: Existen 20 ($14) datos almacenados en memoria desde la dirección $EF hacia posiciones decrecientes. Realice un programa CS2 que los reescriba a partir de $9F. EQU fuente $80 EQU cont $81 EQU stind $F0 ; RTS estará en $F1 ; Escribimos código máquina STA nn = $29F LAIM $80 ROL ROL STA stind ; M(stind) = $200 : STA $00 LAIM $9F ADD stind STA stind ; M(stind) = $29F : STA $9F ; Escribimos código máquina para RTS: $F00 LAIM $F0 ROL ROL ROL ROL STA $F1 ; M($F1) = $F00 : RTS ; Iniciamos cont a 20 = $14 y fuente a $EF LAIM $14 STA cont ; cont = número de datos LAIM $EF STA fuente ; fuente = $EF
; Ciclo de movimiento de datos ciclo: LAIM 0 ADDI fuente ; AC = Dato_fuente DBZ fuente ; nueva dirección fuente (- 1) JSR stind ; mueve dato a destino DBZ stind ; nueva dirección destino (- 1) DBZ cont JMP ciclo STOP
Memoria:
$00 $01 ......
Programa
$80 $81
fuente cont
$9E $9F
Destino de datos
$EE $EF $F0 $F1
Datos fuentes $2nn : STA destino $F00 : es RTS
CS2 COMO COMPUTADOR DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D
El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución.
D
Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.
D
Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.
D
Uso a nivel ISP: ensamblador y ejemplo.
D La visión de CS2 como computador. Bibliografía básica ** C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997. ** C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Computador- 0
CS2 COMO COMPUTADOR Migración de estructuras: Sistema Digital → Computador Visión Sistema Digital a nivel RT
Mem
CPU Cualificadores Unidad de Datos
Central Processing Unit
Unidad de Control
Comandos
Visión Computador
AB: Address Bus
DB: Data Bus
MEM
CB: Control Bus
* Faltan los circuitos de entrada/salida (I/O)
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Computador- 1
CS2 COMO COMPUTADOR Lo que falta a nivel de instrucciones (ISP) Instrucciones de más de una palabra: ciclo FETCH más complejo: Primera búsqueda: código de operación, que informa a la CPU de si hay que buscar más palabras para completar la instrucción. Entonces, nueva búsqueda o ejecución, según corresponda Ver Problema 40
Más modos de direccionamiento: Faltan muchos modos de direccionamiento Un problema importante es que el CS2 no tiene almacenamiento indirecto
Más tipos de instrucción: faltan muchas operaciones útiles: lógicas, de salto, comparaciones, etc. operando sobre distintos tipos de datos: decimales/punto flotante, de distintos tamaños, etc.
Muchos de estos aspectos los veremos en el MC68000
Dpto. Tecnología Electrónica
EC
Computador Simple 2 Computador- 2