0% encontró este documento útil (0 votos)
132 vistas76 páginas

El Computador Simple

R6←3R4-2R1 Programa R1 R4 R6 $19 $22 $43 MOV R6,R4 $19 $22 $22 SUB R6,R1 $19 $22 $3 ADD R6,R6 $19 $22 $6 ADD R6,R4 $19 $22 $28 STOP
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
132 vistas76 páginas

El Computador Simple

R6←3R4-2R1 Programa R1 R4 R6 $19 $22 $43 MOV R6,R4 $19 $22 $22 SUB R6,R1 $19 $22 $3 ADD R6,R6 $19 $22 $6 ADD R6,R4 $19 $22 $28 STOP
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Estructura de Computadores

(EdC-IC)

Tema 3
El computador simple
-------------------------------------------------------------------------

Autores originales: David Guerrero. Isabel Gómez

Personalización para ISW e IC: Francisco Pérez

Usted es libre de copiar, distribuir y comunicar públicamente la obra y de hacer obras derivadas siempre que se cite la fuente y se respeten las condiciones
de la licencia Attribution-Share alike de Creative Commons.

Texto completo de la licencia: [Link]

--------------------------------------------------------------------------
Índice

1. Limitaciones de la calculadora simple


2. El Computador Simple 1 (CS1)
3. El Computador Simple 2 (CS2)
4. El Computador Simple CS2010
La calculadora simple de 8 registros
(Arquitectura de la Unidad de Datos) calculadora

(Permite sumar, restar o transferir información entre dos registros)


La calculadora simple de 8 registros

• Partimos de la calculadora planteada en el tema anterior


que es un sistema en un único paso.
• La calculadora ejecuta cualquier posibilidad de suma o
resta entre sus registros así como el movimiento de
datos entre los mismos.
• Las operaciones se ejecutan en un único ciclo de reloj.
• En total, 3 ciclos: calculadora
• S0: microop. de espera Xs
• S1: microop. de ejecución
• S2: microop. de FIN
Limitaciones de la calculadora simple

• No hay AUTOMATIZACIÓN EN LA EJECUCIÓN de instrucciones

• No hay PROGRAMA ALMACENADO (cada vez que se ejecuta una


instrucción el usuario debe suministrar la siguiente).

• Por tanto, si queremos realizar una operación algo más compleja,


debemos indicar, una a una, la secuencia de macroinstrucciones:

Por ejemplo, una posible secuencia de macroinstrucciones


que debería dar el usuario (a nivel ISP) para
R0  3R1-R2, sería:

R0  R1
R0  R0+R1
R0  R0+R1
R0  R0–R2
Índice

1. Limitaciones de la calculadora simple


2. El Computador Simple 1 (CS1)
(concepto de Programa almacenado en memoria)

3. El Computador Simple 2 (CS2)

4. El Computador Simple CS2010


Automatización en la ejecución
(requerimientos)

• Una memoria donde almacenar el programa (código)

• Una nueva unidad de control que “sepa” buscar


instrucciones y ejecutarlas

• Un registro que apunte a la instrucción que ha de ejecutarse


PC: Program Counter

• Un registro donde se almacene la instrucción que se está


ejecutando en ese momento
IR: Instruction Register
Arquitectura del computador CS1

D2-0
F2-0

• Se ha simplificado el dibujo del banco de registros (no se dibujan los MUX)


D2-0: Selecciona registro de entrada en IA (de la ALU)
F2-0 : Selecciona registro de entrada en IB (de la ALU)
• El programa (secuencia de instrucciones) se almacena en la memoria (256x8)
• El PC apunta a la próxima instrucción a ejecutar
• El IR almacena la instrucción (8 bits) que se está ejecutando
Aclaraciones sobre CS1
• Todas las instrucciones son de una palabra (1 byte).
• El programa a ejecutar debe almacenarse a partir de
la dirección 0 de la memoria
• La ejecución del programa es lineal (sin bucles ni
saltos).
• Instrucción en código máquina. Es el patrón de bits
correspondiente a una instrucción.
• Formato de instrucción: indica cómo debe ser
interpretada una instrucción en código máquina
(código de operación y operandos).
Instrucciones del computador CS1
- Formato de todas las instrucciones del CS1
7 6 5 4 3 2 1 0

código de
registro destino registro fuente
operación

En CS1 los datos (operandos de las instrucciones) siempre están


almacenados en el banco de registros.

- Conjunto de instrucciones: sólo 4 instrucciones (IR7 IR6)


IR7 IR6 SINTAXIS FUNCIÓN
En la sintaxis se han utilizado
0 0 ADD Rd,Rf Rd←Rd+Rf mnemónicos que facilitan la tarea
1 0 SUB Rd,Rf Rd←Rd-Rf del programador.
0 1 MOV Rd,Rf Rd←Rf
1 1 STOP NOP
Descripción RT de los nuevos
componentes del CS1
CL I PC← OUT:= 8
CL
PC OUT I 00 PC PC W IR← OUT:=
IN
8 01 PC+1 PC IR W 0 IR IR
OUT
10 0 PC 1 IN IR
8
11 0 PC

8 8
AB OP1 OP0 RESULT 
IA IB
MEMORIA 00 IA+IB
DE CÓDIGO OP1-0 2
(MEMCOD) 01 IA
RESULT 10 IA-IB
28x8
DB 8 11 IB
8

DB=MEMCOD[AB]
Diseño de la Unidad de Control del
Computador Simple CS1
Controla la ejecución automática del programa almacenado en la memoria

PARADA

STOP
START

BÚSQUEDA EJECUCIÓN
(FETCH) (EXECUTE)
Carta ASM del CS1
STOP
S0

