Code 2 Manual

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 87

6.

3 DESCRIPCIN DE UN COMPUTADOR
DIDACTICO ELEMENTAL A NIVEL DE
LENGUAJE MQUINA Y DE LENGUAJE
ENSAMBLADOR

Secciones 6.3 y 6.4 del texto:


Introduccin a la Informtica, 3 Edc.
A.Prieto; A.Lloris, J.C.Torres
McGraw-Hill, 2002

Objetivos
En esta leccin se describe un computador en el nivel de
complejidad de mquina convencional. En este nivel el
computador queda definido y descrito por:

su repertorio de instrucciones en lenguaje


mquina (LM) y
su lenguaje ensamblador (LE).
Estos lenguajes permiten

programar al computador (es decir, establecer las


operaciones que deseamos realice)
reducir al mximo la necesidad de conocer el
computador a nivel de micromquina y niveles
inferiores.
Los lenguajes de bajo nivel (LM y LE) estn totalmente ligados a la
estructura del computador.
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

Objetivos
Haremos la descripcin a nivel de lenguaje mquina y
ensamblador de una nueva versin de un Computador
Didctico Elemental (que denominamos CODE-2), descrito
en su primera versin, bajo el nombre de ODE (CODE-1)
CODE-2 se disea en su totalidad en el Captulo 7.
En lo posible (para el LE) utilizaremos el estndar IEEE 694
Por ltimo incluimos un anlisis comparativo entre las
caractersticas de los lenguajes mquina y ensambladores.

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

Contenidos
6.3 DESCRIPCIN DE UN COMPUTADOR DIDTICO
ELEMENTAL AL NIVEL DE LENGUAJE MQUINA
6.4 DESCRIPCIN DE UN COMPUTADOR DIDTICO
ELEMENTAL AL NIVEL DE LENGUAJE ENSAMBLADOR
6.6 COMPARACIN ENTRE LENGUAJES MQUINA Y
ENSAMBLADOR

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

6.3 Descripcin de CODE-2 a nivel de LM


6.3 DESCRIPCIN DE UN COMPUTADOR DIDTICO
ELEMENTAL AL NIVEL DE LENGUAJE MQUINA
6.3.1 Elementos a los que se tiene acceso desde
el lenguaje mquina
6.3.2 Formatos de instrucciones y de datos
6.3.3 Repertorio de instrucciones mquina
6.3.4 Algunos trucos de programacin
6.3.5 Ejemplos de programas
6.3.6 Utilizacin de CODE-2

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

6.3.1 Elementos a los que se tiene acceso


desde el lenguaje mquina
Longitud de palabra: 16 bits
Elementos:
Banco de 16 registros (RF): r0, r1, ...., rF
9 rD registro de direccin
9 rF registro de puntero de pila
Unidad aritmtico-lgica (ALU)
9 Suma, resta (complemento a 2)
9 NAND
9 Desplazamientos a izda. y dcha.
Biestables indicadores (FF): Z,S,C,V
Memoria principal (M): 216= 64 Kp de 16 bits (128 KB)
Puertos de entrada (256), IP0,...IP255
Puertos de salida (256), OP0,...OP255
Contador de programa (PC), registro instruccin (IR)
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

6.3.1 Elementos a los que se tiene acceso


desde el lenguaje mquina

Procesador

Memoria

Entradas

Salidas

RF

rF

SP

rE

drc.

rD
r1
r0

...

ALU

PC

OPv

64 Kp
=
128 KB

20-nov-01

IPv

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

v = 0,...255

6.3.2 Formato de datos


N=16 bits,
Enteros con operaciones en complemento a 2:
Nmayor= 216-1-1=32.767 ; Nmenor -216-1=-32.768
s
magnitud
signo

Numeracin de los bits de una palabra:


15

20-nov-01

14

13

12

11

10

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

6.3.2 Formato de instrucciones


Formatos
F0

codop

F1

codop

rx

rx

registro destino

F2

codop

cnd

rs, ra

registros fuente

F3

codop

rx

valor inmediato

F4

codop

rx

rs

ra

cnd

condicin de salto o llamada

(4 bits)

(4 bits)

(4 bits)

(4 bits)

codop cdigo de operacin

Tipo de salto o llam ada


Incondicional
Condicional, si biestable de cero es 1
Condicional, si biestable de signo negativo es 1
Condicional, si biestable de acarreo es 1
Condicional, si biestable de desbordam iento es 1
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

R
Z
S
C
V

cnd
0000
0001
0010
0011
0100
9

6.3.3 Repertorio de instrucciones mquina

Codop

Nombre

binario Hex
0000
0 Cargar
1 Almacenar
0001
0010
2 Carga inmediata baja
0011
3 Carga inmediata alta
0100
4 Entrada
0101
5 Salida
0110
6 Suma
7 Resta
0111
1000
8 NAND
1001
9 Desplaza izquierda
1010 A Desplaza derecha
1011 B Desplaza arit. dcha.
1100 C Salto
1101 D Subrutina
1110
E Retorno
1111
F Parar

20-nov-01

Nemnico Parmetros

LD
ST
LLI
LHI
IN
OUT
ADDS
SUBS
NAND
SHL
SHR
SHRA
BCALLRET
HALT

rx,[v]
[v],rx
rx,v
rx,v
rx,IPv
OPv,rx
Rx,rs,ra
rx,rs,ra
rx,rs,ra
rx
rx
rx
cnd
cnd
-

Explicacin

rxM(rD+v)
M(rD+v)rx
rx(15:8)H00; rx(7:0)v
rx(15:8)v
rxIPv
OPvrx
rxrs+ra
rxrs-ra
rx(rsra)
Crx(15), rx(i)rx(i-1), i=15,,1; rx(0)0
Crx(0), rx(i)rx(i+1), i=0,,14; rx(15)0
Crx(0), rx(i)rx(I+1), i=0,,14
Si cnd se cumple, PCrD

Si cnd se cumple, rErE-1, M(rE)PC, PCrD


PC M(rE); rErE+1
Parar

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

10

6.3.3 Repertorio de instrucciones mquina


Codop

Nombre

binario Hex
0000
0 Cargar
0001
1 Almacenar
0010
2 Carga inmediata baja
0011
3 Carga inmediata alta
0100
4 Entrada
0101
5 Salida
0110
6 Suma
0111
7 Resta
1000
8 NAND
1001
9 Desplaza izquierda
1010
A Desplaza derecha
1011
B Desplaza arit. dcha.
C Salto
1100
D Subrutina
1101
E Retorno
1110
F Parar
1111

Nemnico Parmetros Formato

LD
ST
LLI
LHI
IN
OUT
ADDS
SUBS
NAND
SHL
SHR
SHRA
BCALLRET
HALT

