Sie sind auf Seite 1von 50

DISEÑO DE UN COMPUTADOR SIMPLE

DISEÑO DE UN COMPUTADOR SIMPLE


Contenido:

D El modo de operación de los computadores: programa almace-


nado y ejecución automática; memorias de datos y de progra-
mas; 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. Tec-
nologí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 R W
MAR

AB
M
DB
T WT
DB
T WT
Δ A
RA a b
WA s
a b a±b r
s
a±b r [AC]
[AC] Δ RB
B
WB
RAC RAC
AC WAC AC WAC
Δ ZAC Δ ZAC

Dpto. Tecnología Electrónica EC 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: COP Dirección

Codificada con n bits 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


* Arquitectura de Harvard: Mprog
Memorias distintas para Datos y para Programa:

Mdatos
CPU
- - Inconveniente: Dobles buses
++ Ventaja: Independiza dimensión de
datos e instrucciones

* Arquitectura de Von Neumann:


La Memoria es la misma para Datos y para Programa: M
CPU
· 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 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 naddress
n = ncop + naddress E R W
MAR
IR COPDirección
AB
ncop
M
T WT
2naddress x n
DB
Unidad
de a b
s
Control a±b r
[AC]
RAC
AC WAC
Δ ZAC Dimensión “n”

Dpto. Tecnología Electrónica EC 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
naddress
memoria de programa

naddress naddress
** PC tiene “naddress” bits y n = ncop + naddress E R W
MAR
debe estar conectado a MAR IR COPDirección
AB
ncop
M
T WT
2naddress x n
DB
Unidad
de a b
s
Control a±b r
[AC]
RAC
AC WAC
Δ ZAC

Dpto. Tecnología Electrónica EC Modo Computador - 7


DISEÑO DE UN COMPUTADOR SIMPLE

Ejecución automática del Programa

* Ciclo de Búsqueda (Fetch cycle): Se busca en la memoria


Fetch 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


Execute 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


Comienza la
S0 ejecución del
0 programa
XS 1

PC ← PCinicial

Ejecución automática
Parte ASM de Fetch

STOP
COP
Final del
programa No STOP

Parte ASM de Execute

Dpto. Tecnología Electrónica EC 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:

1. El programa se almacena en las primeras posiciones de M: M

la primera instrucción es la que esté en M($0) $0 Instrucción 1ª

Ejecución
$1 Instrucción 2ª
2. La ejecución será LINEAL:
$2 Instrucción 3ª
tras ejecutar una instrucción (p.ej. “K”) se
ejecutará la de la siguiente posición (“K + 1”) $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 [6]

Dpto. Tecnología Electrónica EC Diseño de CS1 - 3


DISEÑO DEL CS1 A NIVEL RT

Unidad de datos del CS1


IPC PC[6] E M
CLPC R
W RAM
[6]
26 x 8
[6] AB
TPC MAR[6] A5-A0
TIR

[6]
IR[8]
D7-D0
TB CO CD DB[8]
WT T[8]

[2]
[8]
E
R A
W ALU
UNIDAD S
IPC
XS DE CLPC [8] [8]
TPC ZAC
CONTROL . ..
RAC AC[8]
WAC WAC

Dpto. Tecnología Electrónica EC Diseño de CS1 - 4


DISEÑO DEL CS1 A NIVEL RT

Desarrollo en Micro-operaciones
* Ciclo de Búsqueda (Fetch)

S μOp 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)

STOP
S ADD (01) SUB (10) STA (11)
(00)
3 NOP MAR I IR
go to S0 (TIR)
4 T I RAM RAM I AC, goto S1
( E, R, WT) ( E, W, RAC)
5 AC I AC + T, goto S1 AC I AC - T, goto S1
(A, WAC) (S, WAC)

Dpto. Tecnología Electrónica EC Diseño de CS1 - 5


DISEÑO DEL CS1 A NIVEL RT

Carta ASM de Datos


S0 S4
0 1
xs 11(STA)
IR7,6 ≠11
PC I PCinic
M I AC TIM
S1
MAR I PC
FETCH
S2 S5
IR I RAM
PC I PC + 1 01(ADD) ≠01(SUB)
IR7,6
S3
AC I AC + T AC I AC - T

IR7,6 00 (STOP)
EXECUTE
≠ 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 E S4
0 1
xs 11(STA)
IR7,6 ≠11
CLPC
W, RAC R, WT
S1
TPC
FETCH
S2 WAC S5
E, R,TB, IPC
01(ADD) ≠01(SUB)
IR7,6
S3
A S

IR7,6 00 (STOP)
EXECUTE
≠ 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
E

CLPC TPC >1


IPC R
TB TIR
WAC
xs WT
>1 0 S
& 0
1 2 3 5
4 1
1 A