0
START
FETCH: S1
1
EXECUTE: S2
CL PC PC ← 0

W IR IR←MEMCOD(PC) S1
I PC PC ←PC+1

S2
OP1 OP0 RESULT 
00 IA+IB 11 IR7 IR6 01

01 IA
00 10
10 IA-IB
11 IB
RdRd+Rf Rd←Rd-Rf Rd←Rf

IR7 IR6 SINTAXIS FUNCIÓN W REG OP1 OP1 OP0


W REG W REG
0 0 ADD Rd,Rf Rd←Rd+Rf
1 0 SUB Rd,Rf Rd←Rd-Rf
0 1 MOV Rd,Rf Rd←Rf
1 1 STOP NOP
Arquitectura del computador CS1
CS1

I5-3=D2-0
I2-0=F2-0

7 6 5 4 3 2 1 0

código de
registro destino registro fuente
operación
Ejemplo de programación del CS1
Ejemplo:
Escribir un programa que realice la siguiente operación:
R6←3R4-2R1

Programa con mnemónicos $Posición contenido

MOV R6,R4 $00 01 110 100


SUB R6,R1 $01 10 110 001
ADD R6,R6 $02 00 110 110
ADD R6,R4 $03 00 110 100
STOP $04 11 ------
Programa en memoria (Código máquina)

IR7 IR6 SINTAXIS FUNCIÓN


7 6 5 4 3 2 1 0
0 0 ADD Rd,Rf Rd←Rd+Rf
1 0 SUB Rd,Rf Rd←Rd-Rf código de
registro destino registro fuente
operación
0 1 MOV Rd,Rf Rd←Rf
1 1 STOP NOP
Ejemplos de programación del CS1
Ejemplo 2:
Si inicialmente los contenidos de los registros son:
R1=$19, R4= $22 y R6=$43, indique sus contenidos tras cara instrucción

R6←3R4-2R1

Programa R1 R4 R6
$19 $22 $43
MOV R6,R4
SUB R6,R1
ADD R6,R6
ADD R6,R4
STOP
Ejemplos de programación del CS1
Ejemplo 2:
Si inicialmente los contenidos de los registros son:
R1=$19, R4= $22 y R6=$43, indique sus contenidos tras cara instrucción

R6←3R4-2R1

Programa R1 R4 R6
$19 $22 $43
MOV R6,R4 $19 $22 $22
SUB R6,R1
ADD R6,R6
ADD R6,R4
STOP
Ejemplos de programación del CS1
Ejemplo 2:
Si inicialmente los contenidos de los registros son:
R1=$19, R4= $22 y R6=$43, indique sus contenidos tras cara instrucción

R6←3R4-2R1

Programa R1 R4 R6
$19 $22 $43
MOV R6,R4 $19 $22 $22
SUB R6,R1 $19 $22 $09
ADD R6,R6
ADD R6,R4
STOP
Ejemplos de programación del CS1
Ejemplo 2:
Si inicialmente los contenidos de los registros son:
R1=$19, R4= $22 y R6=$43, indique sus contenidos tras cara instrucción

R6←3R4-2R1

Programa R1 R4 R6
$19 $22 $43
MOV R6,R4 $19 $22 $22
SUB R6,R1 $19 $22 $09
ADD R6,R6 $19 $22 $12
ADD R6,R4
STOP
Ejemplos de programación del CS1
Ejemplo 2:
Si inicialmente los contenidos de los registros son:
R1=$19, R4= $22 y R6=$43, indique sus contenidos tras cara instrucción

R6←3R4-2R1

Programa R1 R4 R6
$19 $22 $43
MOV R6,R4 $19 $22 $22
SUB R6,R1 $19 $22 $09
ADD R6,R6 $19 $22 $12
ADD R6,R4 $19 $22 $34
STOP
Ejemplos de programación del CS1
Ejemplo 2:
Si inicialmente los contenidos de los registros son:
R1=$19, R4= $22 y R6=$43, indique sus contenidos tras cara instrucción

R6←3R4-2R1

Programa R1 R4 R6
$19 $22 $43
MOV R6,R4 $19 $22 $22
SUB R6,R1 $19 $22 $09
ADD R6,R6 $19 $22 $12
ADD R6,R4 $19 $22 $34
STOP $19 $22 $34
Ejemplos de programación del CS1
Ejemplo 3:
Si inicialmente los contenidos de los registros son:
R1=$22, R4= $19 y R6=$43, indique sus contenidos tras cara instrucción

R6←3R4-2R1

Programa R1 R4 R6
$22 $19 $43
MOV R6,R4
SUB R6,R1
ADD R6,R6
ADD R6,R4
STOP
Índice
1. Limitaciones de la calculadora simple
2. El Computador Simple 1 (CS1)
(concepto de Programa almacenado en memoria)

3. El Computador Simple 2 (CS2)


(memoria de datos y memoria de programa)

4. El Computador Simple CS2010

23
Limitaciones y evolución del CS1
• El CS1 sólo opera con datos almacenados en el banco
de registros.
• Es necesario aumentar la capacidad de almacenamiento
• Se propone una nueva arquitectura (CS2: Computador
Simple 2), con los datos almacenados en una RAM
• Existen dos opciones para dotar al sistema de
almacenamiento de datos:
– Utilizar un único sistema de memoria para datos e
instrucciones (Arquitectura von Neumann).
– Utilizar sistemas de memoria distintos para datos e
instrucciones (Arquitectura Harvard).
Arquitectura
von Neumann vs Harvard
• En la arquitectura Harvard, las características de las memorias y
los buses de interconexión de las mismas pueden diferir.
Normalmente los datos requieren memoria de lectura y escritura
• En la arquitectura de von Neuman el sistema de memoria es único
y, por lo tanto, tanto memoria como buses son únicos.
• El disponer de dos sistemas de memoria separados dota de
eficiencia al sistema ya que normalmente es el acceso a memoria lo
que enlentece su funcionamiento y en este caso se puede estar
accediendo a instrucciones y datos simultáneamente.
• Las CPU modernas incorporan aspectos de ambas arquitecturas. La
memoria cache interna a la CPU se separa en dos (datos e
instrucciones), pero la memoria principal es única. Desde el punto de
vista del programador se trata de una arquitectura de Von Neumann,
pero desde el punto de vista del hardware es Harvard.
Arquitectura del CS2