rx,[v]
[v],rx
rx,v
rx,v
rx,IPv
OPv,rx
Rx,rs,ra
rx,rs,ra
rx,rs,ra
rx
rx
rx
cnd
cnd
-

F3
F3
F3
F3
F3
F3
F4
F4
F4
F1
F1
F1
F2
F2
F0
F0

N
ciclos
9
9
6
8
8
8
7
7
7
6
6
6
6
6/9
8
6

Tiempo de ejecucin de una instruccin: tinstruccin= niT = ni/F


20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

11

6.3.3 Repertorio de instrucciones mquina


Instrucciones que actan sobre los biestables indicadores
biestable
Instruccin
Z S C V
* * * *
ADDS
* * * *
SUBS
* * - NAND
* * * SHL
* * * SHR
* * * SHRA

Se indican slo las instrucciones que actan sobre los


biestables indicadores
* significa que el biestable se modifica de acuerdo con el
resultado de la operacin
significa que el biestable no se modifica

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

12

6.3.3 Repertorio De Instrucciones Mquina


LD (cargar un registro con un dato de la memoria)
Instruccin: cargar un registro con un dato de la memoria
Cdigo de operacin: 0000 (0 en hexadecimal)
Tipo de formato: F3
Instruccin en nemnico: LD rx,[rD+v] LD rx,[v]
Descripcin de funcin a realizar: rx M(rD+v)
Ejemplo
Formato F3
codop

20-nov-01

rx

0000 0001 1010 0111; 01A7

LD r1,[A7] r1 M(rD+A7)

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

13

6.3.3 Repertorio de instrucciones mquina


Ejemplo

01A7
IR 01A7

LD r1,[A7] r1 M(rD+A7)
Es decir,

Memoria
principal

PC 00AC

r1 M(00E2)

0000 37BA
0001 4C54

Registros
rF 37BA
rE 4C54
rD 003B
r1
r0

A7

00AB 01A7
+

FFFF
BC79

Bus de direcciones

00E2

FFFF

FFFE
FFFF

732C
BC79

00E2
FFFF

Bus de datos

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

14

6.3.3 Repertorio de instrucciones mquina:


tipos de direccionamientos
Direccin de memoria efectiva:
defectiva = rD+v; rx M(defectiva)

Tipo de direccionamiento
Directo

Indirecto a travs de registro


Indexado
Relativo a base

Funcin o contenido
del registro rD
H0000
direccin
Registro ndice (i)
Registro base

Funcin o contenido
del campo v
direccin
H00
Direccin de referencia (DIRR)
desplazamiento

Direccin
efectiva
v
rD
v+rD
RD+v

Los datos se intercambian con la memoria principal


slo con las instrucciones LD (carga) y ST (almacenar)
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

15

6.3.3 Repertorio de Instrucciones Mquina


ST (almacenar el contenido de un registro en la memoria)
Instruccin: almacenar el contenido de un registro en la
memoria
Cdigo de operacin: 0001 (1 en hexadecial)
Tipo de formato: F3
Instruccin en nemnico: ST [rD+v],rx o ST [v],rx
Descripcin de funcin a realizar: M(rD+v) rx
Ejemplo
Formato F3
codop

20-nov-01

rx

M(rD) r0 ST [rD], r0
0001 0000 0000 0000; 1000

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

16

6.3.3 Repertorio de instrucciones mquina


Ejemplo

M(rD) r0 ST [rD], r0
IR 1000

0001 0000 0000 0000; 1000

Memoria
principal

PC 001A
Registros

0000 37BA
0001 4C54

rF 37BA
rE 4C54
rD 003B

0019 1000

003B

003B BC79

r1 FFFF
r0 BC79

FFFE 732C
FFFF BC79

BC79
Bus de direcciones
Bus de datos

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

17

6.3.3 Repertorio de Instrucciones Mquina


LLI (carga inmediata baja)
Instruccin: carga inmediata del byte menos significativo de un
registro
Cdigo de operacin: 0010 (2 en hexadecial)
Tipo de formato: F3
Instruccin en nemnico: LLI rx,v
Descripcin de funcin a realizar: rx(15:8) H00; rx(7:0) v
Ejemplo
Formato F3
codop

20-nov-01

rx

rF H0001 LLI rF, 01


0010 1111 0000 0001; 2F01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

18

6.3.3 Repertorio de instrucciones mquina


Ejemplo

rF H0001 LLI rF, 01


0010 1111 0000 0001; 2F01

IR 2F01
PC 003D

0000 37BA
0001 4C54

Registros
rF 0001
rE 4C54
rD 003B

0001

r1 FFFF
r0 BC79

20-nov-01

Memoria
principal

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

003C 2F01
00E2

FFFF

FFFE 732C
FFFF BC79

19

6.3.3 Repertorio de Instrucciones Mquina


LHI (carga inmediata alta)
Instruccin: carga inmediata del byte ms significativo de un
registro
Cdigo de operacin: 0011 (3 en hexadecial)
Tipo de formato: F3
Instruccin en nemnico: LHI rx,v
Descripcin de funcin a realizar: rx(15:8)v ; el byte menos
significativo no se modifica (conserva su valor previo)
Ejemplo
Formato F3
codop

20-nov-01

rx

rF H7F-- LHI rF, 7F


0011 1111 0111 1111; 3F7F

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

20

6.3.3 Repertorio de instrucciones mquina


Ejemplo

rF H7F-- LHI rF, 07


0011 1111 0111 1111; 3F7F

IR 3F7F
PC 003E

0000 37BA
0001 4C54

Registros
rF 7F01
rE 4C54
rD 003B

7F--

r1 FFFF
r0 BC79

20-nov-01

Memoria
principal

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

003D 3F7F
00E2

FFFF

FFFE 732C
FFFF BC79

21

6.3.3 Repertorio de Instrucciones Mquina


IN (entrada)

Instruccin: captar el contenido de un puerto de entrada


Cdigo de operacin: 0100 (4 en hexadecial)
Tipo de formato: F3
Instruccin en nemnico: IN rx,IPv
Descripcin de funcin a realizar: rxIPv
Ejemplo
Formato F3

codop

20-nov-01

rx

r1 IP2 IN r1, IP2


0100 0001 0000 0010; 4102

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

22

6.3.3 Repertorio de instrucciones mquina


Ejemplo

r1 IP2 IN r1, IP2


0100 0001 0000 0010; 4102
IR 4102
PC 0024

Memoria
principal

Registros

0000 37BA
0001 4C54

rF 37BA
rE 4C54
rD 003B

0023 4102

r1 3BCF
r0 BC79

OP1 1000

