DISEÑO DE UN COMPUTADOR SIMPLE

DISEÑO DE UN COMPUTADOR SIMPLE DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D El modo de operación de los computadores: programa almacenado y ejecución

1 downloads 31 Views 760KB Size

Recommend Stories


Estudio del rendimiento de un computador
Turnaround Time. Ciclos de Reloj. Frecuencia. Instrucciones. CPI. MIPS. THROUGHPUT. Benchmark

REPARACIÓN Y ARMADO DE UN COMPUTADOR
Servicio Nacional de Aprendizaje – SENA Regional Cundinamarca-Soacha Sistema de Gestión de la Calidad Página 1 de 27 Programa Mantenimiento de Equip

Story Transcript

DISEÑO DE UN COMPUTADOR SIMPLE DISEÑO DE UN COMPUTADOR SIMPLE Contenido:

D El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución. D

Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.

D

Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.

D

Uso a nivel ISP: ensamblador y ejemplo.

D

La visión de CS2 como computador.

Bibliografía básica ** C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997. ** C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.

Dpto. Tecnología Electrónica

EC

Modo Computador - 0

DISEÑO DE UN COMPUTADOR SIMPLE Desde la Calculadora hacia el Computador * Cambios funcionales: 1. Modo de operación: * Calculadora: Ejecuta una operación preparada por el usuario * Computador: Ejecuta un programa almacenado en memoria Programa: Conjunto ordenado de instrucciones cuya ejecución resuelve un problema

2. Se incrementarán las prestaciones: Más datos y más operaciones

* Diseño a nivel RT: Punto de partida: la Unidad de Datos de la Calculadora Método de diseño: Introducir los cambios básicos para un Computador genérico

Dpto. Tecnología Electrónica

EC

Modo Computador - 1

DISEÑO DE UN COMPUTADOR SIMPLE Incorporación de la Memoria * Para aumentar los datos, se sustituyen los registros A y B por una Memoria M * Aparecen MAR (Memory Address Register) y AB (Address Bus) para las direcciones E

MAR

R W

AB

M DB

T

WT DB

T

WT Δ

a

b a±b

a

RA WA

b a±b

s r Δ

[AC] AC Δ

A

RAC WAC ZAC

Dpto. Tecnología Electrónica

B

RB WB

s r

[AC] AC Δ

EC

RAC WAC ZAC

Modo Computador - 2

DISEÑO DE UN COMPUTADOR SIMPLE Codificación de instrucciones * Al incorporar la Memoria, los datos se identifican por su dirección en M * Las instrucciones tienen, por tanto, dos campos básicos: 1

COP: Código de Operación, en el que se indica la operación

2

Campo de direcciones, en el que se indican los operandos

Instrucción: Codificada con n bits

COP

Dirección

ncop

naddress n = ncop + naddress

Dpto. Tecnología Electrónica

EC

Modo Computador - 3

DISEÑO DE UN COMPUTADOR SIMPLE Memoria de datos y de programa

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

CPU

* Arquitectura de Von Neumann: La Memoria es la misma para Datos y para Programa: · Tiene las ventajas e inconvenientes opuestas · Hay que repartir la memoria en datos y programas · Elegiremos esta opción

Dpto. Tecnología Electrónica

EC

Mdatos

Mprog

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

M CPU

Modo Computador - 4

DISEÑO DE UN COMPUTADOR SIMPLE Registro de instrucción, IR (Instruction Register) * Una elección: ¿cuántas palabras de memoria ocupará una instrucción? ** En sistemas reales hay instrucciones de 1 palabra, y de 2, y de 3, y... ** En este tema de introducción elegimos 1 única palabra por instrucción

* El código de instrucción tiene “n” bits, igual que todo lo relativo a los datos (DB, AC,...) ** Habrá “ncop“ bits que decodificará la Unidad de Control ** Habrá “naddress“ bits que se usarán como bits de direcciones e irán a MAR

Dpto. Tecnología Electrónica

EC

Modo Computador - 5

DISEÑO DE UN COMPUTADOR SIMPLE naddress IR COPDirección

n = ncop + naddress

naddress E

MAR

R W

AB

ncop

M T

2naddress x n

WT DB

Unidad de Control

a

b a±b

s r

[AC] AC Δ

Dpto. Tecnología Electrónica

EC

RAC WAC ZAC

Dimensión “n”

Modo Computador - 6

DISEÑO DE UN COMPUTADOR SIMPLE Contador de Programa, PC (Program Counter) * Contador de Programa: Se usa como puntero de la instrucción que habrá que ejecutar PC