• El CS2 dispondrá de una arquitectura Harvard.

• El conjunto de instrucciones debe ser ampliado ya


que se requiere manejar los datos almacenados en
la memoria.
Conjunto de Instrucciones (ISP) del CS2

CO SINTAXIS FUNCIÓN
000 ST (Rb),Rf MEMDAT(Rb)←Rf
001 LD Rd, (Rb) Rd←MEMDAT(Rb)
010 STS dir, Rf MEMDAT(dir)←Rf
011 LDS Rd,dir Rd←MEMDAT(dir)
100 ADD Rd,Rf Rd←Rd+Rf
110 SUB Rd,Rf Rd←Rd-Rf
101 MOV Rd,Rf Rd←Rf
111 STOP NOP

- Las4 primeras instrucciones son para intercambio de datos con la


memoria: (ST, LD, STS, LDS)

- Ha sido necesario aumentar el número de bits del código de operación.


- Nuevas formas de acceso a los operandos (modos de
direccionamiento)
Modos de direccionamiento del CS2
• Directo de registro Rx: el dato (“operando”) se encuentra en un registro.
ADD Rd,Rf
SUB Rd,Rf
MOV Rd, Rf
• Indirecto de registro (Rb): la dirección memoria del dato se encuentra en
un registro (“registro base”)
ST (Rb),Rf ;STore
LD Rd,(Rb) ;LoaD
• Directo de memoria (o absoluto) dir: la dirección de memoria del dato se
suministra en la propia instrucción:
STS dir,Rf ;STore Straight
LDS Rd,dir ;LoaD Straight

En CS2 no existe direccionamiento inmediato (el dato no


puede ser suministrado en la propia instrucción)
Conjunto de Instrucciones (ISP) del CS2
MOV Rd,Rf
ISP CS2 Registro Rd Registro Rf
MOVe
LD Rd,(Rb)
LDS Rd,dir ST (Rb),Rf
STS dir,Rf
LoaD
Memoria STore
CO SINTAXIS FUNCIÓN Direccionamiento
000 ST (Rb),Rf MEMDAT(Rb)←Rf Indirecto de Registro
001 LD Rd, (Rb) Rd←MEMDAT(Rb) Indirecto de Registro
010 STS dir, Rf MEMDAT(dir)←Rf Directo de memoria
011 LDS Rd,dir Rd←MEMDAT(dir) Directo de memoria
100 ADD Rd,Rf Rd←Rd+Rf Directo de Registro
110 SUB Rd,Rf Rd←Rd-Rf Directo de Registro
101 MOV Rd,Rf Rd←Rf Directo de Registro
111 STOP NOP -----------
Formato de instrucciones del CS2
selecciona selecciona
INPUT A INPUT B

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0

A registro fuente
instrucción con - - - - - (registro base en
operando ST/LD)
registro código de registro destino
operación (fuente en ST)
B
instrucción con dirección del dato
operando
memoria

• Las instrucciones son de 14 bits y siguen ocupando una


palabra de memoria.
• En el CS2 el ancho de la memoria de código será de 14 bits.
• El registro IR debe ser también de 14 bits
Formato de instrucciones del CS2
formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0

A registro fuente
instrucción con - - - - - (registro base
operando en ST/LD)
registro código de registro destino
operación (fuente en ST)
B
instrucción con dirección del dato
operando
memoria
Arquitectura del CS2
Arquitectura del computador CS1
CS1
Arquitectura del CS2
Nuevo
Arquitectura del CS2
Modificaciones en la arquitectura del CS2 (todo lo
que se ha añadido es para dotar al sistema de
almacenamiento de datos en memoria).
• Sistema de memoria de datos.
• Registro de datos de la memoria (MDR).
• Registro de direcciones de la memoria (MAR).
• Acumulador (AC). Se ha añadido este registro a la salida
de la ALU porque esta debe compartir el bus.
• Multiplexor a la entrada de la ALU porque esta debe
transferir datos tanto de los registros como de los 8 bits
menos significativos del registro IR a MAR en el caso de
direccionamiento absoluto.
Descripción RT de los nuevos
componentes del CS2

WR MEMDAT[A7-0]← D7-0:=
W R
SISTEMA DE MEMORIA DE DATOS 00 MEMDAT[A7-0] H.I.
(MEMDAT) 01 MEMDAT[A7-0] MEMDAT[A7-0]
D7-0 A7-0 10 D7-0 DATA
11 PROHIBIDO ----
8 8

8
8 W I/O* MDR← IB:= EB:=
W MAR ← OUT:=
IN I/O* EB 00 MDR H.I. MDR
W MAR 0 MAR MAR MDR 01 MDR MDR H.I.
OUT 1 IN MAR W IB 10 IB IB H.I.
8 11 EB H.I. EB
8

8 WR AC ← OUT:=
R IN
AC 00 AC H.I.
W OUT 01 AC AC
8
10 IN H.I.
11 IN AC
Ejemplo de ejecución de instrucciones: ST(Rb),Rf
( MEMDAT(Rb)  Rf )

: Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Los valores almacenados