003B BC79
FFFE 732C
FFFF BC79

3BCF

20-nov-01

IP2 3BCF

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

Bus de datos

23

6.3.3 Repertorio de Instrucciones Mquina


OUT (salida)
Instruccin: llevar el contenido de un registro a un puerto
de salida
0101 (5 en hexadecial)
Cdigo de operacin:
Tipo de formato: F3
Instruccin en nemnico: OUT OPv,rx
Descripcin de funcin a realizar: OPv rx
Ejemplo
Formato F3
codop

20-nov-01

rx

OP1 rD OUT OP1, rD


0101 1101 0000 0001; 5D01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

24

6.3.3 Repertorio de instrucciones mquina


Ejemplo

OP1 rD OUT OP1, rD


0101 1101 0000 0001; 5D01

IR 5D01
PC 0025

Memoria
principal

Registros

0000 37BA
0001 4C54

rF 37BA
rE 4C54
rD 003B

0024 5D01

r1 3BCF
r0 BC79

Bus de datos

20-nov-01

IP2 3BCF

OP1 003B

003B BC79
FFFE 732C
FFFF BC79

003B

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

25

6.3.3 Repertorio de Instrucciones Mquina


ADDS (suma)

Instruccin: suma del contenido de 2 registros


Cdigo de operacin:
0110 (6 en hexadecial)
Tipo de formato: F4
Instruccin en nemnico: ADDS rx,rs,ra
Descripcin de funcin a realizar: rx rs+ra
Ejemplo

codop

20-nov-01

Formato F4
rx
rs

ra

r1 rD+rE ADDS r1, rD,rE


0110 0001 1101 1110; 61DE

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

26

6.3.3 Repertorio de instrucciones mquina


Ejemplo

r1 rD+rE ADDS r1, rD,rE


0110 0001 1101 1110; 61DE

IR 61DE
Memoria
principal

PC 003D
Registros

0000 37BA
0001 4C54

rF 0001
rE 4C54
rD 003B

003C 61DE

r1 4C8F
r0 BC79

00E2
003B

4C54

+
4C8F

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

FF
Z 0
S 0
C 0
V 0

FFFF

FFFE 732C
FFFF BC79

27

6.3.3 Repertorio de Instrucciones Mquina


SUBS (resta)

Instruccin: resta del contenido de 2 registros


Cdigo de operacin:
0111 (7 en hexadecial)
Tipo de formato: F4
Instruccin en nemnico: SUBS rx,rs,ra
Descripcin de funcin a realizar: rx rs-ra
Ejemplo

codop

20-nov-01

Formato F4
rx
rs

ra

r0 rD-rE SUBS r0, rD,rE


0111 0000 1101 1110; 70DE

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

28

6.3.3 Repertorio de instrucciones mquina


Ejemplo

r0 rD-rE SUBS r1, rD,rE

IR 70DE

0111 0000 1101 1110; 70DE

PC 003E

Memoria
principal

Registros

0000 37BA
0001 4C54

rF 0001
rE 4C54
rD E03B

003D 70DE

r1 4C8F
r0 93E7

rD
rE
r0

E03B
4C54

20-nov-01

1110 0000 0011 1011


- 0100 1100 0101 0100
1001 0011 1110 0111

93E7

00E2

4C54

E03B

FF
Z 0
S 1
C 0
V 0

FFFE 732C
FFFF BC79

93E7

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

FFFF

29

6.3.3 Repertorio de Instrucciones Mquina


NAND (operacin lgica NAND)

Instruccin: resta del contenido de 2 registros


Cdigo de operacin: 1000 (8 en hexadecial)
Tipo de formato: F4
Instruccin en nemnico: NAND rx,rs,ra
Descripcin de funcin a realizar: rx (rsra)

c=(ab)

0
0
1
1

0
1
0
1

1
1
1
0

Ejemplo
codop

20-nov-01

Formato F4
rx
rs

ra

r1 (rdrE) NAND r0, rD,rE


1000 0000 1101 1110; 80DE

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

30

6.3.3 Repertorio de instrucciones mquina


Ejemplo
IR 81DE

r1 (rdrE) NAND r0, rD,rE

Memoria
principal

PC 003F

1000 0000 1101 1110; 80DE


a

c=(ab)

0
0
1
1

0
1
0
1

1
1
1
0

Registros

0000 37BA
0001 4C54

rF 0001
rE 4C54
rD E03B

003E 81DE

r1 BFEF
r0 4C19

00E2
E03B

4C54

NAND
BFEF

rd
rE
r0

E03B
4C54

20-nov-01

1110 0000 0011 1011


NAND 0100 1100 0101 0100
1011 1111 1110 1111

FF
Z 0
S 1
C 0
V 0

FFFE 732C
FFFF BC79

BFEF

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

FFFF

31

Operacin lgica NAND

a
0
0
1
1

b a NAND b
1
0
1
1
1
0
0
1

a
b

20-nov-01

a b a NAND 1
01
1
11
0
a NAND 1
Complemento de a, o
a invertido

x NAND 1 = 0 x=1

x NAND 1 = 1 x=0

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

32

6.3.3 Repertorio de Instrucciones Mquina


SHL (desplazamiento a izquierda)

Instruccin: desplazamiento a izda. de los bits de un rtro.


Cdigo de operacin:
1001 (9 en hexadecial)
Tipo de formato: F1
Instruccin en nemnico: SHL rx
Descripcin de funcin a realizar:
Crx(15), rx(i)rx(i-1), i=15,,1; rx(0)0
SHL

codop

Formato F1
rx
-

0
Ejemplo
-

rD rD SHL rD
1001 1101 ---- ----; 9D00

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

33

6.3.3 Repertorio de instrucciones mquina


Ejemplo

rD rD SHL rD

IR 9D00

Memoria
principal

PC 0040

1001 1101 ---- ----; 9D00

0000 37BA
0001 4C54

Registros

003F 9D00

rF 0001
rE 4C54
rD C076
r1 FFEF
r0 4C19

00E2
E03B

FFFE 732C
FFFF BC79

rD inicial
rD final
20-nov-01

E03B

- 1110 0000 0011 1011


1 1100 0000 0111 0110

FFFF

C076

FF
Z 0
S 1
C 1
V 0

C076

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

34

6.3.3 Repertorio de Instrucciones Mquina


SHR (desplazamiento a derecha)
Instruccin: desplazamiento a dcha. de los bits de un rtro.
Cdigo de operacin: 1010 (A en hexadecial)
Tipo de formato: F1
Instruccin en nemnico: SHR rx
Descripcin de funcin a realizar:
crx(0), rx(i)rx(i+1), i=0,,14; rx(15)0

SHR

codop

Formato F1
rx
-

