You are on page 1of 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 rD registro de direccin rF registro de puntero de pila Unidad aritmtico-lgica (ALU) Suma, resta (complemento a 2) NAND 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
RF

Memoria

Entradas

Salidas

rF rE rD ... r1 r0

SP drc.
Z S

M PC
64 Kp = 128 KB

IPv

OPv

ALU

C V

v = 0,...255

20-nov-01

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

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 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

20-nov-01

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

6.3.2 Formato de instrucciones


Formatos F0 F1 F2 F3 F4 codop codop codop codop codop (4 bits) rx cnd rx rx (4 bits) rs (4 bits) v ra (4 bits)

codop cdigo de operacin rx rs, ra v cnd registro destino registros fuente valor inmediato condicin de salto o llamada

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

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

Nombre

Nemnico Parmetros

Explicacin

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 -

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

20-nov-01

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

10

6.3.3 Repertorio de instrucciones mquina


Codop

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

Nombre

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
Introduccin a la Informtica A.Prieto (c) McGraw-Hill / Interamericana

20-nov-01

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 rx v

0000 0001 1010 0111; 01A7

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

20-nov-01

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

13

6.3.3 Repertorio de instrucciones mquina


Ejemplo

01A7

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


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

IR 01A7 PC 00AC Memoria principal 0000 37BA 0001 4C54 A7 + 1 00AB 01A7 00E2 FFFE FFFF 00E2 FFFF 2 FFFF 732C BC79

Bus de direcciones 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)
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

Tipo de direccionamiento
Directo

Direccin efectiva
v rD v+rD RD+v

Indirecto a travs de registro Indexado Relativo a base

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 rx v

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

20-nov-01

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
0001 0000 0000 0000; 1000
IR 1000 PC 001A Registros rF 37BA rE 4C54 rD 003B r1 FFFF r0 BC79 BC79
Bus de direcciones Bus de datos

Memoria principal 0000 37BA 0001 4C54

003B

0019 1000 1 003B BC79 FFFE 732C FFFF BC79

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 rx v

rF H0001 LLI rF, 01


0010 1111 0000 0001; 2F01

20-nov-01

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 Registros rF 0001 rE 4C54 rD 003B r1 FFFF r0 BC79 0001 Memoria principal 0000 37BA 0001 4C54 003C 2F01 00E2 FFFF

FFFE 732C FFFF BC79

20-nov-01

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

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 rx v

rF H7F-- LHI rF, 7F


0011 1111 0111 1111; 3F7F

20-nov-01

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 Memoria principal 0000 37BA 0001 4C54 7F-003D 3F7F 00E2 FFFF

Registros rF 7F01 rE 4C54 rD 003B r1 FFFF r0 BC79

FFFE 732C FFFF BC79

20-nov-01

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

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 rx v

r1 IP2 IN r1, IP2


0100 0001 0000 0010; 4102

20-nov-01

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 Registros rF 37BA rE 4C54 rD 003B r1 3BCF r0 BC79 Memoria principal 0000 37BA 0001 4C54 0023 4102 003B BC79 FFFE 732C FFFF BC79 IP2 3BCF OP1 1000

3BCF

Bus de datos

20-nov-01

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

23

6.3.3 Repertorio de Instrucciones Mquina


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

OP1 rD OUT OP1, rD


0101 1101 0000 0001; 5D01

20-nov-01

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

24

6.3.3 Repertorio de instrucciones mquina


Ejemplo

OP1 rD OUT OP1, rD


IR 5D01 PC 0025 Registros rF 37BA rE 4C54 rD 003B r1 3BCF r0 BC79 Memoria principal 0000 37BA 0001 4C54 0024 5D01 003B BC79 FFFE 732C FFFF BC79 IP2 3BCF OP1 003B

0101 1101 0000 0001; 5D01

Bus de datos

003B

20-nov-01

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 Formato F4 rx rs ra

r1 rD+rE ADDS r1, rD,rE


0110 0001 1101 1110; 61DE

20-nov-01

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 PC 003D Registros rF 0001 rE 4C54 rD 003B r1 4C8F r0 BC79 003B 4C54 FF Z 0 S 0 C 0 V 0 Memoria principal 0000 37BA 0001 4C54 003C 61DE 00E2 FFFF

FFFE 732C FFFF BC79

+
4C8F

20-nov-01

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

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 Formato F4 rx rs ra

r0 rD-rE SUBS r0, rD,rE


