You are on page 1of 87

6.

3 DESCRIPCIÓN DE UN COMPUTADOR
DIDACTICO ELEMENTAL A NIVEL DE
LENGUAJE MÁQUINA Y DE LENGUAJE
ENSAMBLADOR

Secciones 6.3 y 6.4 del texto:


Introducción a la Informática, 3ª Edc.
A.Prieto; A.Lloris, J.C.Torres
McGraw-Hill, 2002
Objetivos

‰ En esta lección se describe un computador en el nivel de


complejidad de máquina convencional. En este nivel el
computador queda definido y descrito por:
ƒ su repertorio de instrucciones en lenguaje
máquina (LM) y
ƒ su lenguaje ensamblador (LE).
‰ Estos lenguajes permiten
ƒ programar al computador (es decir, establecer las
operaciones que deseamos realice)
ƒ reducir al máximo la necesidad de conocer el
computador a nivel de micromáquina y niveles
inferiores.
‰ Los lenguajes de bajo nivel (LM y LE) están totalmente ligados a la
estructura del computador.
20-nov-01 Introducción a la Informática A.Prieto 2
(c) McGraw-Hill / Interamericana
Objetivos

‰ Haremos la descripción a nivel de lenguaje máquina y


ensamblador de una nueva versión de un Computador
Didáctico Elemental (que denominamos CODE-2), descrito
en su primera versión, bajo el nombre de ODE (CODE-1)

‰ CODE-2 se diseña en su totalidad en el Capítulo 7.

‰ En lo posible (para el LE) utilizaremos el estándar IEEE 694

‰ Por último incluimos un análisis comparativo entre las


características de los lenguajes máquina y ensambladores.

20-nov-01 Introducción a la Informática A.Prieto 3


(c) McGraw-Hill / Interamericana
Contenidos

‰ 6.3 DESCRIPCIÓN DE UN COMPUTADOR DIDÁTICO


ELEMENTAL AL NIVEL DE LENGUAJE MÁQUINA

‰ 6.4 DESCRIPCIÓN DE UN COMPUTADOR DIDÁTICO


ELEMENTAL AL NIVEL DE LENGUAJE ENSAMBLADOR

‰ 6.6 COMPARACIÓN ENTRE LENGUAJES MÁQUINA Y


ENSAMBLADOR

20-nov-01 Introducción a la Informática A.Prieto 4


(c) McGraw-Hill / Interamericana
6.3 Descripción de CODE-2 a nivel de LM

‰ 6.3 DESCRIPCIÓN DE UN COMPUTADOR DIDÁTICO


ELEMENTAL AL NIVEL DE LENGUAJE MÁQUINA
ƒ 6.3.1 Elementos a los que se tiene acceso desde
el lenguaje máquina
ƒ 6.3.2 Formatos de instrucciones y de datos
ƒ 6.3.3 Repertorio de instrucciones máquina
ƒ 6.3.4 Algunos trucos de programación
ƒ 6.3.5 Ejemplos de programas
ƒ 6.3.6 Utilización de CODE-2

20-nov-01 Introducción a la Informática A.Prieto 5


(c) McGraw-Hill / Interamericana
6.3.1 Elementos a los que se tiene acceso
desde el lenguaje máquina

‰ Longitud de palabra: 16 bits