** PC apuntará siempre a la memoria de programa

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

naddress

naddress IR COPDirección

n = ncop + naddress

naddress E

MAR

R W

AB

ncop

M T

2naddress x n

WT DB

Unidad de Control

a

b a±b

s r

[AC] AC Δ

Dpto. Tecnología Electrónica

EC

RAC WAC ZAC

Modo Computador - 7

DISEÑO DE UN COMPUTADOR SIMPLE Ejecución automática del Programa Fetch

Execute

* Ciclo de Búsqueda (Fetch cycle): Se busca en la memoria la instrucción que se va a ejecutar y se lleva al IR. También se apunta a la siguiente instrucción.

* Ciclo de Ejecución (Execute cycle): Se decodifica y se ejecuta.

* El ciclo Fetch-Execute termina cuando llega una instrucción especial (STOP, END o similar. * Es operación de control (no precisa hardware específico en la Unidad de Datos)

Dpto. Tecnología Electrónica

EC

Modo Computador - 8

DISEÑO DE UN COMPUTADOR SIMPLE Control genérico del computador S0 0

XS

1

Comienza la ejecución del programa

PC ← PCinicial

STOP Final del programa

COP No STOP

Parte ASM de Execute

Dpto. Tecnología Electrónica

EC

Ejecución automática

Parte ASM de Fetch

Modo Computador - 9

DISEÑO DEL CS1 A NIVEL RT DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D

El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución.

D Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso. D

Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.

D

Uso a nivel ISP: ensamblador y ejemplo.

D

La visión de CS2 como computador.

Bibliografía básica **

C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997.

**C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.

Dpto. Tecnología Electrónica

EC

Diseño de CS1 - 0

DISEÑO DEL CS1 A NIVEL RT Proceso de Diseño de Computador Simple 1 (CS1) * Seguiremos el proceso de diseño de Sistemas Digitales, metodología Top-Down 1. Especificación del CS1: → Modo de operación: computador simple (según apartado anterior) → Conjunto de instrucciones (ISP): definiremos sólo 4 ( ↔ 2 bits en COP) 2. Diseño de CS1 como Sistema Digital → Unidad de datos → Microprograma de control → Unidad de control * Terminaremos usando CS1 como un computador a nivel ISP

Dpto. Tecnología Electrónica

EC

Diseño de CS1 - 1

DISEÑO DEL CS1 A NIVEL RT Conjunto de Instrucciones del Computador Simple 1 (M es la memoria RAM)

IR7IR6

Mnemónico

Operación

Comentarios

00

STOP

NOP

Parada (fin de programa)

01

ADD $A

AC I AC + M($A)

Suma (en el acumulador)

10

SUB $A

AC I AC - M($A)

Resta (en el acumulador)

11

STA $A

M($A) I AC

Almacena (el acumulador en M)

* Por tanto, si los datos se dimensionan a 1 Byte de anchura, DB es de n = 8 bits: • IR es de n = 8 bits (n = ncop + naddress): • 2 de ellos para COP (nCOP=2): IR7IR6 • 6 para direcciones (naddress=6): IR5 - IR0 • M es 26 x 8 (64 Bytes) • MAR y PC son de 6 bits Dpto. Tecnología Electrónica

EC

Diseño de CS1 - 2

DISEÑO DEL CS1 A NIVEL RT Elecciones sobre el Programa:

2. La ejecución será LINEAL: tras ejecutar una instrucción (p.ej. “K”) se ejecutará la de la siguiente posición (“K + 1”)

M $0 Instrucción 1ª $1 Instrucción 2ª $2 Instrucción 3ª

Ejecución

1. El programa se almacena en las primeras posiciones de M: la primera instrucción es la que esté en M($0)

$3 Instrucción 4ª

* Por tanto, el PC debe ser un contador ascendente con puesta a 0: PC [6] con señales de operación IPC (: PC ← PC + 1) y CLPC (: PC ← 0) IPC

PC [6]

CLPC

Dpto. Tecnología Electrónica

EC

[6]

Diseño de CS1 - 3

DISEÑO DEL CS1 A NIVEL RT Unidad de datos del CS1 IPC CLPC

[6] TPC

AB

[6]

MAR[6]

A5-A0

[6]

IR[8] CO

D7-D0 CD

WT

[2]

UNIDAD XS

RAM 26 x 8

TIR

TB

M

E R W

PC[6]

DE CONTROL

.

Dpto. Tecnología Electrónica

E R A W S IPC CLPC TPC ZAC .. RAC WAC WAC

DB[8]

T[8] [8] ALU [8]

[8]

AC[8]

EC

Diseño de CS1 - 4

DISEÑO DEL CS1 A NIVEL RT Desarrollo en Micro-operaciones * Ciclo de Búsqueda (Fetch) μOp

S

Señales a activar

1 MAR I PC

TPC

2 IR I RAM, PC I PC + 1

E, R, TB, IPC

* Ciclo de Ejecución (Execute) S 3

STOP (00)

ADD (01)

STA (11)

MAR I IR (TIR)

NOP go to S0 T I RAM ( E, R, WT)

4 5

SUB (10)

AC I AC + T, goto S1 (A, WAC) Dpto. Tecnología Electrónica

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

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

Diseño de CS1 - 5

DISEÑO DEL CS1 A NIVEL RT Carta ASM de Datos S0 0 xs

S4

1

11(STA)

PC I PCinic

IR7,6

TIM

M I AC

MAR I PC

S1

IR I RAM PC I PC + 1

S2

FETCH

EXECUTE

IR7,6

S5 01(ADD)

S3

≠11

IR7,6

AC I AC + T

≠01(SUB)

AC I AC - T

00 (STOP)

≠ 00 MAR I IR

Dpto. Tecnología Electrónica

EC

Diseño de CS1 - 6

DISEÑO DEL CS1 A NIVEL RT Carta ASM de Control S0 0 xs

E

1

11(STA) CLPC

IR7,6

≠11 R, WT

W, RAC S1

TPC FETCH E, R,TB, IPC

WAC

S2 01(ADD)

S3

EXECUTE

S4

A

IR7,6

S5 ≠01(SUB) S

IR7,6 00 (STOP) ≠ 00 TIR

Dpto. Tecnología Electrónica

EC

Diseño de CS1 - 7

DISEÑO DEL CS1 A NIVEL RT Unidad de control: 1 biestable por estado >1 CLPC

TPC

>1

IPC TB

xs

TIR

1

2

3

&

0 4

IR7 IR6

STOP

Dpto. Tecnología Electrónica

0

S

1

A

5

1 DEC 0 2:4 1 1 2 0 3

R WAC

WT >1

E

W RAC

ADD STA

EC

Diseño de CS1 - 8

DISEÑO DEL CS1 A NIVEL RT Uso de CS1 a nivel ISP * PROBLEMA: Almacenar en la posición $3F el resultado de sumar los datos de las posiciones $3E y $3D y restarle el de $3C. Esto es, a nivel RT: M($3F) I M($3E) + M($3D) - M($3C) → El programa mnemónico es: Instrucciones comentarios 1: STA $20 2: SUB $20 con esto se hace [AC] = M($20) - M($20) = 0 3:

ADD $3E

 [AC] = M($3E)

4:

ADD $3D

 [AC] = M($3E) + M($3D)

5:

SUB $3C

 [AC] = M($3E) + M($3D) - M($3C)

6:

STA $3F

 M($3F) = M($3E) + M($3D) - M($3C)

7:

STOP

Dpto. Tecnología Electrónica

EC

Diseño de CS1 - 9

DISEÑO DEL CS1 A NIVEL RT MEMORIA: Código máquina y datos para M($3E)=126(10, M($3D)=105(10 y M($3C)=188(10 $A

[M($A)]

Instrucción/Dato

00

1110

0000

STA $20

01

1010

0000

SUB $20

02

0111

1110

ADD $3E

03

0111

1101

ADD $3D

04

1011

1100

SUB $3C

05

1111 1111

STA $3F

06

00xx

STOP

20

dddd dddd

Dato irrelevante

3C

1011 1100

188(10 = $BC

3D

0110 1001

105(10 = $69

3E

0111 1110

126(10 = $7E

3F

0010 1011

126(10 + 105(10 - 188(10 = 43(10 = $2 B

xxxx

Dpto. Tecnología Electrónica

EC

P R O G R A M A

D A T O S

Diseño de CS1 - 10

DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D

El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución.

D

Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.

D Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control. D

Uso a nivel ISP: ensamblador y ejemplo.

D

La visión de CS2 como computador.

Bibliografía básica **

C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997.

**C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 0

CS2: DISEÑO LÍNEA DE PROGRESO PARA CS2 •

Diversificar las instrucciones: ••

Tipos de Instrucciones: Tareas u operaciones que realizan

••

Modos de Direccionamiento: Formas de indicar los datos u operandos

y, en menor medida, la cantidad de datos •

Quedan pendientes otras muchas líneas de progreso: •• •• •• •• ••

Longitud variable para la instrucción Capacidad de entrada/salida Modificar memoria interna (incluir cache, aumentar la capacidad) Variar el sistema de buses Posibilidad de transferir el control de procesos

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 1

CS2: DISEÑO Diversificación de instrucciones • TIPOS DE INSTRUCCIONES: Tareas que realizan, como son: ••

ARITMÉTICAS Y LÓGICAS: Usualmente de 1, 2 o 3 operandos: A ← B ∗ C

••

TRANSFERENCIA DE DATO: Mueve un dato: destino ← fuente

••

DE SALTO: Modifica la ejecución lineal del programa: PC ≠ PC + 1

••

DE SUBRUTINA: Salto o retorno. Interviene el registro SP (Stack Pointer)

••

DE CONTROL DE ESTADO: Actúan con los bits o banderas (flags) de C, V, Z,...

••

MISCELÁNEA: Otras instrucciones no incluidas en los grupos anteriores

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 2

CS2: DISEÑO Subrutina • Concepto: Fragmento de programa que realiza una cierta operación y que se ejecuta varias veces en el Programa Principal

• Uso: Se escribe una sola vez y se llama las veces necesarias, retornando al lugar de llamada Programa Principal

Programa Principal

K: Salto a SUBR K+1: sigue

L: Salto a SUBR L+1: sigue

K: Salto a SUBR K+1: sigue

P: Q:

Ejecución

SUBR

L: Salto a SUBR L+1: sigue

P: Q:

SUBR

• Subrutinas imbricadas (anidadas, encadenadas,...): Cuando dentro de una subrutina se llama a otra, dentro de ésta a una tercera, etc. En cada caso hay que guardar la dirección de retorno correcta, para lo cual se usa una memoria tipo pila. Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 3

CS2: DISEÑO Diversificación de instrucciones • MODOS DE DIRECCIONAMIENTO: COP

Direccionamiento

•• IMPLÍCITO o INHERENTE •• INMEDIATO

COP

COP

- - - - - - - -

Mem

Dato

aaaa •• DIRECTO

COP

Dato

aaaa

Mem •• INDIRECTO

COP

Dpto. Tecnología Electrónica

aaaa

bbbb

bbbb

Dato

aaaa

EC

Computador Simple 2 Diseño - 4

CS2: DISEÑO Conjunto de instrucciones Load Accumulator IMmediate

LAIM AC ← inmediato

JuMP

JMP

PC ← ΑΑ

LoaD Accumulator

LDA

AC ← Μ

Branch if Carry Set

BCS

C: PC ← ΑΑ

STore Accumulator

STA

Μ ← AC

Decrement and Branch if Zero

DBZ

Μ ← Μ − 1; Ζ: PC ← Ν + 2

ADD

ADD

AC ← AC + M

CLear Carry

CLC

C←0

SUBtract

SUB

AC ← AC - M

SEt Carry

SEC

C←1

ADD Indirect

ADDI

AC ← AC + Mindirecto

STOP

STOP ΝΟP

ROtate Right

ROR

C, AC ← SHR(AC, C)

Jump to SubRoutine

JSR

push (PC) PC ← AA

ROtate Left

ROL

C, AC ← SHL(AC, C)

Return of Subroutine

RTS

PC ← (pull)

donde: * * * * * * *

inmediato es el dato incluido en la propia instrucción; AA es la dirección de salto incluida

M es la palabra de memoria direccionada, M(dirección incluida) Mindirecto es la M direccionada indirectamente: M( [M(dirección incluida)]7-0) N es la dirección donde se encuentra la instrucción actual (DBZ) AC: ACumulador; C: Carry; PC: Program Counter; Z: Zero C se pone a 0 al ejecutarse LAIM y LDA Pila ociosa: SP apunta a la última palabra escrita; inicialmente, SP = 0

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 5

CS2: DISEÑO R W

Unidad de Datos del Computador simple 2 AB [8]

A7-0 D11-0

TSP, TIR, TPC

RAM 28x12

MAR [8] IS, DS, CLSP

SP [8]

W4, W8, R8

DECODIFICACIÓN Y CONTROL

IPC, WPC RPC, CLPC

IR [12]

IR11-8

XS

PC [8]

DB11-8 “0”

CIM



11-0

DB7-0

DB7-0

DB [12]

DB [12]

11-8

RT [12]

WT,RT,DT

Z A S

Csalida

ALU [12]

[AC]

COUT CC

C

AC [12]

SC WA, RR, RL ZA, RA

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 6

CS2: DISEÑO R W

Novedades en la U. D. del CS2 AB [8]

A7-0 D11-0

Dimensionamiento TSP, TIR, TPC

RAM MAR [8]

IS, DS CLSP

SP [8]

W4, W8, R8

DECODIFICACIÓN Y CONTROL

PC [8]

IPC, WPC RPC, CLPC

IR [12]

IR11-8

XS

28x12

DB11-8 “0”

CIM



11-0

DB7-0

DB7-0

DB [12]

DB [12]

11-8

RT [12]

WT,RT,DT

Z A S

Csalida

ALU [12]

[AC]

COUT CC

C

AC [12]

SC WA, RR, RL ZA, RA

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 7

CS2: DISEÑO R W

Novedades en la U. D. del CS2 AB [8]

Registros

SP [8]

W4, W8, R8

LAIM

PC [8]

IPC, WPC RPC, CLPC

IR [12]

IR11-8

DECODIFICACIÓN Y CONTROL

RAM 28x12

MAR [8]

Subrutina IS, DS CLSP

XS

A7-0 D11-0

TSP, TIR, TPC

DB11-8 “0”

CIM



11-0

DB7-0

DB7-0

DB [12]

DB [12]

11-8

RT [12]

WT,RT,DT

Z A S

Carry Csalida

ALU [12]

[AC]

COUT CC

C

AC [12]

SC WA, RR, RL ZA, RA

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 8

CS2: DISEÑO R W

Novedades en la U. D. del CS2 AB [8]

A7-0 D11-0

TSP, TIR, TPC

RAM 28x12

MAR [8]

Flujo de datos

IS, DS CLSP

SP [8]

W4, W8, R8

DECODIFICACIÓN Y CONTROL

Entradas de Control de estado

IPC, WPC RPC, CLPC Entrada/Salida

IR [12]

IR11-8

XS

PC [8]

DB11-8 “0”

CIM



11-0

DB7-0

DB7-0

DB [12]

DB [12]

11-8

RT [12]

WT,RT,DT

Z A S

Csalida

de IR y PC

ALU [12]

Conexión hacia DB

[AC]

COUT CC

C

AC [12]

SC WA, RR, RL ZA, RA

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Diseño - 9

CS2: DISEÑO Unidad de Control 0 Xs 1 Inicialización

Carta ASM FETCH

F

0 1

COP 2 D (STOP)

ASM LAIM

ASM LDA

ASM STA

Dpto. Tecnología Electrónica

•••

ASM RTS

EC

Computador Simple 2 Diseño - 10

CS2: DISEÑO Unidad de Control 0 Xs Inicialización

1 Inicialización

Xs

Carta ASM FETCH

FETCH

0

LAIM

1

LDA

2

STA

D IR11:IR8 0 1

No Conectar

F COP

F

RTS

2 D (STOP)

ASM LAIM

ASM LDA

ASM STA

Dpto. Tecnología Electrónica

•••

ASM RTS

IR11:IR8

EC

Computador Simple 2 Diseño - 11

ENSAMBLADOR DEL CS2 DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D

El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución.

D

Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.

D

Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.

D Uso a nivel ISP: ensamblador y ejemplo. D

La visión de CS2 como computador.

Bibliografía básica ** C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997. ** C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 0

ENSAMBLADOR DEL CS2 Ensamblador ENSAMBLADOR es un término que sirve para:

 LENGUAJE DE PROGRAMACIÓN con el que se escriben los programas en ensamblador

C PROGRAMA escrito en algún lenguaje que, a partir de un programa en ensamblador, obtiene el código ejecutable de la máquina (máquina es CS2)

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 1

ENSAMBLADOR DEL CS2 Lenguaje ensamblador  En general, un lenguaje ensamblador consta de:  INSTRUCCIONES EJECUTABLES: se escriben con el mnemónico correspondiente y se interpreta al código ejecutable. Ejemplo de CS2: 1010 01000011 DBZ $43  DIRECTIVAS DE ENSAMBLADO O PSEUDOINSTRUCCIONES: son instrucciones del lenguaje ensamblador, pero no de la máquina: no dan lugar a código ejecutable. * Las directivas sirven para DOCUMENTAR y para FACILITAR la escritura de programas: uso de variables, etiquetas, etc.

 Lenguaje ensamblador del CS2:  Cada línea del fichero del programa corresponde a una instrucción o directiva  Las 16 instrucciones del CS2 con el mnemónico ya dado y: * direcciones en hexadecimal con el formato $HH: p. ej. BCS $0B * datos en decimal (p. ej. LAIM 50), hexadecimal (LAIM $32) u octal (LAIM #062)  Las directivas son: * comentarios tras cada “ ; “ * variables para direcciones: EQU nombre $HH * etiquetas: nombre: instrucción ... ... ... ... otrainstrucción nombre

Dpto. Tecnología Electrónica

EC

; esto es un comentario EQU ALTA $AA ciclo1: ADDI ALTA ... ... ... ... JMP ciclo1

Computador Simple 2 Ensamblador- 2

ENSAMBLADOR DEL CS2 Programa ensamblador Ensamblador: programa que interpreta el programa del CS2. Este ensamblador es una aplicación que corre sobre un computador real.

* Detecta errores léxicos, sintácticos y semánticos Fichero en lenguaje ensamblador que programa el usuario. Se usa un editor.

* Se eliminan las directivas * Interpreta las instrucciones del CS2 creando el código ejecutable sobre CS2

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 3

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

comienzo

$HH

inicialización

[M($HH)]

sin mensaje de desbordamiento

00

instrucción 1

n = nº sumandos = 8

01

instrucción 2

...

acumula nuevo sumando

43

Resultado final (sin acarreo)

...



ALTA (iniciar a $EF)

AA

dirección más alta de sumando

CONT (iniciar a 8)

AB

cuenta nº sumandos sin sumar aún

no acarreo

...

busca nuevo sumando sí

DATO n

no último

DATOS (magnitudes) EF

fin

Dpto. Tecnología Electrónica

DATO 1

...

EC

Computador Simple 2 Ensamblador- 4

ENSAMBLADOR DEL CS2 Programa en ensamblador ; Suma de n magnitudes (n = 8): ; M($43) = M($EF) + M($EE) + M($ED) + ... + M($E8) ; ; Variables EQU CONT $AB ; CONT cuenta sumas que faltan EQU ALTA $AA; ALTA señala al sumando siguiente ; ; Inicialización LAIM 8 ;n=8 STA CONT ; CONT es $AB = 8 LAIM $EF STA ALTA ; inicializa ALTA = $EF LAIM 0 ; AC = 0 ; Programa principal ciclo1: ADDI ALTA ; acumula suma BCS fin ; sale si hay acarreo DBZ ALTA ; siguiente sumando DBZ CONT ; salta (N+2) si último JMP ciclo1 STA $43 ; almacena resultado fin: STOP

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 5

ENSAMBLADOR DEL CS2 Programa en ensamblador

Ensamblador

; Suma de n magnitudes (n = 8): ; M($43) = M($EF) + M($EE) + M($ED) + ... + M($E8) ; ; Variables eliminadas EQU CONT $AB ; CONT cuenta sumas que faltan EQU ALTA $AA; ALTA señala al sumador siguiente ; ; Inicialización LAIM 8 ;n=8 STA CONT ; CONT es $AB LAIM $EF ALTA es $AA STA ALTA ; inicializa ALTA = $EF LAIM 0 ; AC = 0 ; Programa principal ciclo1 está en $05 ciclo1: ADDI ALTA ; acumula suma 2ª vez: fin está en $0B BCS fin ; sale si hay acarreo DBZ ALTA ; siguiente sumando DBZ CONT ; salta (N+2) si último JMP ciclo1 STA $43 ; almacena resultado fin está en $0B fin: STOP

Dpto. Tecnología Electrónica

EC

Programa código máquina $HH

mnem

[M]

00

LAIM 8

0000 0000 1000

01

STA $AB

0010 1010 1011

02

LAIM $EF

0000 1110 1111

03

STA $AA

0010 1010 1010

04

LAIM 0

0000 0000 0000

05

ADDI $AA

0101 1010 1010

06

BCS $0B

1001 0000 1011

07

DBZ $AA

1010 1010 1010

08

DBZ $AB

1010 1010 1011

09

JMP $05

1000 0000 0101

0A

STA $43

0010 0100 0011

0B

STOP

1101 (00 ... 00)

Computador Simple 2 Ensamblador- 6

ENSAMBLADOR DEL CS2 Ejercicios de programación con CS2 1. Escribir números en la palabra WORD de memoria (p. ej. $AA) * Se declara la variable WORD:

EQU WORD $AA

1a. Si el número es una magnitud, p. ej. 96:

LAIM 96; también LAIM $60 STA WORD ; WORD = $060

1b. Si el número es negativo (Ca2), p. ej. - 96 Se aprovecha que:

LAIM 96 STA WORD LAIM 0 SUB WORD ;AC=0-96= $FA0 STA WORD ; WORD = $FA0

-N=0-N

Cuestiones:

¿Cómo se introduce un número positivo? ¿Cuáles son el mayor y el menor valor que se pueden introducir según 1a? ¿Y según 1b?

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 7

ENSAMBLADOR DEL CS2 1.c. Si el número es una magnitud mayor de 255, p. ej. 596:

596 = $254

Hay que escribirlo por pasos. Entre otras opciones: * Introducir bit a bit con CLC/SEC seguidos de ROL/ROR * Introducir primero en M el dígito hexadecimal más significativo seguido de 0’s (M=$200), después los dos dígitos menos significativos (AC=$054) y, al fin, sumar M y AC. EQU M $AB LAIM $80 ; AC = 0000 1000 0000 ; En CS2 ahora el carry es C=0, si no, ejecutaría CLC ROL ; AC = 0001 0000 0000 ROL ; AC = 0010 0000 0000 = $200 STA M ; M = $200 LAIM $54 ; AC = $054 ADD M ; AC = $254 STA WORD ; WORD = $254 = 596

Cuestiones: ¿Cuáles son el mayor y el menor valor que se pueden introducir según 1a, b, c?

2. Sobre las subrutinas * Terminan con RTS (el programa, con STOP) ** Hay que tener presente cómo intercambian datos con el programa; usad variables *** Las direcciones de retorno se almacenan en $FF (después, en $FE, y en $FD, ...); hay que evitar , pues, usar las últimas direcciones de memoria para poner datos

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 8

ENSAMBLADOR DEL CS2 3. Bifurcar el flujo de ejecución en función de si AC es nulo o no EQU prov $AA STA prov ; prov = N LAIM 1 ADD prov STA prov ; prov = N + 1 DBZ prov JMP tarea2 JMP tarea1

* Sea [AC]inicial = N Sí

No AC = 0

Tarea 1

Tarea 2

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

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

.

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

Cuestiones (y soluciones) : *

¿Cómo se bifurca si se pregunta por el valor 0 de una posición de memoria? Para prov como posición de memoria, el algoritmo es como el de antes eliminando la primera instrucción STA prov

** ¿Cómo se podría conservar el contenido del AC en este último caso? En primer lugar se guarda AC (p. ej. en M), STA M , después se hace la bifurcación y, por último, se pone LDA M como 1ª instrucción tanto en tarea1: como en tarea2:

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 9

ENSAMBLADOR DEL CS2 4. La resta (SUB) y la bifurcación con BCS: SUB B ; AC ← AC - B Números con signo (Ca2)

Números sin signo (magnitudes)

→ Opera como el sumador/restador

→ Opera como el restador de magnitudes pero el valor de Bwout se escribe en C:

→ Resultado en notación Ca2 → Bit de signo en AC11 → El bit de carry, C, se modifica según los datos → No hay bit de overflow, V

→ Resultado magnitud si C = Bwout = 0 → Resultado en Ca2 si C = Bwout = 1 → El bit C se modifica según los datos, pero no tiene sentido de carry .

Para la suma, ADD o ADDI: El carry C y el acumulador AC muestran el contenido correcto de la suma y del acarreo de salida tanto para magnitudes como para Ca2

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 10

ENSAMBLADOR DEL CS2 4.a. A y B magnitudes: bifurcar según sea o no A > B A>B↔A-B>0 Sí

No A>B

Tarea 1

Tarea 2

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

EQU A $AD EQU B $AE LDA A SUB B ; C = Bwout BCS tarea2 ... ; 1ª instr. de Tarea 1 ... ; 2ª instr. de Tarea 1

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

... sigue ...

os

4.b. A y B n en Ca2: bifurcar según sea o no A > B Bit de signo AC11 * Hacer A -B → : ** AC11 = 1 ↔ A < B ** AC11 = 0 ↔ A > B

LDA A SUB B ; AC11 = Bwout ROL BCS tarea2 ... ; 1ª instr. de Tarea 1

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

... sigue ...

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 11

ENSAMBLADOR DEL CS2 5. Almacenamiento Indirecto: STAI Supongamos que el acumulador en ciclos sucesivos se va a almacenar primero en $9F, después en $9E, después en $9D, etc. Si sólo disponemos de la instrucción STA, en la primera escritura habría que poner STA $9F, en la segunda STA $9E, en la tercera STA $9D, etc., siendo imposible hacer un bucle. Si dispusiéramos de la instrucción STAI se resolvería fácilmente esta cuestión.

* STAI stind, donde stind es la posición de referencia, que en nuestro ejemplo será $F0 * Se trata de “emular” STAI stind mediante una subrutina1: 1/ En dos posiciones de memoria consecutivas ($F0 y $F1) se escriben los códigos máquinas de STA y de RTS como sigue: M($F0) = $2nn Corresponde a STA $nn, siendo “$nn” la primera dirección (la mayor) donde se almacenará el acumulador, en el caso propuesto, es $9F M($F1) = $F00 Corresponde a RTS 2/ Cuando se quiera usar STAI en el programa principal se escribiría: EQU stind $F0 ; la posición elegida stind la situamos en $F0 JSR stind ; se ejecutará M(stind) = STA $nn y, seguidamente, RTS DBZ stind ; M(stind) = M(stind) - 1: se apunta a la siguiente dirección sigue 1 ; sigue ejecutando la tarea deseada tras “STAI” sigue 2 ; etc. 1. El autor de este idea es D. Alejandro Muñoz Rivera, cuando fue alumno de esta asignatura

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Ensamblador- 12

* Ejemplo: Existen 20 ($14) datos almacenados en memoria desde la dirección $EF hacia posiciones decrecientes. Realice un programa CS2 que los reescriba a partir de $9F. EQU fuente $80 EQU cont $81 EQU stind $F0 ; RTS estará en $F1 ; Escribimos código máquina STA nn = $29F LAIM $80 ROL ROL STA stind ; M(stind) = $200 : STA $00 LAIM $9F ADD stind STA stind ; M(stind) = $29F : STA $9F ; Escribimos código máquina para RTS: $F00 LAIM $F0 ROL ROL ROL ROL STA $F1 ; M($F1) = $F00 : RTS ; Iniciamos cont a 20 = $14 y fuente a $EF LAIM $14 STA cont ; cont = número de datos LAIM $EF STA fuente ; fuente = $EF

; Ciclo de movimiento de datos ciclo: LAIM 0 ADDI fuente ; AC = Dato_fuente DBZ fuente ; nueva dirección fuente (- 1) JSR stind ; mueve dato a destino DBZ stind ; nueva dirección destino (- 1) DBZ cont JMP ciclo STOP

Memoria:

$00 $01 ......

Programa

$80 $81

fuente cont

$9E $9F

Destino de datos

$EE $EF $F0 $F1

Datos fuentes $2nn : STA destino $F00 : es RTS

CS2 COMO COMPUTADOR DISEÑO DE UN COMPUTADOR SIMPLE Contenido: D

El modo de operación de los computadores: programa almacenado y ejecución automática; memorias de datos y de programas; ciclos de búsqueda y de ejecución.

D

Diseño del computador simple 1 (CS1) a nivel RT: conjunto de instrucciones; unidad de datos; unidad de control; ejemplo de uso.

D

Diseño del computador simple 2 (CS2): conjunto de instrucciones; unidad de datos; unidad de control.

D

Uso a nivel ISP: ensamblador y ejemplo.

D La visión de CS2 como computador. Bibliografía básica ** C. Baena, I. Gómez, J.I. Escudero, M. Valencia: “Sistemas Digitales”. Servicio de publicaciones del Dpto. Tecnología Electrónica, 1997. ** C. Baena, M.J. Bellido, A. J. Molina, M.P. Parra, M. Valencia: “Problemas de Circuitos y Sistemas Digitales”. Ed. McGraw-Hill Interamericana, 1997.

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Computador- 0

CS2 COMO COMPUTADOR Migración de estructuras: Sistema Digital → Computador Visión Sistema Digital a nivel RT

Mem

CPU Cualificadores Unidad de Datos

Central Processing Unit

Unidad de Control

Comandos

Visión Computador

AB: Address Bus

DB: Data Bus

MEM

CB: Control Bus

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

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Computador- 1

CS2 COMO COMPUTADOR Lo que falta a nivel de instrucciones (ISP)  Instrucciones de más de una palabra:  ciclo FETCH más complejo: Primera búsqueda: código de operación, que informa a la CPU de si hay que buscar más palabras para completar la instrucción. Entonces, nueva búsqueda o ejecución, según corresponda Ver Problema 40

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

 Más tipos de instrucción:  faltan muchas operaciones útiles: lógicas, de salto, comparaciones, etc.  operando sobre distintos tipos de datos: decimales/punto flotante, de distintos tamaños, etc.

 Muchos de estos aspectos los veremos en el MC68000

Dpto. Tecnología Electrónica

EC

Computador Simple 2 Computador- 2

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.