0111 0000 1101 1110; 70DE

20-nov-01

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


0111 0000 1101 1110; 70DE
Registros rF 0001 rE 4C54 rD E03B r1 4C8F r0 93E7

IR 70DE PC 003E Memoria principal 0000 37BA 0001 4C54 003D 70DE E03B 4C54 FF Z 0 S 1 C 0 V 0 00E2 FFFF

FFFE 732C FFFF BC79

rD rE r0

E03B 4C54

1110 0000 0011 1011 - 0100 1100 0101 0100 1001 0011 1110 0111

93E7

93E7
29

20-nov-01

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

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)
Ejemplo codop Formato F4 rx rs ra

a 0 0 1 1

b 0 1 0 1

c=(ab) 1 1 1 0

r1 (rdrE) NAND r0, rD,rE


1000 0000 1101 1110; 80DE

20-nov-01

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

30

6.3.3 Repertorio de instrucciones mquina


Ejemplo

r1 (rdrE) NAND r0, rD,rE


1000 0000 1101 1110; 80DE
Registros

IR 81DE PC 003F Memoria principal 0000 37BA 0001 4C54 003E 81DE 00E2 E03B 4C54 FF Z 0 S 1 C 0 V 0 FFFF

a 0 0 1 1

b 0 1 0 1

c=(ab) 1 1 1 0

rF 0001 rE 4C54 rD E03B r1 BFEF r0 4C19

FFFE 732C FFFF BC79

NAND
BFEF

rd rE r0

E03B 4C54

1110 0000 0011 1011 NAND 0100 1100 0101 0100 1011 1111 1110 1111

BFEF
31

20-nov-01

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

Operacin lgica NAND

a 0 0 1 1
a b

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

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


20-nov-01
Introduccin a la Informtica A.Prieto (c) McGraw-Hill / Interamericana

a 1

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

0
Ejemplo -

codop

Formato F1 rx -

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
1001 1101 ---- ----; 9D00
Registros rF 0001 rE 4C54 rD C076 r1 FFEF r0 4C19

IR 9D00 PC 0040

Memoria principal 0000 37BA 0001 4C54 003F 9D00 00E2 FFFF

E03B FF Z 0 S 1 C 1 V 0

FFFE 732C FFFF BC79

rD inicial rD final
20-nov-01

E03B

C - 1110 0000 0011 1011 1 1100 0000 0111 0110

C076

C076
34

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

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
c 0
Ejemplo -

SHR

codop

Formato F1 rx -

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 PC 0041 Registros rF 0001 rE 4C54 rD 603B r1 FFEF r0 4C19 C076 FF Z 0 S 0 C 0 V 0 Memoria principal 0000 37BA 0001 4C54 0040 AD00 00E2 FFFF

FFFE 732C FFFF BC79

603B

20-nov-01

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

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
c
Ejemplo -

SHRA

codop

Formato F1 rx -

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
Registros rF 0001 rE 4C54 rD E03B r1 FFEF r0 4C19

IR BD00 PC 0042

Memoria principal 0000 37BA 0001 4C54 0041 AD00 00E2 FFFF

C076 FF Z 0 S 1 C 0 V 0

FFFE 732C FFFF BC79

a
E03B

20-nov-01

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

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
Formato F2 cnd Ejemplo Salto incondicional a 0041

codop
20-nov-01

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

LLI rD,41 BR A.Prieto

2D41 C000 39

6.3.3 Repertorio de instrucciones mquina


Ejemplo

LLI rD,41 BR

Salto incondicional a 0041

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

IR C0AA PC 0041

Memoria principal 0000 37BA 0001 4C54 004F C0AA F7FC F7FD F7FE F7FF 0000 007C 37AB 43C2

0041

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
Formato F2 cnd Ejemplo

codop

20-nov-01

LLI rD,41 CALLR Introduccin a la Informtica A.Prieto


(c) McGraw-Hill / Interamericana

Llamada incondicional a 0041

2D41 C000 41

6.3.3 Repertorio de instrucciones mquina


Ejemplo

LLI rD,3B LHI rD,C0 CALLZ

Llamada a C03B si Z=1

2D3B 3DC0 D100


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

IR D100 PC C03B

Memoria principal 0000 37BA 0001 4C54

C03B

0043

0042 D100 F7FC F7FD F7FE F7FF 0043 007C 37AB 43C2

pila