A en IR debe
instrucción con código de operación registro fuente en ST - - - - - registro base en ST corresponder a los
operando registro
registros base y destino
Ejemplo de ejecución de instrucciones: ST(Rb),Rf
1. AC←REG[IR2-0] OP1OP0WAC ( MEMDAT(Rb)  Rf )

: Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Los valores almacenados


A en IR debe
instrucción con código de operación registro fuente en ST - - - - - registro base en ST corresponder a los
operando registro
registros base y destino
Ejemplo de ejecución de instrucciones: ST(Rb),Rf
1. AC←REG[IR2-0] OP1OP0WAC ( MEMDAT(Rb)  Rf )
2. MAR←AC; AC←REG[IR10-8] RAC WMAR OP0 WAC

: Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Los valores almacenados


A en IR debe
instrucción con código de operación registro fuente en ST - - - - - registro base en ST corresponder a los
operando registro
registros base y destino
Ejemplo de ejecución de instrucciones: ST(Rb),Rf
1. AC←REG[IR2-0] OP1OP0WAC ( MEMDAT(Rb)  Rf )
2. MAR←AC; AC←REG[IR10-8] RAC WMAR OP0 WAC
3. MDR←AC RAC WMDR
: Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Los valores almacenados


A en IR debe
instrucción con código de operación registro fuente en ST - - - - - registro base en ST corresponder a los
operando registro
registros base y destino
Ejemplo de ejecución de instrucciones: ST(Rb),Rf
1. AC←REG[IR2-0] OP1OP0WAC ( MEMDAT(Rb)  Rf )
2. MAR←AC; AC←REG[IR10-8] RAC WMAR OP0 WAC
3. MDR←AC RAC WMDR
4. MEM[MAR]←MDR WMEM : Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Los valores almacenados


A en IR debe
instrucción con código de operación registro fuente en ST - - - - - registro base en ST corresponder a los
operando registro
registros base y destino
Descripción de las nuevas instrucciones del CS2
CO (IR13 IR12 IR11)
000 001 010 011

Instrucción ST (Rb),Rf LD Rd,(Rb) STS dir,Rf LDS Rd,dir


Micro 1 AC←Rb AC←Rb AC←dir AC←dir
OP1OP0WAC OP1OP0 WAC OP1OP0WACINM OP1OP0WACINM
Micro 2 MAR←AC MAR←AC MAR←AC MAR←AC
RAC WMAR RAC WMAR RAC WMAR RAC WMAR
AC←Rf AC←Rf
OP0 WAC OP0 WAC
Micro 3 MDR←AC MDR←MEM(MAR) MDR←AC MDR←MEM(MAR)
RAC WMDR RMEM WMDR I/O*MDR RAC WMDR RMEM WMDR I/OMDR

Micro 4 MEM(MAR)←MDR RD←MDR MEM(MAR)←MDR RD←MDR


WMEM WREG I/OMDR WMEM WREG I/OMDR

Las otras 4 instrucciones tienen una microoperación más que en el CS1


debido al AC (ver carta ASM del apéndice)
Ejemplo de ejecución de instrucciones: LDS Rd,dir
(Rd  MEMDAT(dir))

: Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0
A
instrucción con código de operación registro destino Dirección del dato
operando registro
Ejemplo de ejecución de instrucciones: LDS Rd,dir
1. AC←REG[IR7-0] OP1OP0WAC INM (Rd  MEMDAT(dir))

: Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 En IR debe aprecer la


A dirección del dato y
instrucción con código de operación registro destino Dirección del dato el registro destino
operando registro
Ejemplo de ejecución de instrucciones: LDS Rd,dir
1. AC←REG[IR7-0] OP1OP0WAC INM (Rd  MEMDAT(dir))
2. MAR←AC RAC WMAR

: Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 En IR debe aprecer la


A dirección del dato y
instrucción con código de operación registro destino Dirección del dato el registro destino
operando registro
Ejemplo de ejecución de instrucciones: LDS Rd,dir
1. AC←REG[IR7-0] OP1OP0WAC INM (Rd  MEMDAT(dir))
2. MAR←AC RAC WMAR
3. MDR ← MEM (MAR) RMEM WMDR I/OMDR
: Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 En IR debe aprecer la


A dirección del dato y
instrucción con código de operación registro destino Dirección del dato el registro destino
operando registro
Ejemplo de ejecución de instrucciones: LDS Rd,dir
1. AC←REG[IR7-0] OP1OP0WAC INM (Rd  MEMDAT(dir))
2. MAR←AC RAC WMAR
3. MDR ← MEM (MAR) RMEM WMDR I/OMDR
4. Rd ← MDR WREG I/OMDR : Registro visible
: Registro oculto
COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL
STOP I15-8
IR 1 3 -10
IR 13-11 83
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS S BUS A BUS B 8 WMEM RMEM
A IR1 0 - 8 IR W WIR
3
W Sw IN
A B CODE W R
ALU OP OP 14
2 SISTEMA DE MEMORIA DE DATOS
3 8 D13-0
RESULT (MEMDAT)
MEMORIA DE CÓDIGO A7-0
WREGIR1 0 - 8 D7-0
(MEMCOD)
8 A7-0
DATA 8 DATA_ADD 8
CODE_ADD
8 EB
I/O*MDR I/O*
CLPC MDR
CL WMAR W MAR
IPC I PC WMDR W IB
WAC W AC R RAC R

8 8 8
BUS COMPARTIDO

formato 13 12 11 10 9 8 7 6 5 4 3 2 1 0 En IR debe aprecer la


A dirección del dato y
instrucción con código de operación registro destino Dirección del dato el registro destino
operando registro
Carta ASM del CS2 (ciclo EXECUTE)
(viene del
Ciclo de FETCH)
Descripción de las nuevas instrucciones del CS2
CO (IR13 IR12 IR11)
000 001 010 011