Ejemplo
-

rD rD SHR rD
1010 1101 ---- ----; AD00

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

35

6.3.3 Repertorio de instrucciones mquina


Ejemplo

rD rD SHR rD
1010 1101 ---- ----; AD00

IR AD00

Memoria
principal

PC 0041

0000 37BA
0001 4C54

Registros
rF 0001
rE 4C54
rD 603B
r1 FFEF
r0 4C19

0040 AD00
00E2
C076

603B

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

FF
Z 0
S 0
C 0
V 0

FFFF

FFFE 732C
FFFF BC79

36

6.3.3 Repertorio de Instrucciones Mquina


SHRA (desplazamiento aritmtico a derecha)
Instruccin: desplazamiento aritmtico a dcha. de los bits de un rtro.
Cdigo de operacin:
1011 (B en hexadecial)
Tipo de formato: F1
Instruccin en nemnico: SHRA rx
Descripcin de funcin a realizar:
crx(0), rx(i)rx(i+1), i=0,,14

SHRA

codop

Formato F1
rx
-

Ejemplo
-

rD arD SHRA rD
1011 1101 ---- ----; BD00

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

37

6.3.3 Repertorio de instrucciones mquina


Ejemplo

rD arD SHRA rD
1011 1101 ---- ----; BD00

IR BD00

Memoria
principal

PC 0042

0000 37BA
0001 4C54

Registros
rF 0001
rE 4C54
rD E03B
r1 FFEF
r0 4C19

0041 AD00
00E2
C076

a
E03B

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

FF
Z 0
S 1
C 0
V 0

FFFF

FFFE 732C
FFFF BC79

38

6.3.3 Repertorio de Instrucciones Mquina


B- (salto)
Instruccin: ruptura de secuencia (salto)
Cdigo de operacin:
1100 (C en hexadecial)
Tipo de formato: F2
Instruccin en nemnico:
BR (salto incondicional)
BZ (salto si Z=1)
BS (salto si S=1)
BC (salto si C=1)
BV (salto si V=1)
Descripcin de funcin a realizar: Si cnd es incondicional o si
se cumple la condicin, entonces PCrD

codop
20-nov-01

Formato F2
cnd
-

Ejemplo
-

Salto incondicional a 0041

LLI rD,41
BR
A.Prieto

Introduccin a la Informtica
(c) McGraw-Hill / Interamericana

2D41
C000
39

6.3.3 Repertorio de instrucciones mquina


Ejemplo
Salto incondicional a 0041

LLI rD,41
BR

IR C0AA

2D41
C000

PC 0041

Memoria
principal
0000 37BA
0001 4C54

Registros
rF 0001
rE F7FD
rD 0041
r1 FFEF
r0 4C19

0041

004F C0AA
F7FC
F7FD
F7FE
F7FF

0000
007C
37AB
43C2

FFFE 732C
FFFF BC79

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

40

6.3.3 Repertorio de Instrucciones Mquina


CALL- (llamada a subrutina)
Instruccin: llamada a subrutina
Cdigo de operacin:
1101 (D en hexadecial)
Tipo de formato: F2
Instruccin en nemnico:
CALLR (llamada incondicional)
CALLZ (llamada si Z=1)
CALLS (llamada si S=1)
CALLC (llamada si C=1)
CALLV (llamada si V=1)
Descripcin de funcin a realizar: Si cnd es incondicional o si se
cumple la condicin, entonces:
rErE-1, M(rE)PC, PCrD

codop

Formato F2
cnd
-

20-nov-01

Ejemplo
-

Llamada incondicional a 0041

LLI rD,41
CALLR
Introduccin a la Informtica
A.Prieto
(c) McGraw-Hill / Interamericana

2D41
C000
41

6.3.3 Repertorio de instrucciones mquina


Ejemplo
Llamada a C03B si Z=1

LLI rD,3B
LHI rD,C0
CALLZ

2D3B
3DC0
D100
Registros

Memoria
principal

IR D100
PC C03B

0000 37BA
0001 4C54
C03B

0043

rF 0001
rE F7FC
rD C03B
r1 FFEF
r0 4C19

F7FC
F7FD
F7FE
F7FF

0043
007C
37AB
43C2

pila

FFFE 732C
FFFF BC79

ojo!:
El valor inicial de rD era F7FD

20-nov-01

0042 D100

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

42

6.3.3 Repertorio de Instrucciones Mquina


RET (retorno de subrutina)

Instruccin: retorno de subrutina


Cdigo de operacin: 1110 (E en hexadecial)
Tipo de formato: F0
Instruccin en nemnico:
RET
Descripcin de funcin a realizar:

PC M(rE); rErE+1

codop

20-nov-01

Formato F0
-

Ejemplo

RET
1110 0000 0000 0000

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

E000

43

6.3.3 Repertorio de instrucciones mquina


Ejemplo

RET
1110 1111 1111 1111

EFFF

IR

EFFF

PC 0043

0000 37BA
0001 4C54

Registros
rF 0001
rE F7FD
rD C03B
r1 FFEF
r0 4C19

Memoria
principal

0043

C0F7

EFFF

F7FC
F7FD
F7FE
F7FF

0043
007C
37AB
43C2

pila

FFFE 732C
FFFF BC79

ojo!:
El valor inicial de rD era F7FC

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

44

6.3.3 Repertorio de Instrucciones Mquina


HALT (parada)

Instruccin: parada
Cdigo de operacin: 1111 (F en hexadecial)
Tipo de formato: F0
Instruccin en nemnico:
HALT
Descripcin de funcin a realizar:
CODE-2 entra en estado de espera

codop

20-nov-01

Formato F0
-

Ejemplo

HALT
1111 0000 0000 0000

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

F000

45

6.3.3 Repertorio de Instrucciones Mquina


Ejemplo

HALT
1111 0000 0000 0000

F000
SI

CONTINUAR

Espera

Fase de captacin de
instruccin

Fase de ejecucin de
instruccin

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

46

6.3.4 Algunos trucos de programacin


Programacin: descripcin de un algoritmo en
trminos de las instrucciones del repertorio.
Objetivos (por lo general contrapuestos):
Tiempo de ejecucin el menor posible
Capacidad de memoria la menor posible

Dar valores iniciales a registros.


Instruccin mquina
Nemnico
hex
Binario
LLI r0,00
2000
0010 0000 0000 0000
LLI r1,01
2101
0010 0001 0000 0001

Explicacin
Cargar r0 con H0000
Cargar r1 con H0001

En los ejercicios que siguen vamos a suponer que r0


contiene H0000 y r1 H0001
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

47

6.3.4 Algunos trucos de programacin


