Anda di halaman 1dari 50

DISEO DE UN COMPUTADOR SIMPLE DISEO DE UN COMPUTADOR SIMPLE

Contenido:

El modo de operacin de los computadores: programa almacenado y ejecucin automtica; memorias de datos y de programas; ciclos de bsqueda y de ejecucin.
Diseo del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso. Diseo del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control. Uso a nivel ISP: ensamblador y ejemplo. La visin de CS2 como computador.

Bibliografa bsica
** C. Baena, I. Gmez, J.I. Escudero, M. Valencia: Sistemas Digitales. Servicio de publicaciones del Dpto. Tecnologa Electrnica, 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. Tecnologa Electrnica

EC

Modo Computador - 0

DISEO DE UN COMPUTADOR SIMPLE Desde la Calculadora hacia el Computador


* Cambios funcionales: 1. Modo de operacin: * Calculadora: Ejecuta una operacin preparada por el usuario * Computador: Ejecuta un programa almacenado en memoria
Programa: Conjunto ordenado de instrucciones cuya ejecucin resuelve un problema

2. Se incrementarn las prestaciones: Ms datos y ms operaciones

* Diseo a nivel RT: Punto de partida: la Unidad de Datos de la Calculadora Mtodo de diseo: Introducir los cambios bsicos para un Computador genrico

Dpto. Tecnologa Electrnica

EC

Modo Computador - 1

DISEO DE UN COMPUTADOR SIMPLE Incorporacin 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
MAR AB
E R W

M
DB

WT DB b

WT A RA WA b

a ab [AC] AC

a ab [AC] AC

s r RAC WAC ZAC B RB WB

s r RAC WAC ZAC

Dpto. Tecnologa Electrnica

EC

Modo Computador - 2

DISEO DE UN COMPUTADOR SIMPLE Codificacin de instrucciones


* Al incorporar la Memoria, los datos se identifican por su direccin en M * Las instrucciones tienen, por tanto, dos campos bsicos: 1 2 COP: Cdigo de Operacin, en el que se indica la operacin Campo de direcciones, en el que se indican los operandos

Instruccin: Codificada con n bits

COP ncop

Direccin naddress n = ncop + naddress

Dpto. Tecnologa Electrnica

EC

Modo Computador - 3

DISEO DE UN COMPUTADOR SIMPLE Memoria de datos y de programa


* Arquitectura de Harvard: Memorias distintas para Datos y para Programa: - - Inconveniente: Dobles buses ++ Ventaja: Independiza dimensin de datos e instrucciones CPU Mprog Mdatos M CPU
Modo Computador - 4

* 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 opcin

Dpto. Tecnologa Electrnica

EC

DISEO DE UN COMPUTADOR SIMPLE Registro de instruccin, IR (Instruction Register)


* Una eleccin: cuntas palabras de memoria ocupar una instruccin? ** En sistemas reales hay instrucciones de 1 palabra, y de 2, y de 3, y... ** En este tema de introduccin elegimos 1 nica palabra por instruccin

* El cdigo de instruccin 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 usarn como bits de direcciones e irn a MAR

Dpto. Tecnologa Electrnica

EC

Modo Computador - 5

DISEO DE UN COMPUTADOR SIMPLE


naddress IR COPDireccin ncop
T WT DB a ab [AC] AC RAC WAC ZAC b s r

n = ncop + naddress

naddress
MAR AB
E R W

M
2naddress x n

Unidad de Control

Dimensin n

Dpto. Tecnologa Electrnica

EC

Modo Computador - 6

DISEO DE UN COMPUTADOR SIMPLE Contador de Programa, PC (Program Counter)


* Contador de Programa: Se usa como puntero de la instruccin que habr que ejecutar ** PC apuntar siempre a la memoria de programa
naddress IR COPDireccin ncop
T WT DB a ab [AC] AC RAC WAC ZAC b s r

PC naddress

** PC tiene naddress bits y debe estar conectado a MAR

n = ncop + naddress

naddress
MAR AB
E R W

M
2naddress x n

Unidad de Control

Dpto. Tecnologa Electrnica

EC

Modo Computador - 7

DISEO DE UN COMPUTADOR SIMPLE Ejecucin automtica del Programa Fetch