Instrucción ST (Rb),Rf LD Rd,(Rb) STS dir,Rf LDS Rd,dir


Micro 1 AC←Rb AC←Rb AC←dir AC←dir
OP1OP0WAC OP1OP0 WAC OP1OP0WACINM OP1OP0WACINM
Micro 2 MAR←AC MAR←AC MAR←AC MAR←AC
RAC WMAR RAC WMAR RAC WMAR RAC WMAR
AC←Rf AC←Rf
OP0 WAC OP0 WAC
Micro 3 MDR←AC MDR←MEM(MAR) MDR←AC MDR←MEM(MAR)
RAC WMDR RMEM WMDR I/O*MDR RAC WMDR RMEM WMDR I/OMDR

Micro 4 MEM(MAR)←MDR RD←MDR MEM(MAR)←MDR RD←MDR


WMEM WREG I/OMDR WMEM WREG I/OMDR

Las otras 4 instrucciones tienen una microoperación más que en el CS1


debido al AC (ver carta ASM del apéndice)
Ejemplo de programación del Computador
Simple CS2
Realizar una subrutina que intercambie dos tablas de 4 datos que se
encuentran almacenadas en la memoria y cuyas direcciones base están
guardadas en los registros R0 y R1 respectivamente.
(El registro R2 tiene almacenado inicialmente el valor 1)

MEMORIA DE DATOS
Programa LD R3,(R0) Pos contenido
MEMORIA DE CÓDIGO
LD R3,(R0) LD R4,(R1)
$00 .....
LD R4,(R1) ST (R1),R3 $Posición contenido .....
ST (R1),R3 ST (R0),R4
$00 001 011-----000 R0 DATO1TABLA1
ST (R0),R4 ADD R0,R2
$01 001 100-----001 R0+1 DATO2TABLA1
ADD R0,R2 ADD R1,R2
$02 000 011-----001 R0+2 DATO3TABLA1
ADD R1,R2 LD R3,(R0)
$03 000 100-----000 R0+3 DATO4TABLA1
LD R3,(R0) LD R4,(R1)
$04 100 000-----010 … ...
LD R4,(R1) ST (R1),R3
$05 100 001-----010 R1 DATO1TABLA2
ST (R1),R3 ST (R0),R4
… ... R1+1 DATO2TABLA2
ST (R0),R4 ADD R0,R2
$18 11 --- --- R1+2 DATO3TABLA2
ADD R0,R2 ADD R1,R2
R1+3 DATO4TABLA2
ADD R1,R2 STOP
...
Índice
1. Limitaciones de la calculadora simple
2. El Computador Simple 1 (CS1)
(concepto de Programa almacenado en memoria)

3. El Computador Simple 2 (CS2)


(memoria de datos y memoria de programa)

4. El Computador Simple CS2010


(ampliación del conjunto de instrucciones)

51
Limitaciones del computador CS2
• El computador simple 2 presenta muchas limitaciones:
 Imposibilidad de realizar saltos en la ejecución del programa
 Ausencia de variables de estado que informen del resultado de
las operaciones,
 No permite direccionamiento inmediato
 etc
• Se propone una nueva arquitectura pensada para
solventar estas deficiencias: el CS2010.

• CS2010 es un computador “académico”, pero compatible


en juego de instrucciones con un microcontrolador real
(AVR)
Modelo de programador del CS2010
• 8 Registros de propósito general: R0, R1, R2, R3, R4, R5,
R6 y R7 (para suministrar datos a la ALU).
• 3 Registros de propósito específico:
– PC (Program counter):
Contiene la dirección de la próxima instrucción que se ejecutará. Se
inicializa a cero y se va incrementando a medida que se ejecutan las
instrucciones.

– SR (Status Register):
Dan información sobre el tipo de resultado de la última operación realizada
en la ALU: Z (cero), V (desbordamiento), N (negativo) y C (carry/borrow).

– SP (Stack Pointer): Puntero de pila (memoria LIFO).


SP apunta hacia la primera posición libre de la pila.
PUSH (escribir en la pila): MEM(SP)  REG; SP SP-1
POP ó PULL (leer de la pila): SPSP+1; REG  [MEM(SP)]

En CS2010 sólo las instrucciones de subrutinas (CALL, RET) usan SP


Formato de instrucciones del CS2010

• El juego de instrucciones (ISP) (mnemónicos del


ensamblador) del CS2010 es un subconjunto del de la
arquitectura AVR.
Los programas en ensamblador del CS2010 pueden
reensamblarse y ejecutarse en el AVR
No es compatible a nivel de código máquina
• Instrucciones de 16 bits, con códigos de operación de 5
bits (21 tipos de instrucción diferentes)

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

código de operación
Formato de instrucciones del CS2010

Formatos: Solo hay tres y comparten campos


formato 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

A registro fuente
instrucción - - - - - (registro base
con operando en ST/LD)
registro
registro destino
B (fuente en ST)
instrucción código de operación
con operando dato inmediato / dirección del dato
memoria o
inmediato