Copiar el contenido de un registro en otro.
Instruccin mquina
Nemnico
hex
binario
ADDS rE,r4,r0 6E40 0110 1110 0100 0000

Explicacin
rEr4+0

Detectar si un nmero es cero o negativo.


Instruccin m quina
Nem nico
hex
binario
ADDS r4,r4,r0 6440 0110 0100 0100 0000
BZ

C100 1100 0001 0000 0000

20-nov-01

explicacin
Sumar 0 al nmero para activar
los biestables
Saltar si el biestable de cero (Z)
se activa

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

48

6.3.4 Algunos trucos de programacin


No hacer nada (consumir 7 ciclos de reloj).
Instruccin mquina
Nemnico
hex
binario
ADDS r4,r4,r0 6440 0110 0100 0100 0000

Explicacin
r4r4+0

Contadores ascendente y descendente.


Instruccin mquina
Nemnico hex
binario
ADDS r4,r4,r1 6441 0110 0100 0100 0001
SUBS r5,r5,r1 7551 0111 0101 0101 0001

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

explicacin
Incrementar de r4 en 1
Decrementar r5 en 1

49

6.3.4 Algunos trucos de programacin


Comparar dos nmeros.
Saltar:
a F300 si r5 = r4
a 547C si r5 < r4, y
a 737c si r5>r4
Instruccin mquina
Nemnico
hex
binario
SUBS rF,r5,r4 7F54 0111 1111 0101
LLI rD,00
2D00 0010 1101 0000
LLH rD,F3
3DF3 0011 1101 1111
BZ
C100 1100 0001 0000
LLI rD,7C
2D7C 0010 1101 0111
LLH rD,54
3D54 0011 1101 0101
BS
C200 1100 0010 0000
LLH rD,73
3D73 0011 1101 0111
BR
C000 1100 0000 0000
20-nov-01

explicacin
0100
0000
0011
0000
1100
0100
0000
0011
0000

Comparar r5 con r4
Direccin de salto si son iguales
Saltar si son iguales (Z=1)
Direccin de salto si r4>r5
Saltar si r4>r5 (S=1)
Direccin de salto si r4<r5
Salto incondicional

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

50

6.3.5 Ejemplos de programa

Metodologa para hacer un programa en LM:


Describir el algoritmo a implementar por medio de
un organigrama o pseudocdigo.
Asignacin de memoria:
de registros y de posiciones de memoria para los
parmetros y variables utilizadas en el programa
de la direccin de inicio del programa.
Redactar el programa en nemnicos.
Codificar las instrucciones en cdigo mquina
(hexadecimal o binario)
Documentar el programa (comentarios para su uso)

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

51

6.3.5 Ejemplo de programa


Programa de carga en memoria:
Especificaciones:
Cuando aparezca en la salida OP1 el mensaje
DCDC, debe darse la direccin inicial de carga.
Cuando aparezca en la salida OP1 la direccin de
carga, debe darse el contenido a memorizar en
esa direccin.

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

52

6.3.5 Ejemplo de programa


inicio

Organigrama

Parmetros iniciales:
DCDC, 1, 0

Salida en OP1 del mensaje DCDC

Entrada de direccin inicial de carga


(DC)
a
Salida en OP1 del valor de DC

Entrada de palabra a
memorizar (PM)

Memorizar palabra
M(DC) PM

Incrementar DC
DC DC + 1

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

53

6.3.5 Ejemplo de programa


Asignacin de memoria

Parm etro o
variable
0001
0000
DCDC
DC
PM
Program a

20-nov-01

Registro

Posicin
de
m em oria

r1
r0
rA
r2
r3
00A0

Com entario
Para el contador
Para pasar el valor de un rgtro. a otro
Mensaje para pedir direccin de carga
Direccin de carga
Palabra a m em orizar
Direccin de carga del program a

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

54

6.3.5 Ejemplo de programa


Programa en nemnicos
Rf. Dircc
00A0
00A1
00A2
00A3
00A4
00A5
(a) 00A6
00A7
00A8
00A9
00AA
00AB
00AC

20-nov-01

Instruccin
Nemnico
LLI rA,DC
LHI rA,DC
LLI r1,01
LLI r0,00
OUT OP1,rA
IN r2,IP1
OUT OP1,r2
IN r3,IP1
ADDS rD,r2,r0
ST 00,r3
ADDS r2,r2,r1
LLI rD,A6
BR

Explicacin
Parte baja del mensaje
Parte alta del mensaje
Parmetro 0001 en r1
Parmetro 0000 en r0
Salida de mensaje DCDC
Entrada de direccin de comienzo (DC)
Salida de direccin de carga
Entrada del valor a cargar
Pasar la direcc. de carga al rD
Memorizar palabra
Incrementar en 1 direccin de carga
Cargar en rD direccin de salto
Salto incondicional a (a)

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

55

6.3.5 Ejemplo de programa


Programa en cdigo mquina
Rf. Dircc

(a)

00A0
00A1
00A2
00A3
00A4
00A5
00A6
00A7
00A8
00A9
00AA
00AB
00AC

20-nov-01

Instruccin
Nemnico
hex
LLI rA,DC
2ADC
LHI rA,DC
3ADC
LLI r1,01
2101
LLI r0,00
2000
OUT OP1,rA
5A01
IN r2,IP1
4012
OUT OP1,r2
5201
IN r3,IP1
4301
ADDS rD,r2,r0 6D20
ST 00,r3
1300
ADDS r2,r2,r1 6221
LLI rD,A6
2DA6
BR
C000

Explicacin
Parte baja del mensaje
Parte alta del mensaje
Parmetro 0001 en r1
Parmetro 0000 en r0
Salida de mensaje DCDC
Entrada de direccin de comienzo (DC)
Salida de direccin de carga
Entrada del valor a cargar
Pasar la direcc. de carga al rD
Memorizar palabra
Incrementar en 1 direccin de carga
Cargar en rD direccin de salto
Salto incondicional a (a)

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

56

6.3.5 Ejemplo de programa


Comentarios para el uso del programa
Program a de carga en m em oria
Posicin inicial del program a 00A0
Datos solicitados por el
IP1 Cuando aparezca en OP1 el mensaje
program a
DCCD, dar la direccin de inicio de la
carga (DC)
Cuando aparezca en OP1 una direccin
de memoria, dar la informacin a carga
en ella (PC)
Resultados dados por el
OP1 Mensaje DCDC (para dar DC)
program a
Direccin de carga (para dar PC)

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

57

6.3.5 Ejemplo de programa


Programa de suma de dos tablas.
Especificaciones:
Sumar los elementos, i, de dos tablas (T1 y T2),
generando otra tabla, T3, de forma que:
T3(i) = T1(i) + T2(i)
Parmetros:
9 Longitud de las tablas:
9 Direccin de inicio de T1:
9 Direccin de inicio de T2:
9 Direccin de inicio de T3:

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