* Ciclo de Bsqueda (Fetch cycle): Se busca en la memoria la instruccin que se va a ejecutar y se lleva al IR. Tambin se apunta a la siguiente instruccin.

Execute

* Ciclo de Ejecucin (Execute cycle): Se decodifica y se ejecuta.

* El ciclo Fetch-Execute termina cuando llega una instruccin especial (STOP, END o similar. * Es operacin de control (no precisa hardware especfico en la Unidad de Datos)

Dpto. Tecnologa Electrnica

EC

Modo Computador - 8

DISEO DE UN COMPUTADOR SIMPLE Control genrico del computador


S0 0 XS 1 Comienza la ejecucin del programa

PC PCinicial Ejecucin automtica

Parte ASM de Fetch STOP Final del programa COP No STOP Parte ASM de Execute

Dpto. Tecnologa Electrnica

EC

Modo Computador - 9

DISEO DEL CS1 A NIVEL RT DISEO DE UN COMPUTADOR SIMPLE


Contenido:
El modo de operacin de los computadores: programa almacenado y ejecucin automtica; memorias de datos y de programas; ciclos de bsqueda y de ejecucin.

Diseo del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.
Diseo del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control. Uso a nivel ISP: ensamblador y ejemplo. La visin de CS2 como computador.

Bibliografa bsica
** C. Baena, I. Gmez, J.I. Escudero, M. Valencia: Sistemas Digitales. Servicio de publicaciones del Dpto. Tecnologa Electrnica, 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. Tecnologa Electrnica

EC

Diseo de CS1 - 0

DISEO DEL CS1 A NIVEL RT Proceso de Diseo de Computador Simple 1 (CS1)


* Seguiremos el proceso de diseo de Sistemas Digitales, metodologa Top-Down 1. Especificacin del CS1: Modo de operacin: computador simple (segn apartado anterior) Conjunto de instrucciones (ISP): definiremos slo 4 ( 2 bits en COP) 2. Diseo de CS1 como Sistema Digital Unidad de datos Microprograma de control Unidad de control * Terminaremos usando CS1 como un computador a nivel ISP

Dpto. Tecnologa Electrnica

EC

Diseo de CS1 - 1

DISEO DEL CS1 A NIVEL RT Conjunto de Instrucciones del Computador Simple 1


(M es la memoria RAM)

IR7IR6 00 01 10 11

Mnemnico STOP ADD $A SUB $A STA $A NOP

Operacin AC AC + M($A) AC AC - M($A) M($A) AC

Comentarios Parada (fin de programa) Suma (en el acumulador) Resta (en el acumulador) 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. Tecnologa Electrnica EC Diseo de CS1 - 2

DISEO DEL CS1 A NIVEL RT Elecciones sobre el Programa:


1. El programa se almacena en las primeras posiciones de M: la primera instruccin es la que est en M($0) 2. La ejecucin ser LINEAL: tras ejecutar una instruccin (p.ej. K) se ejecutar la de la siguiente posicin (K + 1)
M $0 Instruccin 1 $1 Instruccin 2 $2 Instruccin 3 $3 Instruccin 4 Ejecucin

* Por tanto, el PC debe ser un contador ascendente con puesta a 0: PC [6] con seales de operacin IPC (: PC PC + 1) y CLPC (: PC 0) IPC CLPC PC [6]

[6]

Dpto. Tecnologa Electrnica

EC

Diseo de CS1 - 3

DISEO DEL CS1 A NIVEL RT Unidad de datos del CS1


IPC CLPC PC[6] [6] TPC TIR IR[8] TB CO [2] E R A W S IPC CLPC TPC ZAC .. RAC WAC WAC [6] D7-D0 CD WT T[8] [8] ALU [8] AC[8] [8] MAR[6] [6] AB A5-A0 E R W

M RAM
26 x 8

DB[8]

UNIDAD XS DE CONTROL

Dpto. Tecnologa Electrnica

EC

Diseo de CS1 - 4

DISEO DEL CS1 A NIVEL RT Desarrollo en Micro-operaciones


* Ciclo de Bsqueda (Fetch) S 1 MAR PC 2 IR RAM, PC PC + 1 * Ciclo de Ejecucin (Execute) S 3 4 5 STOP (00) NOP go to S0 T RAM ( E, R, WT) AC AC + T, goto S1 (A, WAC)
Dpto. Tecnologa Electrnica

Op

Seales a activar TPC E, R, TB, IPC

ADD (01)

SUB (10) MAR IR (TIR)

STA (11)

RAM AC, goto S1 ( E, W, RAC)

AC AC - T, goto S1 (S, WAC)


EC Diseo de CS1 - 5

DISEO DEL CS1 A NIVEL RT


Carta ASM de Datos
S0 0 xs 1 PC PCinic MAR PC FETCH IR RAM PC PC + 1 S3 IR7,6 00 MAR IR 00 (STOP) S2 01(ADD) IR7,6 S1 S5 01(SUB) 11(STA) M AC IR7,6 S4 11 TM

AC AC + T

AC AC - T

EXECUTE

Dpto. Tecnologa Electrnica

EC

Diseo de CS1 - 6

DISEO DEL CS1 A NIVEL RT


Carta ASM de Control
S0 0 xs 1 CLPC W, RAC TPC FETCH E, R,TB, IPC S3 IR7,6 00 (STOP) 00 TIR S2 01(ADD) A S1 WAC IR7,6 S5 01(SUB) S 11(STA) E IR7,6 S4 11 R, WT

EXECUTE

Dpto. Tecnologa Electrnica

EC

Diseo de CS1 - 7

DISEO DEL CS1 A NIVEL RT Unidad de control: 1 biestable por estado


>1 CLPC TPC >1 TIR WT >1 1 2 3 & 4 1 0 0 5 1 W RAC A E R WAC S

IPC TB

xs

IR7 IR6

DEC 0 2:4 1 1 2 0 3

STOP STA

ADD

Dpto. Tecnologa Electrnica

EC

Diseo de CS1 - 8

DISEO DEL CS1 A NIVEL RT Uso de CS1 a nivel ISP


* PROBLEMA: Almacenar en la posicin $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) M($3E) + M($3D) - M($3C) El programa mnemnico es: Instrucciones comentarios 1: STA $20 2: SUB $20 con esto se hace [AC] = M($20) - M($20) = 0 3: 4: 5: 6: 7: ADD $3E ADD $3D SUB $3C STA $3F STOP [AC] = M($3E) [AC] = M($3E) + M($3D) [AC] = M($3E) + M($3D) - M($3C) M($3F) = M($3E) + M($3D) - M($3C)