C condición de
instrucción dirección de salto
salto
de salto
Códigos de operación CS2010
Bits del código
de operación NEMÓNICO FORMATO TIPO SINTAXIS EFECTO1 VCNZ2
15 14 13 12 11
0 0 0 0 0 ST A memoria ST (Rbase),Rfuente MEM[Rbase]←Rfuente ----
0 0 0 0 1 LD A memoria LD Rdestino,(Rbase) Rfuente←MEM[Rbase] ----
0 0 0 1 0 STS B memoria STS dirección,Rfuente MEM[dirección]←Rfuente ----
0 0 0 1 1 LDS B memoria LDS Rdestino,dirección Rfuente←MEM[dirección] ----
0 0 1 0 0 CALL C salto CALL dirección MEM[SP]←PC,SP←SP-1, PC←dirección ----
0 0 1 0 1 RET - salto RET PC←MEM[SP+1],SP←SP+1 ----
0 0 1 1 0 BRxx C salto BRxx dirección xx:PC←dirección ----
0 0 1 1 1 JMP C salto JMP dirección PC←dirección ----
0 1 0 0 0 ADD A aritmético/lógica ADD Rdestino,Rfuente Rdestino←Rdestino+Rfuente ****
0 1 0 0 1 - - - - no documentado UUUU
0 1 0 1 0 SUB A aritmético/lógica SUB Rdestino,Rfuente Rdestino←Rdestino-Rfuente ****
0 1 0 1 1 CP A estado CP Rdestino,Rfuente NOP ****
0 1 1 0 0 - - - - no documentado UUUU
0 1 1 0 1 - - - - no documentado UUUU
0 1 1 1 0 - - - - no documentado UUUU
0 1 1 1 1 MOV A movimiento de datos MOV Rdestino,Rfuente Rdestino←Rdestino ----
1 0 0 0 0 - - - - no documentado UUUU
1 0 0 0 1 - - - - no documentado UUUU
1 0 0 1 0 CLC - estado CLC NOP ---*
1 0 0 1 1 SEC - estado SEC NOP ---*
1 0 1 0 0 ROR AoB desplazamiento ROR Rdestino Rdestino←SHR(Rdestino,C) ****
1 0 1 0 1 ROL AoB desplazamiento ROL Rdestino Rdestino←SHL(Rdestino,C) ****
1 0 1 1 0 - - - - no documentado UUUU
1 0 1 1 1 STOP - especial STOP lleva el procesador a espera ----
1 1 0 0 0 ADDI B aritmético/lógica ADDI Rdestino,dato Rdestino←Rdestino+dato ****
1 1 0 0 1 - - - - no documentado UUUU
1 1 0 1 0 SUBI B aritmético/lógica SUBI Rdestino,dato Rdestino←Rdestino-dato ****
1 1 0 1 1 CPI B estado CPI Rdestino,dato NOP ****
1 1 1 0 0 - - - - no documentado UUUU
1 1 1 0 1 - - - - no documentado UUUU
1 1 1 1 0 - - - - no documentado UUUU
1 1 1 1 1 LDI B movimiento de datos LDI Rdestino,dato Rdestino←dato ----

1
(sin tener en cuenta el registro de estado y el incremento del PC)
2
El caracter '-' denota “no modificado”, '*' denota “modificado de forma definida”, 'U' denota “no documentado”
Códigos de operación CS2010
Bits del código
de operación NEMÓNICO FORMATO TIPO SINTAXIS EFECTO1 VCNZ2
15 14 13 12 11
0 0 0 0 0 ST A memoria ST (Rbase),Rfuente MEM[Rbase]←Rfuente ----
0 0 0 0 1 LD A memoria LD Rdestino,(Rbase) Rfuente←MEM[Rbase] ----
0 0 0 1 0 STS B memoria STS dirección,Rfuente MEM[dirección]←Rfuente ----
0 0 0 1 1 LDS B memoria LDS Rdestino,dirección Rfuente←MEM[dirección] ----
0 0 1 0 0 CALL C salto CALL dirección MEM[SP]←PC,SP←SP-1, PC←dirección ----
0 0 1 0 1 RET - salto RET PC←MEM[SP+1],SP←SP+1 ----
0 0 1 1 0 BRxx C salto BRxx dirección xx:PC←dirección ----
0 0 1 1 1 JMP C salto JMP dirección PC←dirección ----
0 1 0 0 0 ADD A aritmético/lógica ADD Rdestino,Rfuente Rdestino←Rdestino+Rfuente ****
0 1 0 0 1 - - - - no documentado UUUU
0 1 0 1 0 SUB A aritmético/lógica SUB Rdestino,Rfuente Rdestino←Rdestino-Rfuente ****
0 1 0 1 1 CP A estado CP Rdestino,Rfuente NOP ****
0 1 1 0 0 - - - - no documentado UUUU
0 1 1 0 1 - - - - no documentado UUUU
0 1 1 1 0 - - - - no documentado UUUU
0 1 1 1 1 MOV A movimiento de datos MOV Rdestino,Rfuente Rdestino←Rdestino ----
1 0 0 0 0 - - - - no documentado UUUU
1 0 0 0 1 - - - - no documentado UUUU
1 0 0 1 0 CLC - estado CLC NOP ---*
1 0 0 1 1 SEC - estado SEC NOP ---*
1 0 1 0 0 ROR AoB desplazamiento ROR Rdestino Rdestino←SHR(Rdestino,C) ****
1 0 1 0 1 ROL AoB desplazamiento ROL Rdestino Rdestino←SHL(Rdestino,C) ****
1 0 1 1 0 - - - - no documentado UUUU
1 0 1 1 1 STOP - especial STOP lleva el procesador a espera ----
1 1 0 0 0 ADDI B aritmético/lógica ADDI Rdestino,dato Rdestino←Rdestino+dato ****
1 1 0 0 1 - - - - no documentado UUUU
1 1 0 1 0 SUBI B aritmético/lógica SUBI Rdestino,dato Rdestino←Rdestino-dato ****
1 1 0 1 1 CPI B estado CPI Rdestino,dato NOP ****
1 1 1 0 0 - - - - no documentado UUUU
1 1 1 0 1 - - - - no documentado UUUU
1 1 1 1 0 - - - - no documentado UUUU
1 1 1 1 1 LDI B movimiento de datos LDI Rdestino,dato Rdestino←dato ----