nT = H20
d1=H0040
d2=H0080
d3= H00C0

58

6.3.5 Ejemplo de programa


inicio

Algoritmo (organigrama).

Parmetros iniciales:
0,1,
nT=0020, i=0

Leer dato de T1
r3 M(d1+i)

Leer dato de T2
r4 M(d2+i)

Suma de datos
r5 r3 + r4

Memorizar suma en T3
M(d3+i) r5

Incrementar i
ii+1

Comparar nT con i
nT - i

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

si
fin

S=1

no

59

6.3.5 Ejemplo de programa


Asignacin de registros y de memoria
Parmetro Rtro Posicin
Comentario
o variable
memoria
Para pasar el valor de un registro a otro
r0
0000
Para incrementar el ndice i
r1
0001
Nmero de elementos de la tabla
r2
nT
Elemento de la tabla T1
r3
T1(i)
Elemento de la tabla T2
r4
T2(i)
Elemento de la tabla T3
r5
T3(i)
Registro de indexacin
rC
i
Programa
00A0
Direccin de carga del programa

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

60

6.3.5 Ejemplo de programa


Redaccin del programa en nemnicos
Dirc
0010
0011
0012
0013
a 0014
0015
0016
0017
0018
0019
001A
001B
001C
001D
001E
b 001F

20-nov-01

Instruccin
Explicacin
Nemnico
LLI r0,00
Inicializar r0 a 0
LLI r1,01
Inicializar r1 a 1
LLI r2,20
Tamao de tabla: nT=H20
LLI rC,00
Inicializacin del ndice: i=0
ADDS rD,rC,r0 Pasar el ndice al registro de direccin
LD r3,[40]
Llevar a r3 el elemento de T1
LD r4,[80]
Llevar a r4 el elemento de T2
ADDS r5,r3,r4 Suma de elementos de T1 y T2 en r5
ST [C0],r5
Almacenar nuevo elemento de T3
ADDS rC,rC,r1 Incrementar el ndice
LLI rD,1F
Cargar en rD direccin de salto (final)
SUBS rF,r2,rC Comparar nT con i
BS
Si S=1 el programa concluye, salta a (b)
LLI rD,14
Cargar en rD direccin de salto (continuar)
BR
Salto a (a)
HALT
Final del programa
Introduccin a la Informtica A.Prieto
(c) McGraw-Hill / Interamericana

61

6.3.5 Ejemplo de programa


Redaccin del programa en nemnicos
Dirc
0010
0011
0012
0013
a 0014
0015
0016
0017
0018
0019
001A
001B
001C
001D
001E
b 001F

20-nov-01

Instruccin
Nemnico
LLI r0,00
LLI r1,01
LLI r2,20
LLI rC,00
ADDS rD,rC,r0
LD r3,[40]
LD r4,[80]
ADDS r5,r3,r4
ST [C0],r5
ADDS rC,rC,r1
LLI rD,1F
SUBS rF,r2,rC
BS
LLI rD,14
BR
HALT

mq.
HEX
2000
2101
2220
2C00
6DC0
0340
0480
6534
15C0
6CC1
2DAF
7F2C
C200
2DA4
C000
F000

Explicacin
Inicializar r0 a 0
Inicializar r1 a 1
Tamao de tabla: nT=H20
Inicializacin del ndice: i=0
Pasar el ndice al registro de direccin
Llevar a r3 el elemento de T1
Llevar a r4 el elemento de T2
Suma de elementos de T1 y T2 en r5
Almacenar nuevo elemento de T3
Incrementar el ndice
Cargar en rD direccin de salto (final)
Comparar nT con i
Si S=1 el programa concluye, salta a (b)
Cargar en rD direccin de salto (continuar)
Salto a (a)
Final del programa

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

62

6.3.5 Ejemplo de programa


Comentarios para uso del programa

P r o g r a m a d e c a r g a e n m e m o r ia
P o s i c i n in ic ia l d e l p r o g r a m a

0010

E l p r o g r a m a s u m a la s t a b la s ( d e H 2 0 e le m e n t o s ) u b ic a d a s a
p a r t ir d e la s p o s ic io n e s H 4 0 y H 8 0 , e le m e n t o a e le m e n t o ,
a lm a c e n a d o la t a b la r e s u lt a n t e a p a r t ir d e la p o s ic i n H C 0

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

63

6.3.6 Utilizacin de CODE-2

CODE

on/off

Direccin /OP1

Paso a paso
Contenido / OP2

direccin
IR

PC
Z

ALU

C
V

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

registros
cargar
ejecutar
continuar

64

6.3.6 Utilizacin de CODE-2


Elementos:
Interruptores
Teclado hexadecimal (IP1)
Puertos de salida (OP1 y OP2)
Teclas de rdenes
Visualizadores
on/off
Pilotos

CODE

Direccin /OP1

Paso a paso
Contenido / OP2

direccin
IR

PC
Z

ALU

C
V

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

registros
cargar
ejecutar
continuar

65

6.3.6 Utilizacin de CODE-2


Elementos:
Interruptores:
ON/OFF
Paso a paso

Puertos de salida (OP1 y OP2)


OP1. Usualmente se usa para visualizar
direcciones
OP2. Usualmente para visualizar
contenidos

CODE

on/off

Direccin /OP1

Paso a paso
Contenido / OP2

direccin
IR

PC
Z

ALU

C
V

20-nov-01

registros
cargar
ejecutar
continuar

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

66

6.3.6 Utilizacin de CODE-2

CODE

on/off

Elementos:
Teclas de rdenes:
Direccin
Registros
Cargar
Ejecutar
Continuar

Direccin /OP1

Paso a paso
Contenido / OP2

direccin
IR

PC
Z

ALU

C
V

20-nov-01

registros
cargar
ejecutar
continuar

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

67

6.3.6 Utilizacin de CODE-2


Elementos:
Visualizadores
Contenido IP1
Puertos de salida OP1 y OP2
Rgtro. instruccin (IR)
Contador de Progr. (PC)

uertos de salida OP1 y OP2

ontenido IP1

on/off
Paso a paso

CODE

Direccin /OP1

Contenido / OP2

Rgtro. instruccin (IR)


Contador de Progr. (PC)

direccin

IR

PC

ALU

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

registros
cargar

ejecutar

continuar

68

6.3.6 Utilizacin de CODE-2

CODE

on/off
Paso a paso
Elementos:
Pilotos
ON/OFF
Biestables indicadores: Z,
S, C, V

Direccin /OP1

Contenido / OP2