ojo!: El valor inicial de rD era F7FD


1

FFFE 732C FFFF BC79

20-nov-01

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

Formato F0 -

RET 1110 0000 0000 0000

Ejemplo

E000

20-nov-01

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

43

6.3.3 Repertorio de instrucciones mquina


Ejemplo

RET 1110 1111 1111 1111

EFFF

IR

EFFF

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

Memoria principal 0000 37BA 0001 4C54 C0F7 F7FC F7FD F7FE F7FF EFFF 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

Formato F0 -

HALT 1111 0000 0000 0000

Ejemplo

F000

20-nov-01

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

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 explicacin Sumar 0 al nmero para activar los biestables Saltar si el biestable de cero (Z) se activa

20-nov-01

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 explicacin Incrementar de r4 en 1 Decrementar r5 en 1

20-nov-01

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

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
50

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

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


Organigrama
inicio

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

Registro r1 r0 rA r2 r3

Posicin de m em oria

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

00A0

20-nov-01

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 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)

20-nov-01

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

55

6.3.5 Ejemplo de programa


Programa en cdigo mquina
Rf. Dircc 00A0 00A1 00A2 00A3 00A4 00A5 00A6 00A7 00A8 00A9 00AA 00AB 00AC 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)
56

(a)

20-nov-01

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

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: Longitud de las tablas: Direccin de inicio de T1: Direccin de inicio de T2: Direccin de inicio de T3:

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

20-nov-01

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

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

si fin

S=1

no

20-nov-01

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

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

20-nov-01

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

20-nov-01

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

on/off Paso a paso

CODE

Direccin /OP1

Contenido / OP2

direccin
IR

0
PC Z S C V

1 5 9 D

2 6 A E

3 7 B F

registros cargar ejecutar continuar

4 8 C

ALU

20-nov-01

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

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
Paso a paso
Contenido / OP2

CODE

Direccin /OP1

direccin
IR

0
PC Z S C V

1 5 9 D

2 6 A E

3 7 B F

registros cargar ejecutar continuar

4 8 C

ALU

20-nov-01

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

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

on/off Paso a paso

CODE

Direccin /OP1

Contenido / OP2

direccin
IR

0
PC Z S C V

1 5 9 D

2 6 A E

3 7 B F

registros cargar ejecutar continuar

4 8 C

ALU

20-nov-01

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

66

6.3.6 Utilizacin de CODE-2


Elementos: Teclas de rdenes: Direccin Registros Cargar Ejecutar Continuar
direccin
IR

on/off Paso a paso

CODE

Direccin /OP1

Contenido / OP2

0
PC Z S C V

1 5 9 D

2 6 A E

3 7 B F

registros cargar ejecutar continuar

4 8 C

ALU

20-nov-01

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


CODE

on/off Paso a paso

Direccin /OP1

Contenido / OP2

Rgtro. instruccin (IR) Contador de Progr. (PC)

direccin
IR

0
PC Z S C V

1 5 9 D

2 6 A E

3 7 B F

registros cargar ejecutar continuar

4 8 C

ALU

20-nov-01

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

68

6.3.6 Utilizacin de CODE-2

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


IR PC

CODE

Direccin /OP1

Contenido / OP2

direccin registros cargar ejecutar continuar

0 4 8 C

1 5 9 D

2 6 A E

3 7 B F

Z S C V

ALU

20-nov-01

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

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

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
74

rden

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

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

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 cdigos numricos 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

6.4 Lenguaje ensamblador

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 [;COMENTARIO]

Ejemplo: P1: ADDS P,P,uno

;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 Ejemplo LD r4,[01] ST [00],rE LLI r7,07 LHI r7, AB IN rD,IP1 OUT OPD13 Significado del ejemplo r4 M(rD+H01) M(rD+H00)rE r7(15:8)H00; r7(7:0)H07 r7(15:8)HAB rDIP1 OP0Drx
79

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

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

Ensamblador de CODE Instrucciones

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

Ensamblador CODE-2 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

Ejemplo 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

Significado del ejemplo 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 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

Ensamblador CODE-2 BR etiqueta BZ etiqueta BS etiqueta BC etiqueta BV etiqueta CALLR etiqueta CALLZ etiqueta CALLS etiqueta CALLC etiqueta CALLV etiqueta RET HALT

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

Significado del ejemplo 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

20-nov-01

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: 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
85

P6: P8:

P11:
20-nov-01

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

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

You might also like