1
(sin tener en cuenta el registro de estado y el incremento del PC)
2
El caracter '-' denota “no modificado”, '*' denota “modificado de forma definida”, 'U' denota “no documentado”
Códigos de condición de la instrucción de
salto condicional BRXX (Branch if)

Los bits I10I9I8 codifican la condición de salto xx.

nmónico(s)
I10 I9 I8 CONDICIÓN de la condición notas
0 0 0 Z ZS, EQ será cierta justo tras realizar la resta A-B si y solo si A=B
será cierta justo tras realizar la resta A-B si y solo si A<B
0 0 1 C CS, LO asumiendo notación base 2 sin signo
será cierta si y solo si el dato recién calculado no es
0 1 0 V VS representable en notación base 2 sin signo
será cierta justo tras realizar la resta A-B si y solo si A<B
0 1 1 N xor V LT asumiendo notación complemento a 2
1 - - ? - estas condiciones no están definidas y no deben utilizarse

NOTAS:
• La condición Z con el mnemónico “ZS” no existe en AVR, por lo que BRZS no podrá ser
ensamblada en AVR
• La condición V con el mnemónico “VS” es para números CON signo
Arquitectura propuesta para el CS2010

V N Z C

COMANDOS A LA UNIDAD DE DATOS START


UNIDAD DE CONTROL
STOP I15-8
IR 1 5 -8
8
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS BUS A BUS B 8 W MEM RMEM
SA IR 1 0 - 8 IR W WIR
3
W S w IN
A B CODE W R
S IN ALU OP OP 16
4 4
3 8 S OUT RESULT D 15-0 SISTEMA DE MEMORIA DE DATOS
WS
WREGIR 1 0 - 8 MEMORIA DE CÓDIGO D7-0 A7-0
8 A7-0
W
SR DATA 8 DATA_ADD 8
CODE_ADD
8 EB
V N Z C I/O* MDR I/O*
C SP WPC MDR
ISP I SP C W W MAR W MAR
IPC I PC W W IB
WAC W AC R RAC D SP D R RSP R RPC MDR

8 8 8 8 8
BUS COMPARTIDO
CS2
Arquitectura del CS2
Arquitectura propuesta para el CS2010

Nuevo
V N Z C

COMANDOS A LA UNIDAD DE DATOS START


UNIDAD DE CONTROL
STOP I15-8
IR 1 5 -8
8
B 8 8
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS BUS A BUS B 8 W MEM RMEM
SA IR 1 0 - 8 IR W WIR
3
W S w IN
A B CODE W R
S IN ALU OP OP 16
4 4
3 8 S OUT RESULT D 15-0 SISTEMA DE MEMORIA DE DATOS
WS
WREGIR 1 0 - 8 MEMORIA DE CÓDIGO D7-0 A7-0
8 A7-0
W
SR DATA 8 DATA_ADD 8
CODE_ADD
8 EB
V N Z C I/O* MDR I/O*
C SP WPC MDR
ISP I SP C W W MAR W MAR
IPC I PC W W IB
WAC W AC R RAC D SP D R RSP R RPC MDR

8 8 8 8 8
BUS COMPARTIDO
Registros “ocultos al programador”
de la arquitectura del CS2010

• IR[16] (Instruction Register): sirve para almacenar la


instrucción que está siendo ejecutada.
• MDR[8] (Memory Data Register): Almacenar los datos
que se intercambian con la memoria de datos.
• MAR[8] (Memory Address Register): Sirve para
direccionar la memoria de datos
• AC[8]: Almacena el resultado de la opración realizada
por la ALU
Descripción RT de los nuevos registros
del Computador Simple CS2010 (i)
8 8

A B
4 SIN ALU OP
4
SOUT RESULT Cin XOR A7
8
V N Z C

OP3 OP2 OP1 OP0 RESULT= VOUT= NOUT= ZOUT= COUT=


0 0 - 0 - VIN NIN ZIN 0
0 0 1 1 - VIN NIN ZIN 1
7
0 1 0 0 SHR(A,CIN) cIN EXOR A0 RESULT7 NOT ORi = 0
(RESULTi) A0
0 1 0 1 SHL(A,CIN) A7 EXOR A6 RESULT7 NOT ORi7= 0(RESULTi) A7
0 1 1 - A - - - -
1 0 0 - (A + B) mod 2= overflow(A+B) RESULT7 NOT ORi7= 0(RESULTi) carry(A+B)
1 0 1 - (A - B) mod 2= underflow(A-B) RESULT7 NOT ORi7= 0(RESULTi) borrow(A-B)
1 1 - - B - - - -

Mod 28. Corregir “underflow y explicar “overflow”


Descripción RT de los nuevos registros
del Computador Simple CS2010 (ii)
8 8 OP3 OP2 OP1 OP 0 RESULT= VOUT= NOUT= ZOUT= COUT=
0 0 - 0 - VIN NIN ZIN 0
A B 0 0 1 1 - VIN NIN ZIN 1
4 SIN ALU OP 0 1 0 0 SHR(A,CIN) cIN EXOR A0 RESULT7 NOT ORi7= 0(RESULTi) A0
4
SOUT RESULT 0 1 0 1 SHL(A,CIN) A7 EXOR A6 RESULT7 NOT ORi7= 0(RESULTi) A7
0 1 1 - A - - - -
8 1 0 0 - (A + B) mod 2= overflow(A+B) RESULT7 NOT ORi7= 0(RESULTi) carry(A+B)
V N Z C 1 0 1 - (A - B) mod 2= underflow(A-B) RESULT7 NOT ORi7= 0(RESULTi) borrow(A-B)
1 1 - - B - - - -

