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 (c) McGraw-Hill / Interamericana
2
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 (c) McGraw-Hill / Interamericana
3
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 (c) McGraw-Hill / Interamericana
4
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 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 (c) McGraw-Hill / Interamericana
5
6.3.1 Elementos a los que se tiene 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 (c) McGraw-Hill / Interamericana
6
6.3.1 Elementos a los que se tiene desde el lenguaje máquina
Procesador
Memoria
Entradas
Salidas
RF
rF
SP
rE
drc.
rD r1 r0
M
Z
...
S
ALU
C
PC
OPv
64 Kp = 128 KB
V
20-nov-01
IPv
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
v = 0,...255
7
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
Numeración de los bits de una palabra: 15
20-nov-01
14
13
12
11
10
9
8
7
6
5
4
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
3
2
1
0
8
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
v
• v
valor inmediato
F4
codop
rx
rs
ra
• cnd
condición de salto o llamada
(4 bits)
(4 bits)
(4 bits)
(4 bits)
• codop código de operación
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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
R Z S C V
cnd 0000 0001 0010 0011 0100 9
6.3.3 Repertorio de instrucciones máquina
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
Nemónico Parámetros
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 -
Explicación
rx←M(rD+v) M(rD+v)←rx rx(15:8)←H’00; rx(7:0)←v rx(15:8)←v rx←IPv OPv←rx rx←rs+ra rx←rs-ra rx←(rs·ra)’ C←rx(15), rx(i)←rx(i-1), i=15,…,1; rx(0)←0 C←rx(0), rx(i)←rx(i+1), i=0,…,14; rx(15)←0 C←rx(0), rx(i)←rx(I+1), i=0,…,14 Si cnd se cumple, PC←rD
Si cnd se cumple, rE←rE-1, M(rE)←PC, PC←rD PC← M(rE); rE←rE+1 Parar
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
10
6.3.3 Repertorio de instrucciones máquina 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
Nemónico Parámetros 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 ejecución de una instrucción: tinstrucción= ni·T = ni/F 20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
11
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 (c) McGraw-Hill / Interamericana
12
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 codop
20-nov-01
rx
v
0000 0001 1010 0111; 01A7
LD r1,[A7] ⇒ r1 ← M(rD+A7)
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
13
6.3.3 Repertorio de instrucciones máquina 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 +
1
FFFF BC79
Bus de direcciones
00E2
FFFF
FFFE FFFF
732C BC79
00E2 FFFF
Bus de datos
2
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
14
6.3.3 Repertorio de instrucciones máquina: tipos de direccionamientos Dirección de memoria efectiva: defectiva = rD+v; rx ← M(defectiva)
Tipo de direccionamiento Directo
Indirecto a través de registro Indexado Relativo a base
Función o contenido del registro rD H’0000 dirección Registro índice (i) Registro base
Función o contenido del campo v dirección H’00 Dirección de referencia (DIRR) desplazamiento
Dirección efectiva v rD v+rD 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 (c) McGraw-Hill / Interamericana
15
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 codop
20-nov-01
rx
v
M(rD) ← r0 ⇒ ST [rD], r0 0001 0000 0000 0000; 1000
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
16
6.3.3 Repertorio de instrucciones máquina 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
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 (c) McGraw-Hill / Interamericana
17
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 codop
20-nov-01
rx
v
rF ← H’0001 ⇒ LLI rF, 01 0010 1111 0000 0001; 2F01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
18
6.3.3 Repertorio de instrucciones máquina Ejemplo
rF ← H’0001 ⇒ 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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
003C 2F01 00E2
FFFF
FFFE 732C FFFF BC79
19
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 codop
20-nov-01
rx
v
rF ← H’7F-- ⇒ LHI rF, 7F 0011 1111 0111 1111; 3F7F
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
20
6.3.3 Repertorio de instrucciones máquina Ejemplo
rF ← H’7F-- ⇒ 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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
003D 3F7F 00E2
FFFF
FFFE 732C FFFF BC79
21
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
codop
20-nov-01
rx
v
r1 ← IP2 ⇒ IN r1, IP2 0100 0001 0000 0010; 4102
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
22
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 rD 003B
0023 4102
r1 3BCF r0 BC79
OP1 1000
003B BC79 FFFE 732C FFFF BC79
3BCF
20-nov-01
IP2 3BCF
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
Bus de datos
23
6.3.3 Repertorio de Instrucciones Máquina OUT (salida) Instrucción: llevar el contenido de un registro a un puerto de salida 0101 (5 en hexadecial) Código de operación: Tipo de formato: F3 Instrucción en nemónico: OUT OPv,rx Descripción de función a realizar: OPv ← rx Ejemplo Formato F3 codop
20-nov-01
rx
v
OP1 ← rD ⇒ OUT OP1, rD 0101 1101 0000 0001; 5D01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
24
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 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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
25
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
codop
20-nov-01
Formato F4 rx rs
ra
r1 ← rD+rE ⇒ ADDS r1, rD,rE 0110 0001 1101 1110; 61DE
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
26
6.3.3 Repertorio de instrucciones máquina 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
Introducción a la Informática 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 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
codop
20-nov-01
Formato F4 rx rs
ra
r0 ← rD-rE ⇒ SUBS r0, rD,rE 0111 0000 1101 1110; 70DE
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
28
6.3.3 Repertorio de instrucciones máquina 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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
FFFF
29
6.3.3 Repertorio de Instrucciones Máquina NAND (operación lógica NAND)
Instrucción: resta del contenido de 2 registros Código de operación: 1000 (8 en hexadecial) Tipo de formato: F4 Instrucción en nemónico: NAND rx,rs,ra Descripción de función a realizar: rx ← (rs·ra)’
a
b
c=(a·b)’
0 0 1 1
0 1 0 1
1 1 1 0
Ejemplo codop
20-nov-01
Formato F4 rx rs
ra
r1 ← (rd·rE) ⇒ NAND r0, rD,rE 1000 0000 1101 1110; 80DE
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
30
6.3.3 Repertorio de instrucciones máquina Ejemplo IR 81DE
r1 ← (rd·rE) ⇒ NAND r0, rD,rE
Memoria principal
PC 003F
1000 0000 1101 1110; 80DE a
b
c=(a·b)’
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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
FFFF
31
Operación lógica NAND
a 0 0 1 1
b a NAND b 1 0 1 1 1 0 0 1
a b
20-nov-01
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
a
x NAND 1 = 1 ⇒ x=0
1
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
a’
32
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
codop
c
Formato F1 rx -
0 Ejemplo -
rD ← ↓rD ⇒ SHL rD 1001 1101 ---- ----; 9D00
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
33
6.3.3 Repertorio de instrucciones máquina 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
C ↓ - 1110 0000 0011 1011 1 1100 0000 0111 0110
FFFF
C076
FF Z 0 S 1 C 1 V 0
→ C076
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
34
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
codop
c
0
Formato F1 rx -
Ejemplo -
rD ← ↑rD ⇒ SHR rD 1010 1101 ---- ----; AD00
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
35
6.3.3 Repertorio de instrucciones máquina 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
Introducción a la Informática 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 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
codop
c
Formato F1 rx -
Ejemplo -
rD ← a↑rD ⇒ SHRA rD 1011 1101 ---- ----; BD00
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
37
6.3.3 Repertorio de instrucciones máquina Ejemplo
rD ← a↑rD ⇒ 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
Introducción a la Informática 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 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
codop 20-nov-01
Formato F2 cnd -
Ejemplo -
Salto incondicional a 0041
LLI rD,41 BR A.Prieto
Introducción a la Informática (c) McGraw-Hill / Interamericana
2D41 C000 39
6.3.3 Repertorio de instrucciones máquina 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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
40
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
codop
Formato F2 cnd -
20-nov-01
Ejemplo -
Llamada incondicional a 0041
LLI rD,41 CALLR Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
2D41 C000 41
6.3.3 Repertorio de instrucciones máquina 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
2
0043 007C 37AB 43C2
pila
FFFE 732C FFFF BC79
¡ojo!: El valor inicial de rD era F7FD
20-nov-01
0042 D100
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
1
42
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
codop
20-nov-01
Formato F0 -
Ejemplo
-
RET 1110 0000 0000 0000
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
E000
43
6.3.3 Repertorio de instrucciones máquina 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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
44
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
codop
20-nov-01
Formato F0 -
Ejemplo
-
HALT 1111 0000 0000 0000
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
F000
45
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 (c) McGraw-Hill / Interamericana
46
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 Nemónico hex Binario LLI r0,00 2000 0010 0000 0000 0000 LLI r1,01 2101 0010 0001 0000 0001
Explicación Cargar r0 con H’0000 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 (c) McGraw-Hill / Interamericana
47
6.3.4 Algunos trucos de programación Copiar el contenido de un registro en otro. Instrucción máquina Nemónico hex binario ADDS rE,r4,r0 6E40 0110 1110 0100 0000
Explicación rE←r4+0
Detectar si un número es cero o negativo. Instrucción m áquina Nem ónico hex binario ADDS r4,r4,r0 6440 0110 0100 0100 0000 BZ
C100 1100 0001 0000 0000
20-nov-01
explicación Sumar 0 al número para activar los biestables Saltar si el biestable de cero (Z) se activa
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
48
6.3.4 Algunos trucos de programación No hacer nada (consumir 7 ciclos de reloj). Instrucción máquina Nemónico hex binario ADDS r4,r4,r0 6440 0110 0100 0100 0000
Explicación r4←r4+0
Contadores ascendente y descendente. Instrucción máquina Nemónico hex binario ADDS r4,r4,r1 6441 0110 0100 0100 0001 SUBS r5,r5,r1 7551 0111 0101 0101 0001
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
explicación Incrementar de r4 en 1 Decrementar r5 en 1
49
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 Nemónico 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
explicación 0100 0000 0011 0000 1100 0100 0000 0011 0000
Comparar r5 con r4 Dirección de salto si son iguales Saltar si son iguales (Z=1) Dirección de salto si r4>r5 Saltar si r4>r5 (S=1) Dirección de salto si r4
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
50
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 (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 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 (c) McGraw-Hill / Interamericana
52
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 (c) McGraw-Hill / Interamericana
53
6.3.5 Ejemplo de programa Asignación de memoria
Parám etro o variable 0001 0000 DCDC DC PM Program a
20-nov-01
Registro
Posición 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 dirección de carga Dirección de carga Palabra a m em orizar Dirección de carga del program a
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
54
6.3.5 Ejemplo de programa Programa en nemónicos Rf. Dircc 00A0 00A1 00A2 00A3 00A4 00A5 (a) 00A6 00A7 00A8 00A9 00AA 00AB 00AC
20-nov-01
Instrucción Nemónico 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
Explicación Parte baja del mensaje Parte alta del mensaje Parámetro 0001 en r1 Parámetro 0000 en r0 Salida de mensaje DCDC Entrada de dirección de comienzo (DC) Salida de dirección de carga Entrada del valor a cargar Pasar la direcc. de carga al rD Memorizar palabra Incrementar en 1 dirección de carga Cargar en rD dirección de salto Salto incondicional a (a)
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
55
6.3.5 Ejemplo de programa Programa en código máquina Rf. Dircc
(a)
00A0 00A1 00A2 00A3 00A4 00A5 00A6 00A7 00A8 00A9 00AA 00AB 00AC
20-nov-01
Instrucción Nemónico 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
Explicación Parte baja del mensaje Parte alta del mensaje Parámetro 0001 en r1 Parámetro 0000 en r0 Salida de mensaje DCDC Entrada de dirección de comienzo (DC) Salida de dirección de carga Entrada del valor a cargar Pasar la direcc. de carga al rD Memorizar palabra Incrementar en 1 dirección de carga Cargar en rD dirección de salto Salto incondicional a (a)
Introducción a la Informática 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 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 (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) ¾ Parámetros: 9 Longitud de las tablas: 9 Dirección de inicio de T1: 9 Dirección de inicio de T2: 9 Dirección de inicio de T3:
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
nT = H’20 d1=H’0040 d2=H’0080 d3= H’00C0
58
6.3.5 Ejemplo de programa inicio
Algoritmo (organigrama).
Parámetros iniciales: 0,1, nT=0020, i=0
a
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 i←i+1
Comparar nT con i nT - i
b
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
si fin
S=1
no
59
6.3.5 Ejemplo de programa Asignación de registros y de memoria Parámetro Rtro Posición Comentario o variable memoria Para pasar el valor de un registro a otro r0 0000 Para incrementar el índice i r1 0001 Número 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 indexación rC i Programa 00A0 Dirección de carga del programa
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
60
6.3.5 Ejemplo de programa Redacción del programa en nemónicos Dirc 0010 0011 0012 0013 a 0014 0015 0016 0017 0018 0019 001A 001B 001C 001D 001E b 001F
20-nov-01
Instrucción Explicación Nemónico LLI r0,00 Inicializar r0 a 0 LLI r1,01 Inicializar r1 a 1 LLI r2,20 Tamaño de tabla: nT=H’20 LLI rC,00 Inicialización del índice: i=0 ADDS rD,rC,r0 Pasar el índice al registro de dirección 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 dirección 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 dirección de salto (continuar) BR Salto a (a) HALT Final del programa Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
61
6.3.5 Ejemplo de programa Redacción del programa en nemónicos Dirc 0010 0011 0012 0013 a 0014 0015 0016 0017 0018 0019 001A 001B 001C 001D 001E b 001F
20-nov-01
Instrucción Nemónico 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
máq. HEX 2000 2101 2220 2C00 6DC0 0340 0480 6534 15C0 6CC1 2DAF 7F2C C200 2DA4 C000 F000
Explicación Inicializar r0 a 0 Inicializar r1 a 1 Tamaño de tabla: nT=H’20 Inicialización del índice: i=0 Pasar el índice al registro de dirección 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 dirección de salto (final) Comparar nT con i Si S=1 el programa concluye, salta a (b) Cargar en rD dirección de salto (continuar) Salto a (a) Final del programa
Introducción a la Informática 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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
63
6.3.6 Utilización de CODE-2
CODE
on/off
Dirección /OP1
Paso a paso Contenido / OP2
dirección IR
PC Z
ALU
S
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
C V
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
registros cargar ejecutar continuar
64
6.3.6 Utilización de CODE-2 Elementos: Interruptores Teclado hexadecimal (IP1) Puertos de salida (OP1 y OP2) Teclas de órdenes Visualizadores on/off Pilotos
CODE
Dirección /OP1
Paso a paso Contenido / OP2
dirección IR
PC Z
ALU
S
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
C V
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
registros cargar ejecutar continuar
65
6.3.6 Utilización 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
Dirección /OP1
Paso a paso Contenido / OP2
dirección IR
PC Z
ALU
S
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
C V
20-nov-01
registros cargar ejecutar continuar
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
66
6.3.6 Utilización de CODE-2
CODE
on/off
Elementos: Teclas de órdenes: ¾ Dirección ¾ Registros ¾ Cargar ¾ Ejecutar ¾ Continuar
Dirección /OP1
Paso a paso Contenido / OP2
dirección IR
PC Z
ALU
S
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
C V
20-nov-01
registros cargar ejecutar continuar
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
67
¬
6.3.6 Utilización de CODE-2 Elementos: Visualizadores ¾ Contenido IP1 ¾ Puertos de salida OP1 y OP2 ¾ Rgtro. instrucción (IR) ¾ Contador de Progr. (PC)
uertos de salida OP1 y OP2
ontenido IP1
on/off Paso a paso
CODE
Dirección /OP1
Contenido / OP2
¾ Rgtro. instrucción (IR) ¾ Contador de Progr. (PC)
dirección
IR
PC
Z
ALU
S
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
C
V
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
registros cargar
ejecutar
continuar
68
6.3.6 Utilización de CODE-2
CODE
on/off Paso a paso Elementos: Pilotos ¾ ON/OFF ¾ Biestables indicadores: Z, S, C, V
Dirección /OP1
Contenido / OP2
dirección
IR
PC
ALU
Z S
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
C V
20-nov-01
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
registros cargar ejecutar continuar
69
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 (c) McGraw-Hill / Interamericana
70
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 (c) McGraw-Hill / Interamericana
71
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 (c) McGraw-Hill / Interamericana
72
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 (c) McGraw-Hill / Interamericana
73
6.3.6 Utilización de CODE-2 Ejemplo: carga y ejecución 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
Explicación Conexión de CODE-2 DIRECCIÓN 1ª dirección 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
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
74
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 (c) McGraw-Hill / Interamericana
75
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 (c) McGraw-Hill / Interamericana
76
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 (c) McGraw-Hill / Interamericana
77
Ensamblador de CODE (IEEE 694). Formatos [ETIQUETA:] NEMÓNICO
OPERANDO
Ejemplo: P1: ADDS P,P,uno
[;COMENTARIO]
;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 (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 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. 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 OPD’13
r4 ←M(rD+H’01) M(rD+H’00)←rE r7(15:8)←H’00; r7(7:0)←H’07 r7(15:8)←H’AB rD←IP1 OP0D←rx
Introducción a la Informática 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 OPD’13 ADDS rD,r3,r4 SUBS rF,r1,r0 NAND r7,r3,r5 SHL r6 SHR r5 SHRA r8
r4 ←M(rD+H’01) M(rD+H’00)←rE r7(15:8)←H’00; r7(7:0)←H’07 r7(15:8)←H’AB rD←IP1 OP0D←rx rD←r3+r4 rF←r1-r0 r7←(r3·r5)’ C←r6(15), r6(i)←r6(i-1), i=15,…,1; r6(0)←0 C←r5(0), r5(i)←r5(i+1), i=0,…,14; r5(15)←0 C←r8(0), r8(i)←r8(i+1), i=0,…,14
20-nov-01
Introducción a la Informática 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
rD←dir_P7; PC←rD Si Z=1 , rD←dir_alfa; PC←rD Si S=1 , rD←dir_P3; PC←rD Si C=1 , rD←dir_a; PC←rD Si V=1 , rD←dir_b; PC←rD rD←dir_P1, rE←rE-1, M(rE)←PC, PC←rD Si Z=1, rD←dir_a, rE←rE-1, M(rE)←PC, PC←rD Si S=1, rD←dir_b, rE←rE-1, M(rE)←PC, PC←rD Si C=1, rD←dir_f, rE←rE-1, M(rE)←PC, PC←rD Si V=1, rD←dir_c, rE←rE-1, M(rE)←PC, PC←rD PC← M(rE); rE←rE+1 Parar
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
81
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 ) 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 (c) McGraw-Hill / Interamericana
82
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 (c) McGraw-Hill / Interamericana
83
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 (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
H’A000 H’000D H´003B H’002C H’1 H’A730 H’0 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 ; carácter “CR” ; carácter “;” ; carácter “,” ; constante 1 ; puntero de la cadena ; número de sustituciones ; constante 0 ; elemento de la cadena en análisis ; llevar a rD el puntero de la cadena ; captar carácter de la cadena a analizar ; comparar con carácter “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 número de cambios ; salto incondicional a Paso 6 ; dar en salida el número de cambios ; fin de programa
Introducción a la Informática A.Prieto (c) McGraw-Hill / Interamericana
85
Ensamblador de CODE Ejemplo de programa
Comentarios para uso del programa: El programa YC, 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 (c) McGraw-Hill / Interamericana
86
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 (c) McGraw-Hill / Interamericana
87