direccin

IR

PC

ALU

Z
S

C
V

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

registros
cargar
ejecutar
continuar

69

6.3.6 Utilizacin de CODE-2

Tareas realizables (las teclas de rdenes provocan


interrupciones que lanzan rutinas del monitor):

Seleccin de una posicin de memoria.


Cargar informacin en memoria.
Seleccin de un registro.
Cargar informacin en un registro.
Ejecutar un programa.

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

70

6.3.6 Utilizacin de CODE-2


Seleccionar una posicin de memoria.
Teclear direccin y pulsar DIRECCIN.
Accin: En OP1 aparece la direccin tecleada y en el
OP2 el contenido de esa posicin.
Pulsar CONTINUAR
Accin: se avanza una posicin de memoria: aparece
direccin (OP1) y contenido (OP2) de la siguiente
posicin.
Cargar una informacin en una posicin de memoria.
Seleccionar una direccin
Teclear la informacin a memorizar y
Pulsa CARGAR.
Accin:Se memoriza la informacin tecleada, y se
avanza en una unidad la direccin.
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

71

6.3.6 Utilizacin de CODE-2


Seleccionar los registros.
Pulsar REGISTROS
Accin: en OP1 aparece el cdigo del registro 0; es decir
0000, y en OP2 su contenido.
Pulsar sucesivamente CONTINUAR,
Accin: van apareciendo en OP2 el cdigo del siguiente
registro (0001, 0002, ....,000F) y en OP2 su contenido.
Cargar una informacin en un registro.
Seleccionar un registro,
Teclear la informacin a memorizar y
Pulsar CARGAR.
Accin: Se guarda en el registro seleccionado la
informacin tecleada, y se avanza al siguiente registro.
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

72

6.3.6 Utilizacin de CODE-2

Ejecutar un programa.
Seleccionar la direccin de memoria de la primera instruccin
del programa,
Se pulsa EJECUTAR.
Accin: Se inicia la ejecucin del programa (se ejecuta
una instruccin de salto a la direccin de inicio del
programa:
PC direccin del programa)

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

73

6.3.6 Utilizacin de CODE-2


Ejemplo: carga y ejecucin de un programa.
Interruptor Teclado hex
ON/OFF
0010
2000
2101
2220
2C00
6DC0
0340
0480
6534
15C0
6CC1
2DAF
7F2C
C200
2DA4
C000
F000
0010
20-nov-01

rden

Explicacin
Conexin de CODE-2
DIRECCIN 1 direccin del programa
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
Carga del programa
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
EJECUTAR Ejecutar el programa

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

74

6.4 Descripcin de CODE-2 a nivel de LE


6.4 DESCRIPCIN DE UN COMPUTADOR DIDTICO

ELEMENTAL AL NIVEL DE LENGUAJE ENSAMBLADOR

6.4.1 Formato de las instrucciones de


ensamblador
6.4.2 Directivas o pseudoinstrucciones
6.4.3 Ejemplos de instrucciones en ensamblador
6.4.4 Ambigedades
6.4.5 Ejemplo de programa en ensamblador

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

75

6.4 Lenguaje ensamblador

Caractersticas de lenguajes mquina


VENTAJAS del lenguaje mquina:
Directamente utilizable por el computador
Mnimo volumen de memoria utilizado
Capacidad mnima de los programas
Mxima velocidad de ejecucin (el programador se adapta a
la arquitectura hardware de que dispone)
INCONVENIENTES del lenguaje mquina:
Repertorio de instrucciones muy reducido e inflexible
Redaccin del programa muy laboriosa
9 cdigos numricos
9 asignacin de memoria hecha por el programador, etc.
Programas muy poco legibles
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

76

6.4 Lenguajes ensambladores


Caractersticas
Mantienen las ventajas y aminoran los inconvenientes de los LM:
Utiliza nombres simblicos, en vez de nmeros:
cdigos de operacin binarios nemnicos
direcciones numricas
nombres de variables
No es ejecutable directamente por el procesador. Se necesita
un programa traductor (ensamblador) que transforme de LE a
LM. El ensamblador:
cambia los nemnicos por cdigos de operacin
hace la asignacin de registros y memoria, asociando a
cada variable, constante o direccin simblica una
direccin numrica
elimina los comentarios
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

77

Ensamblador de CODE
(IEEE 694). Formatos
[ETIQUETA:] NEMNICO

OPERANDO

Ejemplo: P1: ADDS P,P,uno

[;COMENTARIO]

;incrementar P

Etiqueta: campo alfanumrico opcional acabado con :, que se


puede utilizar para identificar la posicin de las
instrucciones (posiciones de salto, etc.)
Nemnico: Nombre simblico (nemnico) que identifica la instruccin
(LD, ST, LLI, LHI,...)
Operandos: Parmetros asociados a la instruccin (registros, valores
inmediatos y puertos de E/S o nombres simblicos de
parmetros o variables).
Comentario: campo alfanumrico opcional, precedido por ;, para
hacer comentarios que hagan ms legible el programa.
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

78

Ensamblador de CODE
Instrucciones
Observaciones:
rx, rs, ra es un registro (r0 a rF o R0 a RF) o un nombre simblico de
registro (definido con EQU) o una variable-registro (definida con DR).
v es un nmero de 0 a 255, en base decimal (Dnmero),
hexadecimal (Hnmero o nmero), octal (Qnmero) o binaria
(Bnmero).
etiqueta es la etiqueta de la instruccin a la que se desea hacer la
bifurcacin.
dir_etiqueta significa la direccin donde se encuentra la etiqueta
especificada.
Nombre

Ensamblador
CODE-2

LD rx,[rD+v]
Cargar
ST [rD+v],rx
Almacenar
Carga inmediata baja LLI rx,v
Carga inmediata alta LHI rx,v
IN rx,IPv
Entrada
OUT OPv,rx
Salida
20-nov-01

Ejemplo

Significado del ejemplo

LD r4,[01]
ST [00],rE
LLI r7,07
LHI r7, AB
IN rD,IP1
OUT OPD13

r4 M(rD+H01)
M(rD+H00)rE
r7(15:8)H00; r7(7:0)H07
r7(15:8)HAB
rDIP1
OP0Drx

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

79

Ensamblador de CODE
Instrucciones

Nombre

Ensamblador
CODE-2

Ejemplo

Significado del ejemplo

Cargar
Almacenar
Carga inmediata baja
Carga inmediata alta
Entrada
Salida
Suma
Resta
NAND
Desplaza izquierda
Desplaza derecha
Desplaza arit. dcha.