IDCR SP ← OUT:=
I SP C 0000 SP HI
D OUT R 0001 SP SP
8
0010 0 HI
0100 SP-1 HI
1000 SP+1 HI
OTRAS PROHIBIDAS

• La descripción de SR es idéntica a la del MAR


Ejemplo de secuencia de microoperaciones de
la instrucción ST (Rj),Ri (Store in memory)

CICLO MEM(Rj) <- Ri


V N Z C 1 AC <- REG(IR2-0 ) WAC, OP3, OP2

2 MAR <- AC WMAR, RAC


COMANDOS A LA UNIDAD DE DATOS START
UNIDAD DE CONTROL AC <-REG (IR 10-8 ) WAC, OP2, OP1
STOP I15-8
IR 1 5 -8 3 MDR <- AC WMDR, RAC
8
B 8 8 4 MEM(MAR)<- MDR WMEM
SB IR2-0 IR7- 0
FICHERO 3
0 1S INM
DE 8
A
REGISTROS BUS A BUS B 8 W MEM RMEM
SA IR 1 0 - 8 IR W WIR
3
W S w IN
A B CODE W R
S IN ALU OP OP 16
4 4
3 8 S OUT RESULT D 15- SISTEMA DE MEMORIA DE DATOS
WS 0
WREGIR 1 0 - 8 MEMORIA DE CÓDIGO D7-0 A7-0
8 A7-
W
SR 0 DATA 8 DATA_ADD 8
CODE_ADD
8 EB
V N Z C I/O* MDR I/O*
C SP WPC MDR
ISP I SP C W W MAR W MAR
IPC I PC W W IB
WAC W AC R RAC D SP D R RSP R RPC MDR

8 8 8 8 8
BUS COMPARTIDO
Ejemplo de secuencia de microoperaciones de
la instrucción CALL dirección (Llamada a subrutina)
CICLO MEM(SP)  PC; SP SP-1; PC dirección

1 MDR PC WMDR, RPC


2 MAR  SP, SPSP-1 WMAR, RSP, DSP
3 ACIR 7-0 INM, OP3, OP2, WAC
MEM(MAR)MDR WMEM
V N Z C
4 PCAC WPC, RAC

COMANDOS A LA UNIDAD DE DATOS START


UNIDAD DE CONTROL
STOP I15-8
IR 1 5 -8
8
B 8 8
SB IR2-0 IR7-
FICHERO 3
0 1S INM 0
DE 8
A
REGISTROS BUS A BUS B 8 W MEM RMEM
SA IR1 0 - 8 IR W W IR
3
W S w IN
A B CODE W R
SIN ALU OP OP 16
4 4
3 8 S OUT RESULT D 15- SISTEMA DE MEMORIA DE DATOS
WS 0
WREGIR 1 0 - 8 MEMORIA DE CÓDIGO D7- A 7-
8 A7- 0 0
W
SR 0 DATA 8 DATA_ADD 8
CODE_ADD
8 EB
V N Z C I/O* MDR I/O*
C SP WPC MDR
ISP I SP C W W MAR W MAR
IPC I PC W W IB
WAC W AC R RAC DSP D R RSP R RPC MDR

8 8 8 8 8
BUS COMPARTIDO
Nota

La descripción RT del resto de las instrucciones se


encuentra en un documento anexo a este.

El alumno debe trabajar con ese documento.

67
Ejemplo de programación en ensamblador del
CS2010
Ejemplo 1. Escriba una subrutina para el cálculo de la
multiplicación mediante el algoritmo de sumas sucesivas.

; Ejemplo 1:
; multiplica los datos de los registros R1 y R2
; y devuelve el resultado en R0 (truncando a 8 bits)
; sumo el dato de R1 tantas veces como diga R2

MULT: LDI R0,0 ;inicializa R0


CPI R2,0
BREQ RETORNA
BUCLE: ADD R0,R1
SUBI R2,1
BREQ RETORNA
JMP BUCLE
RETORNA: RET
Ejemplo de programación en ensamblador del
CS2010
Ejemplo 2. Escriba una subrutina que devuelva el mayor
de dos números (escritos en complemento a 2)

; Ejemplo 2:
; devuelve en R0 el mayor de los datos almacenados
; en los registros R1 y R2

MAX: MOV R0,R1


SUB R0,R2
BRLT R2MAYOR
MOV R0,R1
RET
R2MAYOR: MOV R0,R2
RET
Ejemplo de programación en ensamblador del
CS2010
Ejemplo 3. Escriba una subrutina que escriba, en orden
descendente, los números del 100 al 1 en una tabla
situada a partir de la posición de memoria 123

; Ejemplo 3:
; Rellena una tabla en orden descendente, del 100 a 1
; la tabla empieza en la dirección 123

CUENTA: LDI R0,100 ;primer dato de la tabla


LDI R1,123
BUCLE: ST R0,(R1) ;R1 es el Registro Base
ADDI R1,1
SUBI R0,1
BREQ RETORNA
JMP BUCLE
RETORNA: RET
Índice
1. Limitaciones de la calculadora simple
2. El Computador Simple 1 (CS1)
(concepto de Programa almacenado en memoria)

3. El Computador Simple 2 (CS2)


(memoria de datos y memoria de programa)

4. El Computador Simple CS2010


(ampliación del conjunto de instrucciones)

Apéndice: Cartas ASM del Computador Simple CS2010

71
Cartas ASM del CS2010
Cartas ASM del CS2010 (ii)
Cartas ASM del CS2010 (iii)
Cartas ASM del CS2010 (iv)
Cartas ASM del CS2010 (v)

También podría gustarte