W
IR7 DEC STOP
0 ADD RAC
2:4 1
1
IR6 0 2 STA
3

Dpto. Tecnología Electrónica 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 P
01 1010 0000 SUB $20 R
O
02 0111 1110 ADD $3E
G
03 0111 1101 ADD $3D R
04 1011 1100 SUB $3C A
05 1111 1111 STA $3F M
A
06 00xx xxxx STOP

20 dddd dddd Dato irrelevante

D
3C 1011 1100 188(10 = $BC A
3D 0110 1001 105(10 = $69 T
3E 0111 1110 126(10 = $7E
O
S
3F 0010 1011 126(10 + 105(10 - 188(10 = 43(10 = $2 B

Dpto. Tecnología Electrónica EC 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 instruc-


ciones; 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 K: Salto a SUBR
K+1: sigue
P:
SUBR
Ejecución Q:
L: Salto a SUBR
L+1: sigue L: Salto a SUBR
L+1: sigue

P:
SUBR
Q:

• 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 COP - - - - - - - -

Mem
•• INMEDIATO COP Dato
aaaa Dato
•• DIRECTO COP aaaa

Mem
aaaa bbbb
•• INDIRECTO COP aaaa

bbbb Dato

Dpto. Tecnología Electrónica 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 DBZ Μ ← Μ − 1;
Branch if Zero Ζ: 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 JSR push (PC)
SubRoutine PC ← AA
ROtate Left ROL C, AC ← SHL(AC, C) Return of RTS PC ← (pull)
Subroutine

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
MAR [8] RAM
28x12

IS, DS, IPC, WPC


CLSP SP [8] PC [8]
RPC, CLPC
W4, W8, R8 IR [12] 11-0
DB7-0
IR11-8 DB7-0 DB [12]
DB11-8
DECODIFICACIÓN Y CONTROL

“0” ∇ DB [12]
11-8
XS CIM
RT [12] WT,RT,DT

A
S ALU
[12] [AC]
COUT
Csalida 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] 28x12

IS, DS IPC, WPC


CLSP SP [8] PC [8]
RPC, CLPC
W4, W8, R8 IR [12] 11-0
DB7-0
IR11-8 DB7-0 DB [12]
DB11-8
DECODIFICACIÓN Y CONTROL

“0” ∇ DB [12]
11-8
XS CIM
RT [12] WT,RT,DT

A
S ALU
[12] [AC]
COUT
Csalida 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]
A7-0 D11-0
TSP, TIR, TPC
Registros Subrutina MAR [8] RAM
28x12

IS, DS IPC, WPC


CLSP SP [8] PC [8]
RPC, CLPC
W4, W8, R8 IR [12] 11-0
DB7-0
IR11-8 DB7-0 DB [12]
DB11-8
DECODIFICACIÓN Y CONTROL

“0” ∇ DB [12]
11-8
XS CIM
LAIM
RT [12] WT,RT,DT

A
S ALU
[12] [AC]
Carry COUT
Csalida 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
MAR [8] RAM
28x12

Flujo de datos IS, DS IPC, WPC


CLSP SP [8] PC [8]
RPC, CLPC
Entrada/Salida de IR y PC
W4, W8, R8 IR [12] 11-0
DB7-0
IR11-8 DB7-0 DB [12]
DB11-8
DECODIFICACIÓN Y CONTROL

“0” ∇ DB [12]
11-8
XS CIM
RT [12] WT,RT,DT
Conexión
Z hacia DB

A
Entradas de Control S ALU
[AC]
[12]
de estado
COUT
Csalida 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

0 F
COP
1
2
D (STOP)
ASM ASM ASM ••• ASM
LAIM LDA STA RTS

Dpto. Tecnología Electrónica EC Computador Simple 2 Diseño - 10


CS2: DISEÑO

Unidad de Control

0
Xs
1

Inicialización
Inicialización 0 LAIM

1 LDA

Carta ASM Xs 2
FETCH STA
FETCH

D No Conectar
IR11:IR8 0 F
COP F
1 RTS
2
D (STOP)
ASM ASM ASM ••• ASM
LAIM LDA STA RTS IR11:IR8

Dpto. Tecnología Electrónica 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. Tec-
nologí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: DBZ $43 1010 01000011
 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 “ ; “ ; esto es un comentario
* variables para direcciones: EQU nombre $HH EQU ALTA $AA
* etiquetas: nombre: instrucción ciclo1: ADDI ALTA
... ... ... ... ... ... ... ...
otrainstrucción nombre JMP ciclo1

Dpto. Tecnología Electrónica EC Computador Simple 2 Ensamblador- 2


ENSAMBLADOR DEL CS2

Programa ensamblador

Ensamblador: programa
que interpreta el progra-
ma 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)


comienzo Especificaciones:
$HH [M($HH)]
sin mensaje de desbordamiento 00 instrucción 1
inicialización
n = nº sumandos = 8 01 instrucción 2
...
acumula nuevo
43 Resultado final (sin acarreo)
sumando
...
ALTA (iniciar a $EF) AA dirección más alta de sumando
sí no
acarreo CONT (iniciar a 8) AB cuenta nº sumandos sin sumar aún
...
busca nuevo
sumando

DATO n
sí no
último DATOS (magnitudes)

EF DATO 1
fin ...

Dpto. Tecnología Electrónica 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
Programa código máquina
EQU CONT $AB ; CONT cuenta sumas que faltan
EQU ALTA $AA; ALTA señala al sumador siguiente $HH mnem [M]
; 00 LAIM 8 0000 0000 1000
; Inicialización
01 STA $AB 0010 1010 1011
LAIM 8 ;n=8
STA CONT ; CONT es $AB 02 LAIM $EF 0000 1110 1111
LAIM $EF 03 STA $AA 0010 1010 1010
ALTA es $AA
STA ALTA ; inicializa ALTA = $EF 04 LAIM 0 0000 0000 0000
LAIM 0 ; AC = 0
05 ADDI $AA 0101 1010 1010
; Programa principal ciclo1 está en $05
ciclo1: ADDI ALTA ; acumula suma 06 BCS $0B 1001 0000 1011
BCS fin ; sale si hay acarreo 2ª vez: fin está en $0B
07 DBZ $AA 1010 1010 1010
DBZ ALTA ; siguiente sumando
08 DBZ $AB 1010 1010 1011
DBZ CONT ; salta (N+2) si último
JMP ciclo1 09 JMP $05 1000 0000 0101
STA $43 ; almacena resultado 0A STA $43 0010 0100 0011
fin: STOP fin está en $0B
0B STOP 1101 (00 ... 00)

Dpto. Tecnología Electrónica EC 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 LAIM 96


Se aprovecha que: STA WORD
LAIM 0
-N=0-N SUB WORD ;AC=0-96= $FA0
STA WORD ; WORD = $FA0

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


* Sea [AC]inicial = N
STA prov ; prov = N
Sí No
AC = 0 LAIM 1
* Para usar DBZ con el fin ADD prov
de saber si N=0, hay que STA prov ; prov = N + 1
Tarea 1 Tarea 2 poner N+1 en una posi- DBZ prov
ción de memoria JMP tarea2
JMP tarea1
. .. 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
→ Resultado magnitud si C = Bwout = 0
→ Bit de signo en AC11
→ Resultado en Ca2 si C = Bwout = 1
→ El bit de carry, C, se modifica según
→ El bit C se modifica según los datos,
los datos
pero no tiene sentido de carry .
→ No hay bit de overflow, V

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

EQU A $AD
A>B↔A-B>0 EQU B $AE
LDA A
Sí No
A>B * Hacer A -B → Bwout = C: SUB B ; C = Bwout
BCS tarea2
** C = 1 ↔ A < B ... ; 1ª instr. de Tarea 1
Tarea 1 Tarea 2 ... ; 2ª instr. de Tarea 1
** C = 0 ↔ A > B
... 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
LDA A
Bit de signo AC11
SUB B ; AC11 = Bwout
ROL
* Hacer A -B → : BCS tarea2
** AC11 = 1 ↔ A < B ... ; 1ª instr. de Tarea 1
... sigue ...
** AC11 = 0 ↔ A > B 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 ; Ciclo de movimiento de datos
EQU cont $81 ciclo: LAIM 0
EQU stind $F0 ; RTS estará en $F1 ADDI fuente ; AC = Dato_fuente
; Escribimos código máquina STA nn = $29F DBZ fuente ; nueva dirección fuente (- 1)
LAIM $80 JSR stind ; mueve dato a destino
ROL DBZ stind ; nueva dirección destino (- 1)
ROL DBZ cont
STA stind ; M(stind) = $200 : STA $00 JMP ciclo
LAIM $9F STOP
ADD stind
STA stind ; M(stind) = $29F : STA $9F Memoria: $00
; Escribimos código máquina para RTS: $F00 $01 Programa
LAIM $F0 ......
ROL
ROL $80 fuente
ROL $81 cont
ROL
STA $F1 ; M($F1) = $F00 : RTS
; Iniciamos cont a 20 = $14 y fuente a $EF $9E Destino
$9F de datos
LAIM $14
STA cont ; cont = número de datos $EE Datos
LAIM $EF $EF fuentes
STA fuente ; fuente = $EF $F0 $2nn : STA destino
$F1 $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. Tec-
nologí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 Visión Computador

Central Processing Unit


Comandos AB: Address Bus
Mem
Unidad de Control

DB: Data Bus


CPU MEM
CB: Control Bus
Cualificadores
Unidad de Datos

* 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

Das könnte Ihnen auch gefallen