Dpto. Tecnologa Electrnica

EC

Diseo de CS1 - 9

DISEO DEL CS1 A NIVEL RT


MEMORIA: Cdigo mquina y datos para M($3E)=126(10, M($3D)=105(10 y M($3C)=188(10
$A 00 01 02 03 04 05 06 20 3C 3D 3E 3F 1110 1010 0111 0111 1011 00xx [M($A)] 0000 0000 1110 1101 1100 xxxx STA $20 SUB $20 ADD $3E ADD $3D SUB $3C STA $3F STOP Dato irrelevante 188(10 = $BC 105(10 = $69 126(10 = $7E 126(10 + 105(10 - 188(10 = 43(10 = $2 B Instruccin/Dato

1111 1111

P R O G R A M A

dddd dddd 1011 1100 0110 1001 0111 1110 0010 1011

D A T O S

Dpto. Tecnologa Electrnica

EC

Diseo de CS1 - 10

DISEO DE UN COMPUTADOR SIMPLE


Contenido:
El modo de operacin de los computadores: programa almacenado y ejecucin automtica; memorias de datos y de programas; ciclos de bsqueda y de ejecucin. Diseo del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.

Diseo del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.
Uso a nivel ISP: ensamblador y ejemplo. La visin de CS2 como computador.

Bibliografa bsica
** C. Baena, I. Gmez, J.I. Escudero, M. Valencia: Sistemas Digitales. Servicio de publicaciones del Dpto. Tecnologa Electrnica, 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. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 0

CS2: DISEO LNEA 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 lneas de progreso:
Longitud variable para la instruccin 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. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 1

CS2: DISEO Diversificacin de instrucciones


TIPOS DE INSTRUCCIONES: Tareas que realizan, como son:
ARITMTICAS Y LGICAS: Usualmente de 1, 2 o 3 operandos: A B C TRANSFERENCIA DE DATO: Mueve un dato: destino fuente DE SALTO: Modifica la ejecucin lineal del programa: PC PC + 1 DE SUBRUTINA: Salto o retorno. Interviene el registro SP (Stack Pointer) DE CONTROL DE ESTADO: Actan con los bits o banderas (flags) de C, V, Z,... MISCELNEA: Otras instrucciones no incluidas en los grupos anteriores

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 2

CS2: DISEO Subrutina


Concepto: Fragmento de programa que realiza una cierta operacin 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: Q: SUBR

L: Salto a SUBR L+1: sigue P: Q: SUBR

Ejecucin
L: Salto a SUBR L+1: sigue

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 direccin de retorno correcta, para lo cual se usa una memoria tipo pila.
Dpto. Tecnologa Electrnica EC Computador Simple 2 Diseo - 3

CS2: DISEO Diversificacin de instrucciones


MODOS DE DIRECCIONAMIENTO:
COP IMPLCITO o INHERENTE INMEDIATO DIRECTO COP COP Dato Direccionamiento COP - - - - - - - -

Mem aaaa
Dato

aaaa

Mem aaaa
INDIRECTO COP aaaa

bbbb

bbbb

Dato

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 4

CS2: DISEO Conjunto de instrucciones


Load Accumulator IMmediate LoaD Accumulator STore Accumulator

LAIM AC inmediato LDA STA ADD SUB ADDI ROR ROL AC AC AC AC + M AC AC - M AC AC + Mindirecto C, AC SHR(AC, C) C, AC SHL(AC, C)

JuMP Branch if Carry Set Decrement and Branch if Zero CLear Carry SEt Carry STOP Jump to SubRoutine Return of Subroutine

JMP BCS DBZ CLC SEC

PC C: PC 1; : PC + 2 C0 C1

ADD SUBtract ADD Indirect ROtate Right

STOP P JSR RTS push (PC) PC AA PC (pull)

ROtate Left

donde: * * * * * * *

inmediato es el dato incluido en la propia instruccin; AA es la direccin de salto incluida

M es la palabra de memoria direccionada, M(direccin incluida) Mindirecto es la M direccionada indirectamente: M( [M(direccin incluida)]7-0) N es la direccin donde se encuentra la instruccin 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
EC Computador Simple 2 Diseo - 5

Dpto. Tecnologa Electrnica

CS2: DISEO Unidad de Datos del Computador simple 2


AB [8] TSP, TIR, TPC MAR [8] IS, DS, CLSP R W

A7-0 D11-0 RAM 28x12 IPC, WPC RPC, CLPC


11-0

SP [8] IR [12] DB11-8 0

PC [8]

W4, W8, R8 IR11-8

DB7-0

DB7-0

DB [12]

DECODIFICACIN Y CONTROL

XS

CIM

11-8

DB [12] RT [12] WT,RT,DT

Z A S

ALU [12]

[AC]

Csalida
WA, RR, RL

COUT CC SC ZA, RA

AC [12]

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 6

CS2: DISEO Novedades en la U. D. del CS2


AB [8] R W

Dimensionamiento TSP, TIR, TPC


MAR [8] IS, DS CLSP

A7-0 D11-0

RAM
28x12 IPC, WPC RPC, CLPC
11-0

SP [8] IR [12] DB11-8 0

PC [8]

W4, W8, R8 IR11-8

DB7-0

DB7-0

DB [12]

DECODIFICACIN Y CONTROL

XS

CIM

11-8

DB [12] RT [12] WT,RT,DT

Z A S

ALU [12]

[AC]

Csalida
WA, RR, RL

COUT CC SC ZA, RA

AC [12]

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 7

CS2: DISEO
R W

Novedades en la U. D. del CS2


AB [8] A7-0 D11-0 RAM 28x12 IPC, WPC RPC, CLPC
11-0

Registros

TSP, TIR, TPC

Subrutina
IS, DS CLSP SP [8]

MAR [8]

PC [8] IR [12] DB11-8 0

W4, W8, R8 IR11-8

DB7-0

DB7-0

DB [12]

DECODIFICACIN Y CONTROL

XS

LAIM
Z

CIM

11-8

DB [12] RT [12] WT,RT,DT

A S

Carry Csalida
WA, RR, RL

ALU [12]

[AC]

COUT CC SC ZA, RA

AC [12]

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 8

CS2: DISEO Novedades en la U. D. del CS2


AB [8] TSP, TIR, TPC MAR [8] R W

A7-0 D11-0 RAM 28x12 IPC, WPC RPC, CLPC Entrada/Salida

Flujo de datos

IS, DS CLSP

SP [8] IR [12] DB11-8 0

PC [8]

de IR y PC
11-0

W4, W8, R8 IR11-8

DB7-0

DB7-0

DB [12]

DECODIFICACIN Y CONTROL

XS

CIM

11-8

DB [12] RT [12] WT,RT,DT

Z A S

Conexin hacia DB

Entradas de Control de estado

ALU [12]

[AC]

Csalida
WA, RR, RL

COUT CC SC ZA, RA

AC [12]

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 9

CS2: DISEO Unidad de Control


0 Xs 1 Inicializacin

Carta ASM FETCH

0 1 2

F COP D (STOP)

ASM LAIM

ASM LDA

ASM STA

ASM RTS

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 10

CS2: DISEO Unidad de Control


0 Xs Inicializacin 1 Inicializacin 0 1
FETCH

LAIM LDA STA

Carta ASM FETCH

Xs

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

No Conectar RTS

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Diseo - 11

ENSAMBLADOR DEL CS2 DISEO DE UN COMPUTADOR SIMPLE


Contenido:
El modo de operacin de los computadores: programa almacenado y ejecucin automtica; memorias de datos y de programas; ciclos de bsqueda y de ejecucin. Diseo del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso. Diseo del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.

Uso a nivel ISP: ensamblador y ejemplo.


La visin de CS2 como computador.

Bibliografa bsica
** C. Baena, I. Gmez, J.I. Escudero, M. Valencia: Sistemas Digitales. Servicio de publicaciones del Dpto. Tecnologa Electrnica, 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. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 0

ENSAMBLADOR DEL CS2 Ensamblador


ENSAMBLADOR es un trmino que sirve para:

LENGUAJE DE PROGRAMACIN con el que se escriben los programas en ensamblador

PROGRAMA escrito en algn lenguaje que, a partir de un programa en ensamblador, obtiene el cdigo ejecutable de la mquina (mquina es CS2)

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 1

ENSAMBLADOR DEL CS2 Lenguaje ensamblador


En general, un lenguaje ensamblador consta de:
INSTRUCCIONES EJECUTABLES: se escriben con el mnemnico correspondiente y se interpreta al cdigo ejecutable. Ejemplo de CS2: 1010 01000011 DBZ $43 DIRECTIVAS DE ENSAMBLADO O PSEUDOINSTRUCCIONES: son instrucciones del lenguaje ensamblador, pero no de la mquina: no dan lugar a cdigo ejecutable. * Las directivas sirven para DOCUMENTAR y para FACILITAR la escritura de programas: uso de variables, etiquetas, etc.

Lenguaje ensamblador del CS2:


Cada lnea del fichero del programa corresponde a una instruccin o directiva Las 16 instrucciones del CS2 con el mnemnico 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: instruccin ... ... ... ... otrainstruccin nombre ; esto es un comentario EQU ALTA $AA ciclo1: ADDI ALTA ... ... ... ... JMP ciclo1

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 2

ENSAMBLADOR DEL CS2 Programa ensamblador


Ensamblador: programa que interpreta el programa del CS2. Este ensamblador es una aplicacin que corre sobre un computador real.

* Detecta errores lxicos, sintcticos y semnticos Fichero en lenguaje ensamblador que programa el usuario. Se usa un editor.

* Se eliminan las directivas * Interpreta las instrucciones del CS2 creando el cdigo ejecutable sobre CS2

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 3

ENSAMBLADOR DEL CS2 Ejemplo: Sumar n magnitudes (Prob. 44)


comienzo

Especificaciones:
$HH [M($HH)] instruccin 1 instruccin 2

inicializacin

sin mensaje de desbordamiento n = n sumandos = 8

00 01 ...

acumula nuevo sumando ALTA (iniciar a $EF) s acarreo busca nuevo sumando s ltimo no no CONT (iniciar a 8)

43 ... AA AB ...

Resultado final (sin acarreo)

direccin ms alta de sumando cuenta n sumandos sin sumar an

DATO n DATOS (magnitudes) EF DATO 1

fin

...

Dpto. Tecnologa Electrnica

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 seala al sumando siguiente ; ; Inicializacin 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. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 5

ENSAMBLADOR DEL CS2


Programa en ensamblador Ensamblador Programa cdigo mquina
$HH 00 01 02 03 04 05 06 07 08 09 0A 0B mnem LAIM 8 STA $AB LAIM $EF STA $AA LAIM 0 ADDI $AA BCS $0B DBZ $AA DBZ $AB JMP $05 STA $43 STOP [M] 0000 0000 1000 0010 1010 1011 0000 1110 1111 0010 1010 1010 0000 0000 0000 0101 1010 1010 1001 0000 1011 1010 1010 1010 1010 1010 1011 1000 0000 0101 0010 0100 0011 1101 (00 ... 00)

; 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 seala al sumador siguiente ; ; Inicializacin 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. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 6

ENSAMBLADOR DEL CS2 Ejercicios de programacin con CS2


1. Escribir nmeros en la palabra WORD de memoria (p. ej. $AA)
* Se declara la variable WORD: 1a. Si el nmero es una magnitud, p. ej. 96: EQU WORD $AA LAIM 96; tambin LAIM $60 STA WORD ; WORD = $060 LAIM 96 STA WORD LAIM 0 SUB WORD ;AC=0-96= $FA0 STA WORD ; WORD = $FA0

1b. Si el nmero es negativo (Ca2), p. ej. - 96 Se aprovecha que: -N=0-N

Cuestiones:

Cmo se introduce un nmero positivo? Cules son el mayor y el menor valor que se pueden introducir segn 1a? Y segn 1b?

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 7

ENSAMBLADOR DEL CS2


1.c. Si el nmero 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 dgito hexadecimal ms significativo seguido de 0s (M=$200), despus los dos dgitos 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, ejecutara 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: Cules son el mayor y el menor valor que se pueden introducir segn 1a, b, c?

2. Sobre las subrutinas


* Terminan con RTS (el programa, con STOP) ** Hay que tener presente cmo intercambian datos con el programa; usad variables *** Las direcciones de retorno se almacenan en $FF (despus, en $FE, y en $FD, ...); hay que evitar , pues, usar las ltimas direcciones de memoria para poner datos

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 8

ENSAMBLADOR DEL CS2


3. Bifurcar el flujo de ejecucin en funcin de si AC es nulo o no
* Sea [AC]inicial = N
S AC = 0 Tarea 1 Tarea 2 No EQU prov $AA STA prov ; prov = N LAIM 1 ADD prov STA prov ; prov = N + 1 DBZ prov JMP tarea2 JMP tarea1

* Para usar DBZ con el fin de saber si N=0, hay que poner N+1 en una posicin de memoria . .

.. sigue ...
tarea1: ... ; 1 instr. de Tarea 1

.. sigue ...
tarea2: ... ; 1 instr. de Tarea 2

Cuestiones (y soluciones) :
* Cmo se bifurca si se pregunta por el valor 0 de una posicin de memoria?
Para prov como posicin de memoria, el algoritmo es como el de antes eliminando la primera instruccin STA prov

** Cmo se podra conservar el contenido del AC en este ltimo caso?


En primer lugar se guarda AC (p. ej. en M), STA M , despus se hace la bifurcacin y, por ltimo, se pone LDA M como 1 instruccin tanto en tarea1: como en tarea2:

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 9

ENSAMBLADOR DEL CS2


4. La resta (SUB) y la bifurcacin con BCS:
SUB B ; AC AC - B Nmeros con signo (Ca2) Opera como el sumador/restador
Resultado en notacin Ca2 Bit de signo en AC11 El bit de carry, C, se modifica segn los datos No hay bit de overflow, V

Nmeros sin signo (magnitudes) Opera como el restador de magnitudes pero el valor de Bwout se escribe en C:
Resultado magnitud si C = Bwout = 0 Resultado en Ca2 si C = Bwout = 1 El bit C se modifica segn 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. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 10

ENSAMBLADOR DEL CS2


4.a. A y B magnitudes: bifurcar segn sea o no A > B A>BA-B>0
S A>B Tarea 1 Tarea 2 No EQU A $AD EQU B $AE LDA A SUB B ; C = Bwout BCS tarea2 ... ; 1 instr. de Tarea 1 ... ; 2 instr. de Tarea 1

* Hacer A -B Bwout = C: ** C = 1 A < B ** C = 0 A > B

... sigue ...


tarea2: ... ;1 instr. de Tarea 2

4.b. A y B n en Ca2: bifurcar segn 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

os

... sigue ...

... sigue ...


tarea2: ... ;1 instr. de Tarea 2

... sigue ...

Dpto. Tecnologa Electrnica

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, despus en $9E, despus en $9D, etc. Si slo disponemos de la instruccin STA, en la primera escritura habra que poner STA $9F, en la segunda STA $9E, en la tercera STA $9D, etc., siendo imposible hacer un bucle. Si dispusiramos de la instruccin STAI se resolvera fcilmente esta cuestin.

* STAI stind, donde stind es la posicin 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 cdigos mquinas de STA y de RTS como sigue: M($F0) = $2nn Corresponde a STA $nn, siendo $nn la primera direccin (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 escribira: EQU stind $F0 ; la posicin 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 direccin sigue 1 ; sigue ejecutando la tarea deseada tras STAI sigue 2 ; etc.
1. El autor de este idea es D. Alejandro Muoz Rivera, cuando fue alumno de esta asignatura

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Ensamblador- 12

* Ejemplo: Existen 20 ($14) datos almacenados en memoria desde la direccin $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 cdigo mquina 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 cdigo mquina 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 = nmero de datos LAIM $EF STA fuente ; fuente = $EF ; Ciclo de movimiento de datos ciclo: LAIM 0 ADDI fuente ; AC = Dato_fuente DBZ fuente ; nueva direccin fuente (- 1) JSR stind ; mueve dato a destino DBZ stind ; nueva direccin destino (- 1) DBZ cont JMP ciclo STOP

Memoria:

$00 $01 ......

Programa

$80 $81

fuente cont Destino de datos Datos fuentes $2nn : STA destino $F00 : es RTS

$9E $9F $EE $EF $F0 $F1

CS2 COMO COMPUTADOR DISEO DE UN COMPUTADOR SIMPLE


Contenido:
El modo de operacin de los computadores: programa almacenado y ejecucin automtica; memorias de datos y de programas; ciclos de bsqueda y de ejecucin. Diseo del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso. Diseo del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control. Uso a nivel ISP: ensamblador y ejemplo.

La visin de CS2 como computador.


Bibliografa bsica
** C. Baena, I. Gmez, J.I. Escudero, M. Valencia: Sistemas Digitales. Servicio de publicaciones del Dpto. Tecnologa Electrnica, 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. Tecnologa Electrnica

EC

Computador Simple 2 Computador- 0

CS2 COMO COMPUTADOR Migracin de estructuras: Sistema Digital Computador


Visin Sistema Digital a nivel RT Visin Computador

Comandos Unidad de Control

Central Processing Unit

Mem

AB: Address Bus

CPU
Cualificadores Unidad de Datos

DB: Data Bus CB: Control Bus

MEM

* Faltan los circuitos de entrada/salida (I/O)

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Computador- 1

CS2 COMO COMPUTADOR Lo que falta a nivel de instrucciones (ISP)


Instrucciones de ms de una palabra:
ciclo FETCH ms complejo: Primera bsqueda: cdigo de operacin, que informa a la CPU de si hay que buscar ms palabras para completar la instruccin. Entonces, nueva bsqueda o ejecucin, segn corresponda Ver Problema 40

Ms modos de direccionamiento:
Faltan muchos modos de direccionamiento Un problema importante es que el CS2 no tiene almacenamiento indirecto

Ms tipos de instruccin:
faltan muchas operaciones tiles: lgicas, de salto, comparaciones, etc. operando sobre distintos tipos de datos: decimales/punto flotante, de distintos tamaos, etc.

Muchos de estos aspectos los veremos en el MC68000

Dpto. Tecnologa Electrnica

EC

Computador Simple 2 Computador- 2

Anda mungkin juga menyukai