Code 2 Manual
Code 2 Manual
Code 2 Manual
3 DESCRIPCIN DE UN COMPUTADOR
DIDACTICO ELEMENTAL A NIVEL DE
LENGUAJE MQUINA Y DE LENGUAJE
ENSAMBLADOR
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:
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
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
20-nov-01
Procesador
Memoria
Entradas
Salidas
RF
rF
SP
rE
drc.
rD
r1
r0
...
ALU
PC
OPv
64 Kp
=
128 KB
20-nov-01
IPv
v = 0,...255
20-nov-01
14
13
12
11
10
codop
F1
codop
rx
rx
registro destino
F2
codop
cnd
rs, ra
registros fuente
F3
codop
rx
valor inmediato
F4
codop
rx
rs
ra
cnd
(4 bits)
(4 bits)
(4 bits)
(4 bits)
R
Z
S
C
V
cnd
0000
0001
0010
0011
0100
9
Codop
Nombre
binario Hex
0000
0 Cargar
1 Almacenar
0001
0010
2 Carga inmediata baja
0011
3 Carga inmediata alta
0100
4 Entrada
0101
5 Salida
0110
6 Suma
7 Resta
0111
1000
8 NAND
1001
9 Desplaza izquierda
1010 A Desplaza derecha
1011 B Desplaza arit. dcha.
1100 C Salto
1101 D Subrutina
1110
E Retorno
1111
F Parar
20-nov-01
Nemnico Parmetros
LD
ST
LLI
LHI
IN
OUT
ADDS
SUBS
NAND
SHL
SHR
SHRA
BCALLRET
HALT
rx,[v]
[v],rx
rx,v
rx,v
rx,IPv
OPv,rx
Rx,rs,ra
rx,rs,ra
rx,rs,ra
rx
rx
rx
cnd
cnd
-
Explicacin
rxM(rD+v)
M(rD+v)rx
rx(15:8)H00; rx(7:0)v
rx(15:8)v
rxIPv
OPvrx
rxrs+ra
rxrs-ra
rx(rsra)
Crx(15), rx(i)rx(i-1), i=15,,1; rx(0)0
Crx(0), rx(i)rx(i+1), i=0,,14; rx(15)0
Crx(0), rx(i)rx(I+1), i=0,,14
Si cnd se cumple, PCrD
10
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
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
11
20-nov-01
12
20-nov-01
rx
LD r1,[A7] r1 M(rD+A7)
13
01A7
IR 01A7
LD r1,[A7] r1 M(rD+A7)
Es decir,
Memoria
principal
PC 00AC
r1 M(00E2)
0000 37BA
0001 4C54
Registros
rF 37BA
rE 4C54
rD 003B
r1
r0
A7
00AB 01A7
+
FFFF
BC79
Bus de direcciones
00E2
FFFF
FFFE
FFFF
732C
BC79
00E2
FFFF
Bus de datos
20-nov-01
14
Tipo de direccionamiento
Directo
Funcin o contenido
del registro rD
H0000
direccin
Registro ndice (i)
Registro base
Funcin o contenido
del campo v
direccin
H00
Direccin de referencia (DIRR)
desplazamiento
Direccin
efectiva
v
rD
v+rD
RD+v
15
20-nov-01
rx
M(rD) r0 ST [rD], r0
0001 0000 0000 0000; 1000
16
M(rD) r0 ST [rD], r0
IR 1000
Memoria
principal
PC 001A
Registros
0000 37BA
0001 4C54
rF 37BA
rE 4C54
rD 003B
0019 1000
003B
003B BC79
r1 FFFF
r0 BC79
FFFE 732C
FFFF BC79
BC79
Bus de direcciones
Bus de datos
20-nov-01
17
20-nov-01
rx
18
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
003C 2F01
00E2
FFFF
FFFE 732C
FFFF BC79
19
20-nov-01
rx
20
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
003D 3F7F
00E2
FFFF
FFFE 732C
FFFF BC79
21
codop
20-nov-01
rx
22
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
Bus de datos
23
20-nov-01
rx
24
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
25
codop
20-nov-01
Formato F4
rx
rs
ra
26
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
FF
Z 0
S 0
C 0
V 0
FFFF
FFFE 732C
FFFF BC79
27
codop
20-nov-01
Formato F4
rx
rs
ra
28
IR 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
93E7
00E2
4C54
E03B
FF
Z 0
S 1
C 0
V 0
FFFE 732C
FFFF BC79
93E7
FFFF
29
c=(ab)
0
0
1
1
0
1
0
1
1
1
1
0
Ejemplo
codop
20-nov-01
Formato F4
rx
rs
ra
30
Memoria
principal
PC 003F
c=(ab)
0
0
1
1
0
1
0
1
1
1
1
0
Registros
0000 37BA
0001 4C54
rF 0001
rE 4C54
rD E03B
003E 81DE
r1 BFEF
r0 4C19
00E2
E03B
4C54
NAND
BFEF
rd
rE
r0
E03B
4C54
20-nov-01
FF
Z 0
S 1
C 0
V 0
FFFE 732C
FFFF BC79
BFEF
FFFF
31
a
0
0
1
1
b a NAND b
1
0
1
1
1
0
0
1
a
b
20-nov-01
a b a NAND 1
01
1
11
0
a NAND 1
Complemento de a, o
a invertido
x NAND 1 = 0 x=1
x NAND 1 = 1 x=0
32
codop
Formato F1
rx
-
0
Ejemplo
-
rD rD SHL rD
1001 1101 ---- ----; 9D00
20-nov-01
33
rD rD SHL rD
IR 9D00
Memoria
principal
PC 0040
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
FFFF
C076
FF
Z 0
S 1
C 1
V 0
C076
34
SHR
codop
Formato F1
rx
-
Ejemplo
-
rD rD SHR rD
1010 1101 ---- ----; AD00
20-nov-01
35
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
FF
Z 0
S 0
C 0
V 0
FFFF
FFFE 732C
FFFF BC79
36
SHRA
codop
Formato F1
rx
-
Ejemplo
-
rD arD SHRA rD
1011 1101 ---- ----; BD00
20-nov-01
37
rD arD SHRA rD
1011 1101 ---- ----; BD00
IR BD00
Memoria
principal
PC 0042
0000 37BA
0001 4C54
Registros
rF 0001
rE 4C54
rD E03B
r1 FFEF
r0 4C19
0041 AD00
00E2
C076
a
E03B
20-nov-01
FF
Z 0
S 1
C 0
V 0
FFFF
FFFE 732C
FFFF BC79
38
codop
20-nov-01
Formato F2
cnd
-
Ejemplo
-
LLI rD,41
BR
A.Prieto
Introduccin a la Informtica
(c) McGraw-Hill / Interamericana
2D41
C000
39
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
40
codop
Formato F2
cnd
-
20-nov-01
Ejemplo
-
LLI rD,41
CALLR
Introduccin a la Informtica
A.Prieto
(c) McGraw-Hill / Interamericana
2D41
C000
41
LLI rD,3B
LHI rD,C0
CALLZ
2D3B
3DC0
D100
Registros
Memoria
principal
IR D100
PC C03B
0000 37BA
0001 4C54
C03B
0043
rF 0001
rE F7FC
rD C03B
r1 FFEF
r0 4C19
F7FC
F7FD
F7FE
F7FF
0043
007C
37AB
43C2
pila
FFFE 732C
FFFF BC79
ojo!:
El valor inicial de rD era F7FD
20-nov-01
0042 D100
42
PC M(rE); rErE+1
codop
20-nov-01
Formato F0
-
Ejemplo
RET
1110 0000 0000 0000
E000
43
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
44
Instruccin: parada
Cdigo de operacin: 1111 (F en hexadecial)
Tipo de formato: F0
Instruccin en nemnico:
HALT
Descripcin de funcin a realizar:
CODE-2 entra en estado de espera
codop
20-nov-01
Formato F0
-
Ejemplo
HALT
1111 0000 0000 0000
F000
45
HALT
1111 0000 0000 0000
F000
SI
CONTINUAR
Espera
Fase de captacin de
instruccin
Fase de ejecucin de
instruccin
20-nov-01
46
Explicacin
Cargar r0 con H0000
Cargar r1 con H0001
47
Explicacin
rEr4+0
20-nov-01
explicacin
Sumar 0 al nmero para activar
los biestables
Saltar si el biestable de cero (Z)
se activa
48
Explicacin
r4r4+0
20-nov-01
explicacin
Incrementar de r4 en 1
Decrementar r5 en 1
49
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
20-nov-01
51
20-nov-01
52
Organigrama
Parmetros iniciales:
DCDC, 1, 0
Entrada de palabra a
memorizar (PM)
Memorizar palabra
M(DC) PM
Incrementar DC
DC DC + 1
20-nov-01
53
Parm etro o
variable
0001
0000
DCDC
DC
PM
Program a
20-nov-01
Registro
Posicin
de
m em oria
r1
r0
rA
r2
r3
00A0
Com entario
Para el contador
Para pasar el valor de un rgtro. a otro
Mensaje para pedir direccin de carga
Direccin de carga
Palabra a m em orizar
Direccin de carga del program a
54
20-nov-01
Instruccin
Nemnico
LLI rA,DC
LHI rA,DC
LLI r1,01
LLI r0,00
OUT OP1,rA
IN r2,IP1
OUT OP1,r2
IN r3,IP1
ADDS rD,r2,r0
ST 00,r3
ADDS r2,r2,r1
LLI rD,A6
BR
Explicacin
Parte baja del mensaje
Parte alta del mensaje
Parmetro 0001 en r1
Parmetro 0000 en r0
Salida de mensaje DCDC
Entrada de direccin de comienzo (DC)
Salida de direccin de carga
Entrada del valor a cargar
Pasar la direcc. de carga al rD
Memorizar palabra
Incrementar en 1 direccin de carga
Cargar en rD direccin de salto
Salto incondicional a (a)
55
(a)
00A0
00A1
00A2
00A3
00A4
00A5
00A6
00A7
00A8
00A9
00AA
00AB
00AC
20-nov-01
Instruccin
Nemnico
hex
LLI rA,DC
2ADC
LHI rA,DC
3ADC
LLI r1,01
2101
LLI r0,00
2000
OUT OP1,rA
5A01
IN r2,IP1
4012
OUT OP1,r2
5201
IN r3,IP1
4301
ADDS rD,r2,r0 6D20
ST 00,r3
1300
ADDS r2,r2,r1 6221
LLI rD,A6
2DA6
BR
C000
Explicacin
Parte baja del mensaje
Parte alta del mensaje
Parmetro 0001 en r1
Parmetro 0000 en r0
Salida de mensaje DCDC
Entrada de direccin de comienzo (DC)
Salida de direccin de carga
Entrada del valor a cargar
Pasar la direcc. de carga al rD
Memorizar palabra
Incrementar en 1 direccin de carga
Cargar en rD direccin de salto
Salto incondicional a (a)
56
20-nov-01
57
20-nov-01
nT = H20
d1=H0040
d2=H0080
d3= H00C0
58
Algoritmo (organigrama).
Parmetros iniciales:
0,1,
nT=0020, i=0
Leer dato de T1
r3 M(d1+i)
Leer dato de T2
r4 M(d2+i)
Suma de datos
r5 r3 + r4
Memorizar suma en T3
M(d3+i) r5
Incrementar i
ii+1
Comparar nT con i
nT - i
20-nov-01
si
fin
S=1
no
59
20-nov-01
60
20-nov-01
Instruccin
Explicacin
Nemnico
LLI r0,00
Inicializar r0 a 0
LLI r1,01
Inicializar r1 a 1
LLI r2,20
Tamao de tabla: nT=H20
LLI rC,00
Inicializacin del ndice: i=0
ADDS rD,rC,r0 Pasar el ndice al registro de direccin
LD r3,[40]
Llevar a r3 el elemento de T1
LD r4,[80]
Llevar a r4 el elemento de T2
ADDS r5,r3,r4 Suma de elementos de T1 y T2 en r5
ST [C0],r5
Almacenar nuevo elemento de T3
ADDS rC,rC,r1 Incrementar el ndice
LLI rD,1F
Cargar en rD direccin de salto (final)
SUBS rF,r2,rC Comparar nT con i
BS
Si S=1 el programa concluye, salta a (b)
LLI rD,14
Cargar en rD direccin de salto (continuar)
BR
Salto a (a)
HALT
Final del programa
Introduccin a la Informtica A.Prieto
(c) McGraw-Hill / Interamericana
61
20-nov-01
Instruccin
Nemnico
LLI r0,00
LLI r1,01
LLI r2,20
LLI rC,00
ADDS rD,rC,r0
LD r3,[40]
LD r4,[80]
ADDS r5,r3,r4
ST [C0],r5
ADDS rC,rC,r1
LLI rD,1F
SUBS rF,r2,rC
BS
LLI rD,14
BR
HALT
mq.
HEX
2000
2101
2220
2C00
6DC0
0340
0480
6534
15C0
6CC1
2DAF
7F2C
C200
2DA4
C000
F000
Explicacin
Inicializar r0 a 0
Inicializar r1 a 1
Tamao de tabla: nT=H20
Inicializacin del ndice: i=0
Pasar el ndice al registro de direccin
Llevar a r3 el elemento de T1
Llevar a r4 el elemento de T2
Suma de elementos de T1 y T2 en r5
Almacenar nuevo elemento de T3
Incrementar el ndice
Cargar en rD direccin de salto (final)
Comparar nT con i
Si S=1 el programa concluye, salta a (b)
Cargar en rD direccin de salto (continuar)
Salto a (a)
Final del programa
62
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
63
CODE
on/off
Direccin /OP1
Paso a paso
Contenido / OP2
direccin
IR
PC
Z
ALU
C
V
20-nov-01
registros
cargar
ejecutar
continuar
64
CODE
Direccin /OP1
Paso a paso
Contenido / OP2
direccin
IR
PC
Z
ALU
C
V
20-nov-01
registros
cargar
ejecutar
continuar
65
CODE
on/off
Direccin /OP1
Paso a paso
Contenido / OP2
direccin
IR
PC
Z
ALU
C
V
20-nov-01
registros
cargar
ejecutar
continuar
66
CODE
on/off
Elementos:
Teclas de rdenes:
Direccin
Registros
Cargar
Ejecutar
Continuar
Direccin /OP1
Paso a paso
Contenido / OP2
direccin
IR
PC
Z
ALU
C
V
20-nov-01
registros
cargar
ejecutar
continuar
67
ontenido IP1
on/off
Paso a paso
CODE
Direccin /OP1
Contenido / OP2
direccin
IR
PC
ALU
20-nov-01
registros
cargar
ejecutar
continuar
68
CODE
on/off
Paso a paso
Elementos:
Pilotos
ON/OFF
Biestables indicadores: Z,
S, C, V
Direccin /OP1
Contenido / OP2
direccin
IR
PC
ALU
Z
S
C
V
20-nov-01
registros
cargar
ejecutar
continuar
69
20-nov-01
70
71
72
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
73
rden
Explicacin
Conexin de CODE-2
DIRECCIN 1 direccin del programa
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
Carga del programa
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
CARGAR
EJECUTAR Ejecutar el programa
74
20-nov-01
75
76
77
Ensamblador de CODE
(IEEE 694). Formatos
[ETIQUETA:] NEMNICO
OPERANDO
[;COMENTARIO]
;incrementar P
78
Ensamblador de CODE
Instrucciones
Observaciones:
rx, rs, ra es un registro (r0 a rF o R0 a RF) o un nombre simblico de
registro (definido con EQU) o una variable-registro (definida con DR).
v es un nmero de 0 a 255, en base decimal (Dnmero),
hexadecimal (Hnmero o nmero), octal (Qnmero) o binaria
(Bnmero).
etiqueta es la etiqueta de la instruccin a la que se desea hacer la
bifurcacin.
dir_etiqueta significa la direccin donde se encuentra la etiqueta
especificada.
Nombre
Ensamblador
CODE-2
LD rx,[rD+v]
Cargar
ST [rD+v],rx
Almacenar
Carga inmediata baja LLI rx,v
Carga inmediata alta LHI rx,v
IN rx,IPv
Entrada
OUT OPv,rx
Salida
20-nov-01
Ejemplo
LD r4,[01]
ST [00],rE
LLI r7,07
LHI r7, AB
IN rD,IP1
OUT OPD13
r4 M(rD+H01)
M(rD+H00)rE
r7(15:8)H00; r7(7:0)H07
r7(15:8)HAB
rDIP1
OP0Drx
79
Ensamblador de CODE
Instrucciones
Nombre
Ensamblador
CODE-2
Ejemplo
Cargar
Almacenar
Carga inmediata baja
Carga inmediata alta
Entrada
Salida
Suma
Resta
NAND
Desplaza izquierda
Desplaza derecha
Desplaza arit. dcha.
LD rx,[rD+v]
ST [rD+v],rx
LLI rx,v
LHI rx,v
IN rx,IPv
OUT OPv,rx
ADDS rx,rs,ra
SUBS rx,rs,ra
NAND rx,rs,ra
SHL rx
SHR rx
SHRA rx
LD r4,[01]
ST [00],rE
LLI r7,07
LHI r7, AB
IN rD,IP1
OUT OPD13
ADDS rD,r3,r4
SUBS rF,r1,r0
NAND r7,r3,r5
SHL r6
SHR r5
SHRA r8
r4 M(rD+H01)
M(rD+H00)rE
r7(15:8)H00; r7(7:0)H07
r7(15:8)HAB
rDIP1
OP0Drx
rDr3+r4
rFr1-r0
r7(r3r5)
Cr6(15), r6(i)r6(i-1), i=15,,1; r6(0)0
Cr5(0), r5(i)r5(i+1), i=0,,14; r5(15)0
Cr8(0), r8(i)r8(i+1), i=0,,14
20-nov-01
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
BR P7
BZ alfa
BS P3
BC a
BV b
CALLR P1
CALLZ a
CALLS b
CALLC f
CALLV c
rDdir_P7; PCrD
Si Z=1 , rDdir_alfa; PCrD
Si S=1 , rDdir_P3; PCrD
Si C=1 , rDdir_a; PCrD
Si V=1 , rDdir_b; PCrD
rDdir_P1, rErE-1, M(rE)PC, PCrD
Si Z=1, rDdir_a, rErE-1, M(rE)PC, PCrD
Si S=1, rDdir_b, rErE-1, M(rE)PC, PCrD
Si C=1, rDdir_f, rErE-1, M(rE)PC, PCrD
Si V=1, rDdir_c, rErE-1, M(rE)PC, PCrD
PC M(rE); rErE+1
Parar
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
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
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
84
Ensamblador de CODE
Ejemplo de programa: Programa en ensamblador
CR
PYC
C
uno
P
NC
0
EC
P1:
P6:
P8:
P11:
20-nov-01
ORG
DR
DR
DR
DR
DR
DR
DR
EQU
ADDS
LD
SUBS
BZ
SUBS
BZ
ADDS
BR
ADDS
ST
ADDS
BR
OUT
HALT
HA000
H000D
H003B
H002C
H1
HA730
H0
0
r7
rD,P,0
EC,[rD]
rF,EC,CR
P11
rF,EC,PYC
P8
P,P,uno
P1
rD,P,0
[rD],C
NC,NC,uno
P6
OP02,NC
85
Ensamblador de CODE
Ejemplo de programa
20-nov-01
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
87