‰ Elementos:
¾ Banco de 16 registros (RF): r0, r1, ...., rF
9 rD registro de dirección
9 rF registro de puntero de pila
¾ Unidad aritmético-lógica (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 instrucción (IR)

20-nov-01 Introducción a la Informática A.Prieto 6


(c) McGraw-Hill / Interamericana
6.3.1 Elementos a los que se tiene acceso
desde el lenguaje máquina

Procesador
Memoria Entradas Salidas

RF
rF SP
rE drc.
rD
Z M IPv OPv
...
S
r1 64 Kp
PC
r0 ALU C =
128 KB
V
v = 0,...255

20-nov-01 Introducción a la Informática A.Prieto 7


(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

magnitud

signo

Numeración 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 Introducción a la Informática A.Prieto 8


(c) McGraw-Hill / Interamericana
6.3.2 Formato de instrucciones
Formatos

F0 codop
• codop código de operación
F1 codop rx -
• rx registro destino
F2 codop cnd - • rs, ra registros fuente
F3 codop rx v • v valor inmediato

F4 codop rx rs ra • cnd condición de salto o llamada

(4 bits) (4 bits) (4 bits) (4 bits)

Tipo de salto o llam ada - cnd


Incondicional R 0000
Condicional, si biestable de cero es 1 Z 0001
Condicional, si biestable de signo negativo es 1 S 0010
Condicional, si biestable de acarreo es 1 C 0011
Condicional, si biestable de desbordam iento es 1 V 0100

20-nov-01 Introducción a la Informática A.Prieto 9


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Codop
Nombre Nemónico Parámetros Explicación
binario Hex
0000 0 Cargar LD rx,[v] rx←M(rD+v)
0001 1 Almacenar ST [v],rx M(rD+v)←rx
0010 2 Carga inmediata baja LLI rx,v rx(15:8)←H’00; rx(7:0)←v
0011 3 Carga inmediata alta LHI rx,v rx(15:8)←v
0100 4 Entrada IN rx,IPv rx←IPv
0101 5 Salida OUT OPv,rx OPv←rx
0110 6 Suma ADDS Rx,rs,ra rx←rs+ra
0111 7 Resta SUBS rx,rs,ra rx←rs-ra
1000 8 NAND NAND rx,rs,ra rx←(rs·ra)’
1001 9 Desplaza izquierda SHL rx C←rx(15), rx(i)←rx(i-1), i=15,…,1; rx(0)←0
1010 A Desplaza derecha SHR rx C←rx(0), rx(i)←rx(i+1), i=0,…,14; rx(15)←0
1011 B Desplaza arit. dcha. SHRA rx C←rx(0), rx(i)←rx(I+1), i=0,…,14
1100 C Salto B- cnd Si cnd se cumple, PC←rD
1101 D Subrutina CALL- cnd Si cnd se cumple, rE←rE-1, M(rE)←PC, PC←rD
1110 E Retorno RET - PC← M(rE); rE←rE+1
1111 F Parar HALT - Parar

20-nov-01 Introducción a la Informática A.Prieto 10


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Codop Nº
Nombre Nemónico Parámetros Formato
binario Hex ciclos
0000 0 Cargar LD rx,[v] F3 9
0001 1 Almacenar ST [v],rx F3 9
0010 2 Carga inmediata baja LLI rx,v F3 6
0011 3 Carga inmediata alta LHI rx,v F3 8
0100 4 Entrada IN rx,IPv F3 8
0101 5 Salida OUT OPv,rx F3 8
0110 6 Suma ADDS Rx,rs,ra F4 7
0111 7 Resta SUBS rx,rs,ra F4 7
1000 8 NAND NAND rx,rs,ra F4 7
1001 9 Desplaza izquierda SHL rx F1 6
1010 A Desplaza derecha SHR rx F1 6
1011 B Desplaza arit. dcha. SHRA rx F1 6
1100 C Salto B- cnd F2 6
1101 D Subrutina CALL- cnd F2 6/9
1110 E Retorno RET - F0 8
1111 F Parar HALT - F0 6

Tiempo de ejecución de una instrucción: tinstrucción= ni·T = ni/F

20-nov-01 Introducción a la Informática A.Prieto 11


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

‰ Instrucciones que actúan sobre los biestables indicadores


biestable
Instrucción
Z S C V
ADDS * * * *
SUBS * * * *
NAND * * - -
SHL * * * -
SHR * * * -
SHRA * * * -

• Se indican sólo las instrucciones que actúan sobre los


biestables indicadores
• * significa que el biestable se modifica de acuerdo con el
resultado de la operación
• – significa que el biestable no se modifica

20-nov-01 Introducción a la Informática A.Prieto 12


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio De Instrucciones Máquina

‰ LD (cargar un registro con un dato de la memoria)


ƒ Instrucción: cargar un registro con un dato de la memoria
ƒ Código de operación: 0000 (0 en hexadecimal)
ƒ Tipo de formato: F3
ƒ Instrucción en nemónico: LD rx,[rD+v] ó LD rx,[v]
ƒ Descripción de función a realizar: rx ← M(rD+v)

Ejemplo
Formato F3 0000 0001 1010 0111; 01A7
codop rx v
LD r1,[A7] ⇒ r1 ← M(rD+A7)

20-nov-01 Introducción a la Informática A.Prieto 13


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo
01A7
IR 01A7
LD r1,[A7] ⇒ r1 ← M(rD+A7) Memoria
PC 00AC
principal
Es decir, r1 ← M(00E2)
Registros 0000 37BA
0001 4C54
rF 37BA A7
rE 4C54 00AB 01A7
rD 003B
+ 1 00E2 FFFF
r1 FFFF
r0 BC79 FFFE 732C
FFFF BC79

Bus de direcciones 00E2

Bus de datos FFFF

20-nov-01 Introducción a la Informática A.Prieto 14


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina:
tipos de direccionamientos

‰ Dirección de memoria efectiva:


defectiva = rD+v; rx ← M(defectiva)

Función o contenido Función o contenido Dirección


Tipo de direccionamiento
del registro rD del campo v efectiva
Directo H’0000 dirección v
Indirecto a través de registro dirección H’00 rD
Indexado Registro índice (i) Dirección de referencia (DIRR) v+rD
Relativo a base Registro base desplazamiento RD+v

‰ Los datos se intercambian con la memoria principal


sólo con las instrucciones LD (carga) y ST (almacenar)

20-nov-01 Introducción a la Informática A.Prieto 15


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ ST (almacenar el contenido de un registro en la memoria)


ƒ Instrucción: almacenar el contenido de un registro en la
memoria
ƒ Código de operación: 0001 (1 en hexadecial)
ƒ Tipo de formato: F3
ƒ Instrucción en nemónico: ST [rD+v],rx o ST [v],rx
ƒ Descripción de función a realizar: M(rD+v) ← rx

Ejemplo
Formato F3
M(rD) ← r0 ⇒ ST [rD], r0
codop rx v
0001 0000 0000 0000; 1000

20-nov-01 Introducción a la Informática A.Prieto 16


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo

M(rD) ← r0 ⇒ ST [rD], r0
IR 1000
0001 0000 0000 0000; 1000
PC 001A Memoria
principal

Registros 0000 37BA


0001 4C54
rF 37BA
rE 4C54 0019 1000
rD 003B 003B
1 003B BC79
r1 FFFF
r0 BC79 FFFE 732C
FFFF BC79
BC79
Bus de direcciones

Bus de datos

2
20-nov-01 Introducción a la Informática A.Prieto 17
(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ LLI (carga inmediata baja)


ƒ Instrucción: carga inmediata del byte menos significativo de un
registro
ƒ Código de operación: 0010 (2 en hexadecial)
ƒ Tipo de formato: F3
ƒ Instrucción en nemónico: LLI rx,v
ƒ Descripción de función a realizar: rx(15:8) ← H’00; rx(7:0) ← v

Ejemplo
Formato F3
rF ← H’0001 ⇒ LLI rF, 01
codop rx v
0010 1111 0000 0001; 2F01

20-nov-01 Introducción a la Informática A.Prieto 18


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo

rF ← H’0001 ⇒ LLI rF, 01


0010 1111 0000 0001; 2F01 IR 2F01
PC 003D Memoria
principal

Registros 0000 37BA


0001 4C54
rF 0001 0001
rE 4C54 003C 2F01
rD 003B
00E2 FFFF
r1 FFFF
r0 BC79 FFFE 732C
FFFF BC79

20-nov-01 Introducción a la Informática A.Prieto 19


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ LHI (carga inmediata alta)


ƒ Instrucción: carga inmediata del byte más significativo de un
registro
ƒ Código de operación: 0011 (3 en hexadecial)
ƒ Tipo de formato: F3
ƒ Instrucción en nemónico: LHI rx,v
ƒ Descripción de función a realizar: rx(15:8)←v ; el byte menos
significativo no se modifica (conserva su valor previo)

Ejemplo
Formato F3 rF ← H’7F-- ⇒ LHI rF, 7F
codop rx v
0011 1111 0111 1111; 3F7F

20-nov-01 Introducción a la Informática A.Prieto 20


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo

rF ← H’7F-- ⇒ LHI rF, 07


IR 3F7F
0011 1111 0111 1111; 3F7F Memoria
PC 003E
principal

Registros 0000 37BA


0001 4C54
rF 7F01 7F--
rE 4C54 003D 3F7F
rD 003B
00E2 FFFF
r1 FFFF
r0 BC79 FFFE 732C
FFFF BC79

20-nov-01 Introducción a la Informática A.Prieto 21


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ IN (entrada)
ƒ Instrucción: captar el contenido de un puerto de entrada
ƒ Código de operación: 0100 (4 en hexadecial)
ƒ Tipo de formato: F3
ƒ Instrucción en nemónico: IN rx,IPv
ƒ Descripción de función a realizar: rx←IPv

Ejemplo
Formato F3 r1 ← IP2 ⇒ IN r1, IP2
codop rx v
0100 0001 0000 0010; 4102

20-nov-01 Introducción a la Informática A.Prieto 22


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

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 0023 4102 IP2 3BCF OP1 1000
rD 003B
003B BC79
r1 3BCF
r0 BC79 FFFE 732C
FFFF BC79

3BCF Bus de datos

20-nov-01 Introducción a la Informática A.Prieto 23


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ OUT (salida)
ƒ Instrucción: llevar el contenido de un registro a un puerto
de salida
ƒ Código de operación: 0101 (5 en hexadecial)
ƒ Tipo de formato: F3
ƒ Instrucción en nemónico: OUT OPv,rx
ƒ Descripción de función a realizar: OPv ← rx

Ejemplo
Formato F3 OP1 ← rD ⇒ OUT OP1, rD
codop rx v
0101 1101 0000 0001; 5D01

20-nov-01 Introducción a la Informática A.Prieto 24


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

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 0024 5D01 IP2 3BCF OP1 003B
rD 003B
003B BC79
r1 3BCF
r0 BC79 FFFE 732C
FFFF BC79

Bus de datos 003B

20-nov-01 Introducción a la Informática A.Prieto 25


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ ADDS (suma)
ƒ Instrucción: suma del contenido de 2 registros
ƒ Código de operación: 0110 (6 en hexadecial)
ƒ Tipo de formato: F4
ƒ Instrucción en nemónico: ADDS rx,rs,ra
ƒ Descripción de función a realizar: rx ← rs+ra

Ejemplo
Formato F4 r1 ← rD+rE ⇒ ADDS r1, rD,rE
codop rx rs ra
0110 0001 1101 1110; 61DE

20-nov-01 Introducción a la Informática A.Prieto 26


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo

r1 ← rD+rE ⇒ ADDS r1, rD,rE


IR 61DE
0110 0001 1101 1110; 61DE
Memoria
PC 003D
principal

0000 37BA
Registros
0001 4C54
rF 0001
rE 4C54 003C 61DE
rD 003B
00E2 FFFF
r1 4C8F 003B 4C54
r0 BC79 FFFE 732C
FF FFFF BC79
Z 0
+ S 0
C 0
4C8F V 0

20-nov-01 Introducción a la Informática A.Prieto 27


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ SUBS (resta)
ƒ Instrucción: resta del contenido de 2 registros
ƒ Código de operación: 0111 (7 en hexadecial)
ƒ Tipo de formato: F4
ƒ Instrucción en nemónico: SUBS rx,rs,ra
ƒ Descripción de función a realizar: rx ← rs-ra

Ejemplo
Formato F4 r0 ← rD-rE ⇒ SUBS r0, rD,rE
codop rx rs ra
0111 0000 1101 1110; 70DE

20-nov-01 Introducción a la Informática A.Prieto 28


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo

r0 ← rD-rE ⇒ SUBS r1, rD,rE IR 70DE


PC 003E Memoria
0111 0000 1101 1110; 70DE principal

Registros 0000 37BA


0001 4C54
rF 0001
rE 4C54 003D 70DE
rD E03B
00E2 FFFF
E03B 4C54
r1 4C8F
r0 93E7 FFFE 732C
FF FFFF BC79
Z 0
- S 1
C 0
rD → E03B 1110 0000 0011 1011 93E7 V 0
rE → 4C54 - 0100 1100 0101 0100
r0 → 1001 0011 1110 0111 → 93E7
20-nov-01 Introducción a la Informática A.Prieto 29
(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ NAND (operación lógica NAND)


ƒ Instrucción: resta del contenido de 2 registros a b c=(a·b)’
ƒ Código de operación: 1000 (8 en hexadecial) 0 0 1
ƒ Tipo de formato: F4 0 1 1
1 0 1
ƒ Instrucción en nemónico: NAND rx,rs,ra
1 1 0
ƒ Descripción de función a realizar: rx ← (rs·ra)’

Ejemplo
Formato F4 r1 ← (rd·rE) ⇒ NAND r0, rD,rE
codop rx rs ra
1000 0000 1101 1110; 80DE

20-nov-01 Introducción a la Informática A.Prieto 30


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo
IR 81DE
r1 ← (rd·rE) ⇒ NAND r0, rD,rE Memoria
PC 003F
principal
1000 0000 1101 1110; 80DE
0000 37BA
Registros
0001 4C54
a b c=(a·b)’ rF 0001
003E 81DE
rE 4C54
0 0 1 rD E03B
00E2 FFFF
0 1 1 r1 BFEF E03B 4C54
FFFE 732C
1 0 1 r0 4C19
FF FFFF BC79
1 1 0 Z 0
NAND S 1
C 0
BFEF V 0

rd → E03B 1110 0000 0011 1011


rE → 4C54 NAND 0100 1100 0101 0100
r0 → 1011 1111 1110 1111 → BFEF

20-nov-01 Introducción a la Informática A.Prieto 31


(c) McGraw-Hill / Interamericana
Operación lógica NAND

a b a NAND b a b a NAND 1
0 0 1 01 1
0 1 1 11 0
1 0 1
a NAND 1
1 1 0

a Complemento de “a”, o
c “a” invertido
b

x NAND 1 = 0 ⇒ x=1 a
a’
x NAND 1 = 1 ⇒ x=0 1

20-nov-01 Introducción a la Informática A.Prieto 32


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ SHL (desplazamiento a izquierda)


ƒ Instrucción: desplazamiento a izda. de los bits de un rtro.
ƒ Código de operación: 1001 (9 en hexadecial)
ƒ Tipo de formato: F1
ƒ Instrucción en nemónico: SHL rx
ƒ Descripción de función a realizar:
C←rx(15), rx(i)←rx(i-1), i=15,…,1; rx(0)←0

SHL c 0

Ejemplo
Formato F1
codop rx - - rD ← ↓rD ⇒ SHL rD
1001 1101 ---- ----; 9D00
20-nov-01 Introducción a la Informática A.Prieto 33
(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo

rD ← ↓ rD ⇒ SHL rD IR 9D00 Memoria


principal
PC 0040
1001 1101 ---- ----; 9D00 0000 37BA
Registros 0001 4C54

rF 0001 003F 9D00


rE 4C54
rD C076 00E2 FFFF

r1 FFEF E03B FFFE 732C


r0 4C19 FFFF BC79
FF
Z 0
← S 1
C 1
C C076 V 0

rD inicial → E03B - 1110 0000 0011 1011
rD final → 1 1100 0000 0111 0110 → C076

20-nov-01 Introducción a la Informática A.Prieto 34


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ SHR (desplazamiento a derecha)


ƒ Instrucción: desplazamiento a dcha. de los bits de un rtro.
ƒ Código de operación: 1010 (A en hexadecial)
ƒ Tipo de formato: F1
ƒ Instrucción en nemónico: SHR rx
ƒ Descripción de función a realizar:
c←rx(0), rx(i)←rx(i+1), i=0,…,14; rx(15)←0

SHR c 0

Ejemplo
Formato F1
codop rx - - rD ← ↑rD ⇒ SHR rD
1010 1101 ---- ----; AD00
20-nov-01 Introducción a la Informática A.Prieto 35
(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo

rD ← ↑rD ⇒ SHR rD
1010 1101 ---- ----; AD00 IR AD00
Memoria
PC 0041 principal

0000 37BA
Registros 0001 4C54

rF 0001 0040 AD00


rE 4C54
rD 603B 00E2 FFFF
C076
r1 FFEF FFFE 732C
r0 4C19 FFFF BC79
FF
Z 0
→ S 0
C 0
603B V 0

20-nov-01 Introducción a la Informática A.Prieto 36


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ SHRA (desplazamiento aritmético a derecha)


ƒ Instrucción: desplazamiento aritmético a dcha. de los bits de un rtro.
ƒ Código de operación: 1011 (B en hexadecial)
ƒ Tipo de formato: F1
ƒ Instrucción en nemónico: SHRA rx
ƒ Descripción de función a realizar:
c←rx(0), rx(i)←rx(i+1), i=0,…,14

SHRA c

Ejemplo
Formato F1
codop rx - - rD ← a↑rD ⇒ SHRA rD
1011 1101 ---- ----; BD00
20-nov-01 Introducción a la Informática A.Prieto 37
(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo

rD ← a↑rD ⇒ SHRA rD IR BD00


Memoria
1011 1101 ---- ----; BD00 PC 0042 principal

0000 37BA
Registros 0001 4C54

rF 0001 0041 AD00


rE 4C54
rD E03B 00E2 FFFF
C076
r1 FFEF FFFE 732C
r0 4C19 FFFF BC79
FF
Z 0
→a S 1
C 0
E03B V 0

20-nov-01 Introducción a la Informática A.Prieto 38


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ B- (salto)
ƒ Instrucción: ruptura de secuencia (salto)
ƒ Código de operación: 1100 (C en hexadecial)
ƒ Tipo de formato: F2
ƒ Instrucción en nemónico:
¾ BR (salto incondicional)
¾ BZ (salto si Z=1)
¾ BS (salto si S=1)
¾ BC (salto si C=1)
¾ BV (salto si V=1)
ƒ Descripción de función a realizar: Si cnd es incondicional o si
se cumple la condición, entonces PC←rD
Ejemplo
Formato F2
codop cnd - - Salto incondicional a 0041
LLI rD,41 2D41
20-nov-01 Introducción a la InformáticaBR
A.Prieto C000
39
(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo
Salto incondicional a 0041
Memoria
LLI rD,41 2D41 IR C0AA
principal
BR C000 PC 0041
0000 37BA
0001 4C54
Registros
004F C0AA
rF 0001 0041
rE F7FD F7FC 0000
rD 0041 F7FD 007C
F7FE 37AB
r1 FFEF F7FF 43C2
r0 4C19
FFFE 732C
FFFF BC79

20-nov-01 Introducción a la Informática A.Prieto 40


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina
‰ CALL- (llamada a subrutina)
ƒ Instrucción: llamada a subrutina
ƒ Código de operación: 1101 (D en hexadecial)
ƒ Tipo de formato: F2
ƒ Instrucción en nemónico:
¾ CALLR (llamada incondicional)
¾ CALLZ (llamada si Z=1)
¾ CALLS (llamada si S=1)
¾ CALLC (llamada si C=1)
¾ CALLV (llamada si V=1)
ƒ Descripción de función a realizar: Si cnd es incondicional o si se
cumple la condición, entonces:
rE←rE-1, M(rE)←PC, PC←rD

Ejemplo
Formato F2
Llamada incondicional a 0041
codop cnd - -
LLI rD,41 2D41
20-nov-01 CALLR
Introducción a la Informática A.Prieto C000
41
(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo
Llamada a C03B si Z=1
LLI rD,3B 2D3B IR D100 Memoria
LHI rD,C0 3DC0 principal
PC C03B
CALLZ D100
0000 37BA
0001 4C54
Registros
C03B 0043
0042 D100
rF 0001
rE F7FC
F7FC 0043
rD C03B
F7FD 007C
2 F7FE 37AB pila
r1 FFEF
F7FF 43C2
r0 4C19
FFFE 732C
¡ojo!: FFFF BC79

El valor inicial de rD era F7FD 1

20-nov-01 Introducción a la Informática A.Prieto 42


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ RET (retorno de subrutina)


ƒ Instrucción: retorno de subrutina
ƒ Código de operación: 1110 (E en hexadecial)
ƒ Tipo de formato: F0
ƒ Instrucción en nemónico: RET
ƒ Descripción de función a realizar:
PC← M(rE); rE←rE+1

Formato F0 Ejemplo
codop - - -
RET
1110 0000 0000 0000 E000

20-nov-01 Introducción a la Informática A.Prieto 43


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de instrucciones máquina

Ejemplo
RET
1110 1111 1111 1111 EFFF IR EFFF Memoria
principal
PC 0043
0000 37BA
0001 4C54
Registros
0043 C0F7 EFFF
rF 0001
rE F7FD
F7FC 0043
rD C03B
F7FD 007C
F7FE 37AB pila
r1 FFEF
F7FF 43C2
r0 4C19
FFFE 732C
FFFF BC79
¡ojo!:
El valor inicial de rD era F7FC

20-nov-01 Introducción a la Informática A.Prieto 44


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

‰ HALT (parada)
ƒ Instrucción: parada
ƒ Código de operación: 1111 (F en hexadecial)
ƒ Tipo de formato: F0
ƒ Instrucción en nemónico: HALT
ƒ Descripción de función a realizar:
CODE-2 entra en estado de espera

Formato F0 Ejemplo
codop - - -
HALT
1111 0000 0000 0000 F000

20-nov-01 Introducción a la Informática A.Prieto 45


(c) McGraw-Hill / Interamericana
6.3.3 Repertorio de Instrucciones Máquina

Ejemplo
HALT
1111 0000 0000 0000 F000

SI CONTINUAR

Espera

Fase de captación de
instrucción

Fase de ejecución de
instrucción

20-nov-01 Introducción a la Informática A.Prieto 46


(c) McGraw-Hill / Interamericana
6.3.4 Algunos trucos de programación

‰ Programación: descripción de un algoritmo en


términos de las instrucciones del repertorio.
ƒ Objetivos (por lo general contrapuestos):
¾ Tiempo de ejecución el menor posible
¾ Capacidad de memoria la menor posible

‰ Dar valores iniciales a registros.


Instrucción máquina Explicación
Nemónico hex Binario
LLI r0,00 2000 0010 0000 0000 0000 Cargar r0 con H’0000
LLI r1,01 2101 0010 0001 0000 0001 Cargar r1 con H’0001

• En los ejercicios que siguen vamos a suponer que r0


contiene H’0000 y r1 H’0001
20-nov-01 Introducción a la Informática A.Prieto 47
(c) McGraw-Hill / Interamericana
6.3.4 Algunos trucos de programación

‰ Copiar el contenido de un registro en otro.

Instrucción máquina Explicación


Nemónico hex binario
ADDS rE,r4,r0 6E40 0110 1110 0100 0000 rE←r4+0

‰ Detectar si un número es cero o negativo.


Instrucción m áquina explicación
Nem ónico hex binario
Sumar 0 al número para activar
ADDS r4,r4,r0 6440 0110 0100 0100 0000
los biestables
Saltar si el biestable de cero (Z)
BZ C100 1100 0001 0000 0000
se activa

20-nov-01 Introducción a la Informática A.Prieto 48


(c) McGraw-Hill / Interamericana
6.3.4 Algunos trucos de programación

‰ No hacer nada (consumir 7 ciclos de reloj).

Instrucción máquina Explicación


Nemónico hex binario
ADDS r4,r4,r0 6440 0110 0100 0100 0000 r4←r4+0

‰ Contadores ascendente y descendente.

Instrucción máquina explicación


Nemónico hex binario
ADDS r4,r4,r1 6441 0110 0100 0100 0001 Incrementar de r4 en 1
SUBS r5,r5,r1 7551 0111 0101 0101 0001 Decrementar r5 en 1

20-nov-01 Introducción a la Informática A.Prieto 49


(c) McGraw-Hill / Interamericana
6.3.4 Algunos trucos de programación

‰ Comparar dos números.


ƒ Saltar:
¾ a F300 si r5 = r4
¾ a 547C si r5 < r4, y
¾ a 737c si r5>r4

Instrucción máquina explicación


Nemónico hex binario
SUBS rF,r5,r4 7F54 0111 1111 0101 0100 Comparar r5 con r4
LLI rD,00 2D00 0010 1101 0000 0000 Dirección de salto si son iguales
LLH rD,F3 3DF3 0011 1101 1111 0011
BZ C100 1100 0001 0000 0000 Saltar si son iguales (Z=1)
LLI rD,7C 2D7C 0010 1101 0111 1100 Dirección de salto si r4>r5
LLH rD,54 3D54 0011 1101 0101 0100
BS C200 1100 0010 0000 0000 Saltar si r4>r5 (S=1)
LLH rD,73 3D73 0011 1101 0111 0011 Dirección de salto si r4<r5
BR C000 1100 0000 0000 0000 Salto incondicional

20-nov-01 Introducción a la Informática A.Prieto 50


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplos de programa

‰ Metodología para hacer un programa en LM:


ƒ Describir el algoritmo a implementar por medio de
un organigrama o pseudocódigo.
ƒ Asignación de memoria:
¾ de registros y de posiciones de memoria para los
parámetros y variables utilizadas en el programa
¾ de la dirección de inicio del programa.
ƒ Redactar el programa en nemónicos.
ƒ Codificar las instrucciones en código máquina
(hexadecimal o binario)
ƒ Documentar el programa (comentarios para su uso)

20-nov-01 Introducción a la Informática A.Prieto 51


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

‰ Programa de carga en memoria:


ƒ Especificaciones:
¾ Cuando aparezca en la salida OP1 el mensaje
DCDC, debe darse la dirección inicial de carga.
¾ Cuando aparezca en la salida OP1 la dirección de
carga, debe darse el contenido a memorizar en
esa dirección.

20-nov-01 Introducción a la Informática A.Prieto 52


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

inicio

‰ Organigrama
Parámetros iniciales:
DCDC, 1, 0

Salida en OP1 del mensaje “DCDC”

Entrada de dirección 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 Introducción a la Informática A.Prieto 53


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

‰ Asignación de memoria

Posición
Parám etro o
Registro de Com entario
variable
m em oria
0001 r1 Para el contador
0000 r0 Para pasar el valor de un rgtro. a otro
DCDC rA Mensaje para pedir dirección de carga
DC r2 Dirección de carga
PM r3 Palabra a m em orizar
Program a 00A0 Dirección de carga del program a

20-nov-01 Introducción a la Informática A.Prieto 54


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

‰ Programa en nemónicos
Rf. Dircc Instrucción Explicación
Nemónico
00A0 LLI rA,DC Parte baja del mensaje
00A1 LHI rA,DC Parte alta del mensaje
00A2 LLI r1,01 Parámetro 0001 en r1
00A3 LLI r0,00 Parámetro 0000 en r0
00A4 OUT OP1,rA Salida de mensaje DCDC
00A5 IN r2,IP1 Entrada de dirección de comienzo (DC)
(a) 00A6 OUT OP1,r2 Salida de dirección de carga
00A7 IN r3,IP1 Entrada del valor a cargar
00A8 ADDS rD,r2,r0 Pasar la direcc. de carga al rD
00A9 ST 00,r3 Memorizar palabra
00AA ADDS r2,r2,r1 Incrementar en 1 dirección de carga
00AB LLI rD,A6 Cargar en rD dirección de salto
00AC BR Salto incondicional a (a)

20-nov-01 Introducción a la Informática A.Prieto 55


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

‰ Programa en código máquina


Rf. Dircc Instrucción
Explicación
Nemónico hex
00A0 LLI rA,DC 2ADC Parte baja del mensaje
00A1 LHI rA,DC 3ADC Parte alta del mensaje
00A2 LLI r1,01 2101 Parámetro 0001 en r1
00A3 LLI r0,00 2000 Parámetro 0000 en r0
00A4 OUT OP1,rA 5A01 Salida de mensaje DCDC
00A5 IN r2,IP1 4012 Entrada de dirección de comienzo (DC)
(a) 00A6 OUT OP1,r2 5201 Salida de dirección de carga
00A7 IN r3,IP1 4301 Entrada del valor a cargar
00A8 ADDS rD,r2,r0 6D20 Pasar la direcc. de carga al rD
00A9 ST 00,r3 1300 Memorizar palabra
00AA ADDS r2,r2,r1 6221 Incrementar en 1 dirección de carga
00AB LLI rD,A6 2DA6 Cargar en rD dirección de salto
00AC BR C000 Salto incondicional a (a)

20-nov-01 Introducción a la Informática A.Prieto 56


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

‰ Comentarios para el uso del programa

Program a de carga en m em oria


Posición inicial del program a 00A0
Datos solicitados por el IP1 Cuando aparezca en OP1 el mensaje
program a DCCD, dar la dirección de inicio de la
carga (DC)
Cuando aparezca en OP1 una dirección
de memoria, dar la información a carga
en ella (PC)
Resultados dados por el OP1 Mensaje DCDC (para dar DC)
program a Dirección de carga (para dar PC)

20-nov-01 Introducción a la Informática A.Prieto 57


(c) McGraw-Hill / Interamericana
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)

¾ Parámetros:
9 Longitud de las tablas: nT = H’20
9 Dirección de inicio de T1: d1=H’0040
9 Dirección de inicio de T2: d2=H’0080
9 Dirección de inicio de T3: d3= H’00C0

20-nov-01 Introducción a la Informática A.Prieto 58


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa
inicio

‰ Algoritmo (organigrama). Parámetros iniciales:


0,1,
nT=0020, i=0

Leer dato de T1 a
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
i←i+1

Comparar nT con i
nT - i

S=1
b si no

fin
20-nov-01 Introducción a la Informática A.Prieto 59
(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

‰ Asignación de registros y de memoria

Parámetro Rtro Posición Comentario


o variable memoria
0000 r0 Para pasar el valor de un registro a otro
0001 r1 Para incrementar el índice i
nT r2 Número de elementos de la tabla
T1(i) r3 Elemento de la tabla T1
T2(i) r4 Elemento de la tabla T2
T3(i) r5 Elemento de la tabla T3
i rC Registro de indexación
Programa 00A0 Dirección de carga del programa

20-nov-01 Introducción a la Informática A.Prieto 60


(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

‰ Redacción del programa en nemónicos


Instrucción Explicación
Dirc
Nemónico
0010 LLI r0,00 Inicializar r0 a 0
0011 LLI r1,01 Inicializar r1 a 1
0012 LLI r2,20 Tamaño de tabla: nT=H’20
0013 LLI rC,00 Inicialización del índice: i=0
a 0014 ADDS rD,rC,r0 Pasar el índice al registro de dirección
0015 LD r3,[40] Llevar a r3 el elemento de T1
0016 LD r4,[80] Llevar a r4 el elemento de T2
0017 ADDS r5,r3,r4 Suma de elementos de T1 y T2 en r5
0018 ST [C0],r5 Almacenar nuevo elemento de T3
0019 ADDS rC,rC,r1 Incrementar el índice
001A LLI rD,1F Cargar en rD dirección de salto (final)
001B SUBS rF,r2,rC Comparar nT con i
001C BS Si S=1 el programa concluye, salta a (b)
001D LLI rD,14 Cargar en rD dirección de salto (continuar)
001E BR Salto a (a)
b 001F HALT Final del programa
Introducción a la Informática A.Prieto
20-nov-01 61
(c) McGraw-Hill / Interamericana
6.3.5 Ejemplo de programa

‰ Redacción del programa en nemónicos


Instrucción máq. Explicación
Dirc
Nemónico HEX
0010 LLI r0,00 2000 Inicializar r0 a 0
0011 LLI r1,01 2101 Inicializar r1 a 1
0012 LLI r2,20 2220 Tamaño de tabla: nT=H’20
0013 LLI rC,00 2C00 Inicialización del índice: i=0
a 0014 ADDS rD,rC,r0 6DC0 Pasar el índice al registro de dirección
0015 LD r3,[40] 0340 Llevar a r3 el elemento de T1
0016 LD r4,[80] 0480 Llevar a r4 el elemento de T2
0017 ADDS r5,r3,r4 6534 Suma de elementos de T1 y T2 en r5
0018 ST [C0],r5 15C0 Almacenar nuevo elemento de T3
0019 ADDS rC,rC,r1 6CC1 Incrementar el índice
001A LLI rD,1F 2DAF Cargar en rD dirección de salto (final)
001B SUBS rF,r2,rC 7F2C Comparar nT con i
001C BS C200 Si S=1 el programa concluye, salta a (b)
001D LLI rD,14 2DA4 Cargar en rD dirección de salto (continuar)
001E BR C000 Salto a (a)
b 001F HALT F000 Final del programa

20-nov-01 Introducción a la Informática A.Prieto 62


(c) McGraw-Hill / Interamericana
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 Introducción a la Informática A.Prieto 63


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

on/off CODE Dirección /OP1

Paso a paso
Contenido / OP2

dirección
IR

registros
0 1 2 3
cargar
PC 4 5 6 7
Z
ejecutar
S 8 9 A B
ALU
C
continuar
V C D E F

20-nov-01 Introducción a la Informática A.Prieto 64


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

‰ Elementos:
ƒ Interruptores
ƒ Teclado hexadecimal (IP1)
ƒ Puertos de salida (OP1 y OP2)
ƒ Teclas de órdenes
ƒ Visualizadores
ƒ Pilotos on/off CODE Dirección /OP1

Paso a paso
Contenido / OP2

dirección
IR

registros
0 1 2 3
cargar
PC 4 5 6 7
Z
ejecutar
S 8 9 A B
ALU
C
continuar
V C D E F

20-nov-01 Introducción a la Informática A.Prieto 65


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

‰ Elementos: ƒ Puertos de salida (OP1 y OP2)


ƒ Interruptores: ¾ OP1. Usualmente se usa para visualizar
¾ ON/OFF direcciones
¾ Paso a paso ¾ OP2. Usualmente para visualizar
contenidos

on/off CODE Dirección /OP1

Paso a paso
Contenido / OP2

dirección
IR

registros
0 1 2 3
cargar
PC 4 5 6 7
Z
ejecutar
S 8 9 A B
ALU
C
continuar
V C D E F

20-nov-01 Introducción a la Informática A.Prieto 66


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

‰ Elementos:
ƒ Teclas de órdenes:
¾ Dirección
¾ Registros
on/off CODE Dirección /OP1
¾ Cargar
Paso a paso
¾ Ejecutar
Contenido / OP2
¾ Continuar
dirección
IR

registros
0 1 2 3
cargar
PC 4 5 6 7
Z
ejecutar
S 8 9 A B
ALU
C
continuar
V C D E F

20-nov-01 Introducción a la Informática A.Prieto 67


(c) McGraw-Hill / Interamericana
‰ Elementos:

20-nov-01
6.3.6 Utilización de CODE-2

ƒ Visualizadores
¾ Contenido IP1
¾ Puertos de salida OP1 y OP2
¾ Rgtro. instrucción (IR)
¾ Contador de Progr. (PC)

¾ Rgtro. instrucción (IR)


¾ Contador de Progr. (PC)
on/off

Paso a paso

IR

PC

ALU
¬
Z

Introducción a la Informática A.Prieto


(c) McGraw-Hill / Interamericana
uertos de salida OP1 y OP2
ontenido IP1

CODE

C
5

D
Dirección /OP1

Contenido / OP2

1 2

E
3

F
dirección

registros

cargar

ejecutar

continuar

68
6.3.6 Utilización de CODE-2

on/off CODE Dirección /OP1

‰ Elementos: Paso a paso


Contenido / OP2

ƒ Pilotos
¾ ON/OFF IR
dirección

¾ Biestables indicadores: Z,
registros
0 1 2 3

S, C, V PC
Z
4 5 6 7
cargar

ejecutar
S 8 9 A B
ALU
C
continuar
V C D E F

20-nov-01 Introducción a la Informática A.Prieto 69


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

‰ Tareas realizables (las teclas de órdenes provocan


interrupciones que lanzan rutinas del monitor):
ƒ Selección de una posición de memoria.
ƒ Cargar información en memoria.
ƒ Selección de un registro.
ƒ Cargar información en un registro.
ƒ Ejecutar un programa.

20-nov-01 Introducción a la Informática A.Prieto 70


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

‰ Seleccionar una posición de memoria.


ƒ Teclear dirección y pulsar DIRECCIÓN.
¾ Acción: En OP1 aparece la dirección tecleada y en el
OP2 el contenido de esa posición.
ƒ Pulsar CONTINUAR
¾ Acción: se avanza una posición de memoria: aparece
dirección (OP1) y contenido (OP2) de la siguiente
posición.
‰ Cargar una información en una posición de memoria.
ƒ Seleccionar una dirección
ƒ Teclear la información a memorizar y
ƒ Pulsa CARGAR.
¾ Acción:Se memoriza la información tecleada, y se
avanza en una unidad la dirección.

20-nov-01 Introducción a la Informática A.Prieto 71


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

‰ Seleccionar los registros.


ƒ Pulsar REGISTROS
¾ Acción: en OP1 aparece el código del registro 0; es decir
0000, y en OP2 su contenido.
ƒ Pulsar sucesivamente CONTINUAR,
¾ Acción: van apareciendo en OP2 el código del siguiente
registro (0001, 0002, ....,000F) y en OP2 su contenido.
‰ Cargar una información en un registro.
ƒ Seleccionar un registro,
ƒ Teclear la información a memorizar y
ƒ Pulsar CARGAR.
¾ Acción: Se guarda en el registro seleccionado la
información tecleada, y se avanza al siguiente registro.

20-nov-01 Introducción a la Informática A.Prieto 72


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

‰ Ejecutar un programa.
ƒ Seleccionar la dirección de memoria de la primera instrucción
del programa,
ƒ Se pulsa EJECUTAR.
¾ Acción: Se inicia la ejecución del programa (se ejecuta
una instrucción de salto a la dirección de inicio del
programa:
PC ←dirección del programa)

20-nov-01 Introducción a la Informática A.Prieto 73


(c) McGraw-Hill / Interamericana
6.3.6 Utilización de CODE-2

‰ Ejemplo: carga y ejecución de un programa.


Interruptor Teclado hex Órden Explicación
ON/OFF Conexión de CODE-2
0010 DIRECCIÓN 1ª dirección del programa
2000 CARGAR
2101 CARGAR
2220 CARGAR
2C00 CARGAR
6DC0 CARGAR
0340 CARGAR
0480 CARGAR
6534 CARGAR
Carga del programa
15C0 CARGAR
6CC1 CARGAR
2DAF CARGAR
7F2C CARGAR
C200 CARGAR
2DA4 CARGAR
C000 CARGAR
F000 CARGAR
0010 EJECUTAR Ejecutar el programa
20-nov-01 Introducción a la Informática A.Prieto 74
(c) McGraw-Hill / Interamericana
6.4 Descripción de CODE-2 a nivel de LE

‰ 6.4 DESCRIPCIÓN DE UN COMPUTADOR DIDÁTICO


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 Ambigüedades
ƒ 6.4.5 Ejemplo de programa en ensamblador

20-nov-01 Introducción a la Informática A.Prieto 75


(c) McGraw-Hill / Interamericana
6.4 Lenguaje ensamblador
Características de lenguajes máquina

‰ VENTAJAS del lenguaje máquina:


¾ Directamente utilizable por el computador
¾ Mínimo volumen de memoria utilizado
¾ Capacidad mínima de los programas
¾ Máxima velocidad de ejecución (el programador se adapta a
la arquitectura hardware de que dispone)

‰ INCONVENIENTES del lenguaje máquina:


¾ Repertorio de instrucciones muy reducido e inflexible
¾ Redacción del programa muy laboriosa
9 códigos numéricos
9 asignación de memoria hecha por el programador, etc.
¾ Programas muy poco legibles
20-nov-01 Introducción a la Informática A.Prieto 76
(c) McGraw-Hill / Interamericana
6.4 Lenguajes ensambladores
Características

Mantienen las ventajas y aminoran los inconvenientes de los LM:


‰ Utiliza nombres simbólicos, en vez de números:
ƒ códigos de operación binarios → nemónicos
ƒ direcciones numéricas → 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 nemónicos por códigos de operación
ƒ hace la asignación de registros y memoria, asociando a
cada variable, constante o dirección simbólica una
dirección numérica
ƒ elimina los comentarios

20-nov-01 Introducción a la Informática A.Prieto 77


(c) McGraw-Hill / Interamericana
Ensamblador de CODE
(IEEE 694). Formatos

[ETIQUETA:] NEMÓNICO OPERANDO [;COMENTARIO]


Ejemplo: P1: ADDS P,P,uno ;incrementar P
Etiqueta: campo alfanumérico opcional acabado con “:”, que se
puede utilizar para identificar la posición de las
instrucciones (posiciones de salto, etc.)
Nemónico: Nombre simbólico (nemónico) que identifica la instrucción
(LD, ST, LLI, LHI,...)
Operandos: Parámetros asociados a la instrucción (registros, valores
inmediatos y puertos de E/S o nombres simbólicos de
parámetros o variables).
Comentario: campo alfanumérico opcional, precedido por “;”, para
hacer comentarios que hagan más legible el programa.

20-nov-01 Introducción a la Informática A.Prieto 78


(c) McGraw-Hill / Interamericana
Ensamblador de CODE
Instrucciones
‰ Observaciones:
ƒ rx, rs, ra es un registro (r0 a rF o R0 a RF) o un nombre simbólico de
registro (definido con EQU) o una variable-registro (definida con DR).
ƒ v es un número de 0 a 255, en base decimal (D’número),
hexadecimal (H’número o número), octal (Q’número) o binaria
(B’número).
ƒ etiqueta es la etiqueta de la instrucción a la que se desea hacer la
bifurcación.
ƒ dir_etiqueta significa la dirección donde se encuentra la etiqueta
especificada.
Ensamblador
Nombre Ejemplo Significado del ejemplo
CODE-2
Cargar LD rx,[rD+v] LD r4,[01] r4 ←M(rD+H’01)
Almacenar ST [rD+v],rx ST [00],rE M(rD+H’00)←rE
Carga inmediata baja LLI rx,v LLI r7,07 r7(15:8)←H’00; r7(7:0)←H’07
Carga inmediata alta LHI rx,v LHI r7, AB r7(15:8)←H’AB
Entrada IN rx,IPv IN rD,IP1 rD←IP1
Salida OUT OPv,rx OUT OPD’13 OP0D←rx

20-nov-01 Introducción a la Informática A.Prieto 79


(c) McGraw-Hill / Interamericana
Ensamblador de CODE
Instrucciones

Ensamblador
Nombre Ejemplo Significado del ejemplo
CODE-2
Cargar LD rx,[rD+v] LD r4,[01] r4 ←M(rD+H’01)
Almacenar ST [rD+v],rx ST [00],rE M(rD+H’00)←rE
Carga inmediata baja LLI rx,v LLI r7,07 r7(15:8)←H’00; r7(7:0)←H’07
Carga inmediata alta LHI rx,v LHI r7, AB r7(15:8)←H’AB
Entrada IN rx,IPv IN rD,IP1 rD←IP1
Salida OUT OPv,rx OUT OPD’13 OP0D←rx
Suma ADDS rx,rs,ra ADDS rD,r3,r4 rD←r3+r4
Resta SUBS rx,rs,ra SUBS rF,r1,r0 rF←r1-r0
NAND NAND rx,rs,ra NAND r7,r3,r5 r7←(r3·r5)’
Desplaza izquierda SHL rx SHL r6 C←r6(15), r6(i)←r6(i-1), i=15,…,1; r6(0)←0
Desplaza derecha SHR rx SHR r5 C←r5(0), r5(i)←r5(i+1), i=0,…,14; r5(15)←0
Desplaza arit. dcha. SHRA rx SHRA r8 C←r8(0), r8(i)←r8(i+1), i=0,…,14

20-nov-01 Introducción a la Informática A.Prieto 80


(c) McGraw-Hill / Interamericana
Ensamblador de CODE
Instrucciones

Ensamblador
Nombre Ejemplo Significado del ejemplo
CODE-2
Salto incondicional BR etiqueta BR P7 rD←dir_P7; PC←rD
Salto si resultado cero BZ etiqueta BZ alfa Si Z=1 , rD←dir_alfa; PC←rD
Salto si resultado negativo BS etiqueta BS P3 Si S=1 , rD←dir_P3; PC←rD
Salto si resultado con acarreo BC etiqueta BC a Si C=1 , rD←dir_a; PC←rD
Salto si resultado con desbordamiento BV etiqueta BV b Si V=1 , rD←dir_b; PC←rD
Llamada incondicional a subrutina CALLR etiqueta CALLR P1 rD←dir_P1, rE←rE-1, M(rE)←PC, PC←rD
Llamada si resultado cero CALLZ etiqueta CALLZ a Si Z=1, rD←dir_a, rE←rE-1, M(rE)←PC, PC←rD
Llamada si resultado negativo CALLS etiqueta CALLS b Si S=1, rD←dir_b, rE←rE-1, M(rE)←PC, PC←rD
Llamada si resultado con acarreo CALLC etiqueta CALLC f Si C=1, rD←dir_f, rE←rE-1, M(rE)←PC, PC←rD
Llamada si resultado con desbordamiento CALLV etiqueta CALLV c Si V=1, rD←dir_c, rE←rE-1, M(rE)←PC, PC←rD
Retorno RET PC← M(rE); rE←rE+1
Parar HALT Parar

20-nov-01 Introducción a la Informática A.Prieto 81


(c) McGraw-Hill / Interamericana
Ensamblador de CODE
Directivas

‰Directivas o pseudoinstrucciones: información para el


ensamblador (traductor):
ƒ ORG (origen) para especificar la dirección de
memoria de inicio del programa
ƒ EQU (equiparar) para dar nombres simbólicos 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 Introducción a la Informática A.Prieto 82


(c) McGraw-Hill / Interamericana
Ensamblador de CODE
Ejemplo de programa

‰ Enunciado del problema


ƒ A partir de la posición A730 de la memoria de CODE-2 se tiene
una cadena de caracteres Unicode, que finaliza con un carácter
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 número de
sustituciones que se efectúen.
‰ Parámetros y variables
ƒ CR, carácter de control CR: H’000D.
ƒ PYC, carácter punto y coma (;): H’003B.
ƒ C, carácter coma (,): H’002C.
ƒ UNO, constante 1.
ƒ P, puntero de la tabla. Su valor inicial debe ser H’A730.
ƒ EC, carácter a analizar de la cadena.
ƒ NC, número de cambios. Debe inicializarse a 0.

20-nov-01 Introducción a la Informática A.Prieto 83


(c) McGraw-Hill / Interamericana
Ensamblador de CODE
Ejemplo de programa

‰ Descripción del programa


ƒ Paso 1) Captar un elemento de la cadena: EC←M(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: P←P+1
ƒ Paso 7) Ir al Paso 1.
ƒ Paso 8) Cambiar el carácter de la cadena: M(P) ←C
ƒ Paso 9) Incrementar la variable NC: NC←NC+1
ƒ Paso 10) Ir al Paso 6
ƒ Paso 11) OP2 el valor de NC
ƒ Paso 12) Fin del programa

20-nov-01 Introducción a la Informática A.Prieto 84


(c) McGraw-Hill / Interamericana
Ensamblador de CODE
Ejemplo de programa: Programa en ensamblador
ORG H’A000 ; el programa comienza en A000
CR DR H’000D ; carácter “CR”
PYC DR H´003B ; carácter “;”
C DR H’002C ; carácter “,”
uno DR H’1 ; constante 1
P DR H’A730 ; puntero de la cadena
NC DR H’0 ; número de sustituciones
0 DR 0 ; constante 0
EC EQU r7 ; elemento de la cadena en análisis
P1: ADDS rD,P,0 ; llevar a rD el puntero de la cadena
LD EC,[rD] ; captar carácter de la cadena a analizar
SUBS rF,EC,CR ; comparar con carácter “CR”
BZ P11 ; saltar a Paso 11 si EC=”CR”
SUBS rF,EC,PYC ; comprobar si EC es “;”
BZ P8 ; si EC=”;” saltar a Paso 8
P6: ADDS P,P,uno ; actualizar el puntero de la cadena
BR P1 ; salto incondicional a Paso 1
P8: ADDS rD,P,0 ; llevar a rD el puntero de la cadena
ST [rD],C ; sustituir en la cadena “;” por “,”
ADDS NC,NC,uno ; incrementar en 1 el número de cambios
BR P6 ; salto incondicional a Paso 6
P11: OUT OP02,NC ; dar en salida el número de cambios
HALT ; fin de programa
20-nov-01 Introducción a la Informática A.Prieto 85
(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 posición
A730. El programa se almacena a partir de la posición
A000 de la memoria, y proporciona por el puerto OP2 el
número de cambios efectuados.

20-nov-01 Introducción a la Informática A.Prieto 86


(c) McGraw-Hill / Interamericana
Ensamblador de CODE:
Otro ejemplo

‰ Enunciado:
ƒ De la posición PINI=H’1000 a la posición PFIN = H’2000
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 dirección donde se
encuentra.

20-nov-01 Introducción a la Informática A.Prieto 87


(c) McGraw-Hill / Interamericana