LD rx,[rD+v]
ST [rD+v],rx
LLI rx,v
LHI rx,v
IN rx,IPv
OUT OPv,rx
ADDS rx,rs,ra
SUBS rx,rs,ra
NAND rx,rs,ra
SHL rx
SHR rx
SHRA rx

LD r4,[01]
ST [00],rE
LLI r7,07
LHI r7, AB
IN rD,IP1
OUT OPD13
ADDS rD,r3,r4
SUBS rF,r1,r0
NAND r7,r3,r5
SHL r6
SHR r5
SHRA r8

r4 M(rD+H01)
M(rD+H00)rE
r7(15:8)H00; r7(7:0)H07
r7(15:8)HAB
rDIP1
OP0Drx
rDr3+r4
rFr1-r0
r7(r3r5)
Cr6(15), r6(i)r6(i-1), i=15,,1; r6(0)0
Cr5(0), r5(i)r5(i+1), i=0,,14; r5(15)0
Cr8(0), r8(i)r8(i+1), i=0,,14

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

80

Ensamblador de CODE
Instrucciones

Nombre

Ensamblador
CODE-2

Salto incondicional
Salto si resultado cero
Salto si resultado negativo
Salto si resultado con acarreo
Salto si resultado con desbordamiento
Llamada incondicional a subrutina
Llamada si resultado cero
Llamada si resultado negativo
Llamada si resultado con acarreo
Llamada si resultado con desbordamiento
Retorno
Parar

BR etiqueta
BZ etiqueta
BS etiqueta
BC etiqueta
BV etiqueta
CALLR etiqueta
CALLZ etiqueta
CALLS etiqueta
CALLC etiqueta
CALLV etiqueta
RET
HALT

20-nov-01

Ejemplo

Significado del ejemplo

BR P7
BZ alfa
BS P3
BC a
BV b
CALLR P1
CALLZ a
CALLS b
CALLC f
CALLV c

rDdir_P7; PCrD
Si Z=1 , rDdir_alfa; PCrD
Si S=1 , rDdir_P3; PCrD
Si C=1 , rDdir_a; PCrD
Si V=1 , rDdir_b; PCrD
rDdir_P1, rErE-1, M(rE)PC, PCrD
Si Z=1, rDdir_a, rErE-1, M(rE)PC, PCrD
Si S=1, rDdir_b, rErE-1, M(rE)PC, PCrD
Si C=1, rDdir_f, rErE-1, M(rE)PC, PCrD
Si V=1, rDdir_c, rErE-1, M(rE)PC, PCrD
PC M(rE); rErE+1
Parar

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

81

Ensamblador de CODE
Directivas
Directivas o pseudoinstrucciones: informacin para el
ensamblador (traductor):
ORG (origen) para especificar la direccin de
memoria de inicio del programa
EQU (equiparar) para dar nombres simblicos a
registros, puertos y valores inmediatos (v).
DW (define word) para definir una variable en la
memoria
DR (define register) para definir una variable en un
registro
INCLUDE (incluir) para incluir, en cualquier punto,
un archivo en ensamblador.
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

82

Ensamblador de CODE
Ejemplo de programa
Enunciado del problema
A partir de la posicin A730 de la memoria de CODE-2 se tiene
una cadena de caracteres Unicode, que finaliza con un carcter
CR (retorno de carro). Hacer un programa que sustituya en la
cadena los caracteres punto y coma (;) por coma (,) y
proporcione por el puerto de salida OP2 el nmero de
sustituciones que se efecten.
Parmetros y variables
CR, carcter de control CR: H000D.
PYC, carcter punto y coma (;): H003B.
C, carcter coma (,): H002C.
UNO, constante 1.
P, puntero de la tabla. Su valor inicial debe ser HA730.
EC, carcter a analizar de la cadena.
NC, nmero de cambios. Debe inicializarse a 0.
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

83

Ensamblador de CODE
Ejemplo de programa
Descripcin del programa
Paso 1)
Captar un elemento de la cadena: ECM(P)
Paso 2)
Comparar con CR; es decir hacer: EC-CR
Paso 3)
Si Z=1 is al Paso 11, sino continuar
Paso 4)
Comparar con PYC; es decir hacer: EC-PYC
Paso 5)
Si Z=1 is al Paso 8, sino continuar
Paso 6)
Incrementar el puntero de la tabla: PP+1
Paso 7)
Ir al Paso 1.
Paso 8)
Cambiar el carcter de la cadena: M(P) C
Paso 9)
Incrementar la variable NC: NCNC+1
Paso 10) Ir al Paso 6
Paso 11) OP2 el valor de NC
Paso 12) Fin del programa
20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

84

Ensamblador de CODE
Ejemplo de programa: Programa en ensamblador
CR
PYC
C
uno
P
NC
0
EC
P1:

P6:
P8:

P11:
20-nov-01

ORG
DR
DR
DR
DR
DR
DR
DR
EQU
ADDS
LD
SUBS
BZ
SUBS
BZ
ADDS
BR
ADDS
ST
ADDS
BR
OUT
HALT

HA000
H000D
H003B
H002C
H1
HA730
H0
0
r7
rD,P,0
EC,[rD]
rF,EC,CR
P11
rF,EC,PYC
P8
P,P,uno
P1
rD,P,0
[rD],C
NC,NC,uno
P6
OP02,NC

; el programa comienza en A000


; carcter CR
; carcter ;
; carcter ,
; constante 1
; puntero de la cadena
; nmero de sustituciones
; constante 0
; elemento de la cadena en anlisis
; llevar a rD el puntero de la cadena
; captar carcter de la cadena a analizar
; comparar con carcter CR
; saltar a Paso 11 si EC=CR
; comprobar si EC es ;
; si EC=; saltar a Paso 8
; actualizar el puntero de la cadena
; salto incondicional a Paso 1
; llevar a rD el puntero de la cadena
; sustituir en la cadena ; por ,
; incrementar en 1 el nmero de cambios
; salto incondicional a Paso 6
; dar en salida el nmero de cambios
; fin de programa

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

85

Ensamblador de CODE
Ejemplo de programa

Comentarios para uso del programa:


El programa CPYC, cambia los punto y comas por comas
en una cadena de caracteres que se inicia en la posicin
A730. El programa se almacena a partir de la posicin
A000 de la memoria, y proporciona por el puerto OP2 el
nmero de cambios efectuados.

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

86

Ensamblador de CODE:
Otro ejemplo

Enunciado:
De la posicin PINI=H1000 a la posicin PFIN = H2000
de la memoria de CODE se encuentra una tabla de datos.
Hacer un programa que proporcione por el puerto de
salida 2 (OP2) el valor mayor de los datos de la tabla, y
por el puerto de salida 1 (OP1) la direccin donde se
encuentra.

20-nov-01

Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

87

También podría gustarte