Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3 DESCRIPCIÓN DE UN COMPUTADOR
DIDACTICO ELEMENTAL A NIVEL DE
LENGUAJE MÁQUINA Y DE LENGUAJE
ENSAMBLADOR
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
N=16 bits,
Enteros con operaciones en complemento a 2:
Nmayor= 216-1-1=32.767 ; Nmenor -216-1=-32.768
magnitud
signo
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
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
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
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
Ejemplo
Formato F3 0000 0001 1010 0111; 01A7
codop rx v
LD r1,[A7] ⇒ r1 ← M(rD+A7)
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
Ejemplo
Formato F3
M(rD) ← r0 ⇒ ST [rD], r0
codop rx v
0001 0000 0000 0000; 1000
Ejemplo
M(rD) ← r0 ⇒ ST [rD], r0
IR 1000
0001 0000 0000 0000; 1000
PC 001A Memoria
principal
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
Ejemplo
Formato F3
rF ← H’0001 ⇒ LLI rF, 01
codop rx v
0010 1111 0000 0001; 2F01
Ejemplo
Ejemplo
Formato F3 rF ← H’7F-- ⇒ LHI rF, 7F
codop rx v
0011 1111 0111 1111; 3F7F
Ejemplo
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
Ejemplo
IR 4102
PC 0024 Memoria
principal
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
Ejemplo
PC 0025 Memoria
principal
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
Ejemplo
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
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
Ejemplo
Ejemplo
Formato F4 r1 ← (rd·rE) ⇒ NAND r0, rD,rE
codop rx rs ra
1000 0000 1101 1110; 80DE
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
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
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
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
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
0000 37BA
Registros 0001 4C54
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
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
Formato F0 Ejemplo
codop - - -
RET
1110 0000 0000 0000 E000
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
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
Ejemplo
HALT
1111 0000 0000 0000 F000
SI CONTINUAR
Espera
Fase de captación de
instrucción
Fase de ejecución de
instrucción
inicio
Organigrama
Parámetros iniciales:
DCDC, 1, 0
a
Salida en OP1 del valor de DC
Entrada de palabra a
memorizar (PM)
Memorizar palabra
M(DC) ← PM
Incrementar DC
DC ← DC + 1
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
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)
¾ 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
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
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
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
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
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
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
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)
Paso a paso
IR
PC
ALU
¬
Z
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
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
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)
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
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
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.