SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
CS2: Unidad de datos (UD)
Cambios
respecto al CS1:
• Ancho datos:
12 bits
• Ancho
direcciones:
8 bits
• Rotación del
registro AC con
carry
• Decremento y
detección de
cero en RT
• PC accesible
desde el bus de
datos
• Puntero de pila
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
s
r
ALU
12
8
R W
AB
DB
RAM
28x12
CONTROLXs
IR[12]
4
8
W4,
W8,
R8
MAR[8]
TPC,
TIR,
TSP
PC[8]
8
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
ZAC,
RAC,
0000
4
CIM
DB11-8
DB11-8
DB7-0
8 4
IR11-8
IR7-0
Cout
SC,
CC
Z
C
Z
C
TPC
TIR
TSP
DB7-08
CS2: UD. Cambios relacionados con el registro AC
• Ahora es un registro universal, permitiendo desplazamientos en
ambos sentidos (RR, RL)
• Sus entradas y salidas serie están conectadas al biestable C
• Al activar las señales de desplazamiento RR ó RL, lo que se
produce es una rotación del contenido de AC con C: instrucciones
ROR y ROL
AC[12]
WAC,
RR, RL
r
ALU
C
ZAC,
RAC,
CIM Cout
SC,
CC
C
AC[12]
WAC,
RR, RL
r
ALU
C
ZAC,
RAC,
CIM Cout
SC,
CC
C
Ejemplo:
C=1, AC11-0=011101110111
ROL ↓
C=0, AC11-0=111011101111
C=1, AC11-0=011101110111
ROR ↓
C=1, AC11-0=101110111011
• El biestable C almacena el carry generado en las operaciones
realizadas con la ALU, y también puede ser puesto a 0 ó 1 (CC,
SC) en cualquier momento: instrucciones CLC y SEC
CS2: UD. Cambios relacionados con el registro RT
• En el CS2 es un contador descendente: incorpora una entrada
de decremento (DT) y una salida de borrow (Z) [detección de 0]
• Sus salidas está conectadas al bus de datos, por lo que puede
escribir a memoria (además de leer desde ella, que ya era posible
en el CS1)
• Por tanto, permite decrementar datos almacenados en memoria
• Instrucción DBZ dir_dato
RT
WT, RT,
DT
12
R W
AB
DB
RAM
28x12
Z
RT
WT, RT,
DT
12
R W
AB
DB
RAM
28x12
Z
88
CS2: UD. Cambios relacionados con el registro PC
• El registro PC (Program Counter), al igual que en el CS1,
contiene la dirección de la próxima instrucción a ejecutar
• En el CS2 las direcciones son de 8 bits, por lo que el PC ha
tenido que ser redimensionado a ese tamaño
• El PC se incrementa automáticamente en la fase de búsqueda
de cada instrucción, al igual que en el CS1
• Además, en el CS2, el valor del PC puede ser modificado desde
el bus de datos, en particular, desde IR7-0
• Esto permite romper la ejecución secuencial de instrucciones y
saltar a cualquier punto del programa
• instrucción de salto incondicional: JMP dir_destino
• instrucción de salto condicional (carry = 1): BCS dir_destino
CS2: UD. Registro SP. La pila (stack)
• La pila es una estructura de datos que reside en memoria
• El registro SP (Stack Pointer, puntero de pila) apunta a la cima
de la pila
• En el CS2, la pila crece desde la dirección más alta ($FF) hacia
direcciones más bajas
• Operaciones sobre la pila:
• PUSH: añadir un elemento en la cima de la pila
• PULL: extraer el elemento situado en la cima de la pila
• La pila permite los saltos y retornos de subrutinas: en el CS2,
éste es el único uso que se hace de ella, instrucciones JSR y RTS
CS2: UD. Pila. Operaciones
Añadir un elemento
PUSH
SP SP – 1
RAM(SP) pN+1
Extraer un elemento
PULL
pN RAM(SP)
SP SP + 1
p1
p2
pN
pN-1
pN+1SP
$FF
$FE
p1
p2
pN
pN-1SP
$FF
$FE
Memoria
Memoria
p1
p2
pN
pN-1
SP
$FF
$FE
Memoria
CS2: UD. Pila. Subrutinas
• Una subrutina es una secuencia de instrucciones que realizan
una cierta tarea a partir de unos datos de entrada, generando
unos datos de salida
• Cuando un programa necesita realizar la tarea, hace una
llamada a la subrutina, ésta se ejecuta y cuando termina, el
programa se reanuda por donde se había quedado (retorno de
subrutina)
• Una subrutina se puede
llamar todas las veces que el
programa lo necesite
• Una subrutina puede llamar
a su vez a otra subrutina:
ejecución anidada de
subrutinas
• Una subrutina puede
llamarse a sí misma:
subrutinas recursivas
tarea
tarea
tarea
tarea
Programa
principal
Subrutina
Programa
(sin uso de
subrutinas)
...
llamada a subr
...
...
llamada a subr
...
llamada a subr
...
...
retorno
tarea
tarea
tarea
tarea
Programa
principal
Subrutina
Programa
(sin uso de
subrutinas)
...
llamada a subr
...
...
llamada a subr
...
llamada a subr
...
...
retorno
CS2: UD. Pila. Subrutinas: llamada y retorno (1)
En el CS2:
JSR = instrucción de salto a subrutina
RTS = instrucción de retorno de subrutina
Memoria
$2A
$29
$2B
$2C RTS
subrutina
SP $00
JSR $29
$01
1. Salto a subrutina en $29,
guardando la dirección de
retorno $03 en la pila
2. Ejecución de la subrutina
3. Retorno al programa principal,
extrayendo la dirección de
retorno desde la pila
PC $02
$03
Para que el CS2, tras la ejecución
de la subrutina, pueda volver al
programa principal, debe
almacenar la dirección de retorno
($03, en este caso) antes de
efectuar el salto: para ello se usa
la pila
$FE
$FF
CS2: UD. Pila. Subrutinas: llamada y retorno (2)
En el CS2:
JSR = instrucción de salto a subrutina
RTS = instrucción de retorno de subrutina
Memoria
$2A
$29
$2B
$2C
PC
RTS
subrutina
JSR $29
$00
$01
1. Salto a subrutina en $29,
guardando la dirección de
retorno $03 en la pila
2. Ejecución de la subrutina
3. Retorno al programa principal,
extrayendo la dirección de
retorno desde la pila
$02
$03
$003
$FE
SP $FF
CS2: UD. Pila. Subrutinas: llamada y retorno (2)
En el CS2:
JSR = instrucción de salto a subrutina
RTS = instrucción de retorno de subrutina
Memoria
$2A
$29
$2B
$2C
PC
RTS
subrutina
JSR $29
$00
$01
1. Salto a subrutina en $29,
guardando la dirección de
retorno $03 en la pila
2. Ejecución de la subrutina
3. Retorno al programa principal,
extrayendo la dirección de
retorno desde la pila
$02
$03
$003
$FE
SP $FF
CS2: UD. Pila. Subrutinas: llamada y retorno (2)
En el CS2:
JSR = instrucción de salto a subrutina
RTS = instrucción de retorno de subrutina
Memoria
$2A
$29
$2B
$2C
PC
RTS
subrutina
JSR $29
$00
$01
1. Salto a subrutina en $29,
guardando la dirección de
retorno $03 en la pila
2. Ejecución de la subrutina
3. Retorno al programa principal,
extrayendo la dirección de
retorno desde la pila
$02
$03
$003
$FE
SP $FF
CS2: UD. Pila. Subrutinas: llamada y retorno (3)
En el CS2:
JSR = instrucción de salto a subrutina
RTS = instrucción de retorno de subrutina
Memoria
$2A
$29
$2B
$2CPC RTS
subrutina
JSR $29
$00
$01
1. Salto a subrutina en $29,
guardando la dirección de
retorno $03 en la pila
2. Ejecución de la subrutina
3. Retorno al programa principal,
extrayendo la dirección de
retorno desde la pila
$02
$03
$003
$FE
SP $FF
CS2: UD. Pila. Subrutinas: llamada y retorno (fin)
En el CS2:
JSR = instrucción de salto a subrutina
RTS = instrucción de retorno de subrutina
Memoria
$2A
$29
$2B
$2C RTS
subrutina
SP $00
JSR $29
$01
1. Salto a subrutina en $29,
guardando la dirección de
retorno $03 en la pila
2. Ejecución de la subrutina
3. Retorno al programa principal,
extrayendo la dirección de
retorno desde la pila
$02
PC $03
$003
$FE
$FF
CS2: UD. Pila. Subrutinas: subrutinas anidadas
JSR $29
SP
$FF
$FE
Memoria
$00
$02
$01
$03
$29
PC
RTS
subr1
$FD
$3C
RTS
subr2
JSR $3C$2A
$2B
$2C
Prog.
principal Subrutina 1 Subrutina 2
JSR $3C
RTS
JSR $29
RTS
CS2: UD. Pila. Subrutinas: subrutinas anidadas (2)
Memoria
$29PC
RTS
subr1
JSR $3C$2A
$2B
$2C
JSR $29
SP $FF
$FE
$00
$02
$01
$03
$FD
$3C
RTS
subr2
$003
Prog.
principal Subrutina 1 Subrutina 2
JSR $3C
RTS
JSR $29
RTS
CS2: UD. Pila. Subrutinas: subrutinas anidadas (3)
Memoria
$29
PC
RTS
subr1
JSR $3C$2A
$2B
$2C
JSR $29
SP $FF
$FE
$00
$02
$01
$03
$FD
$3C
RTS
subr2
$003
Prog.
principal Subrutina 1 Subrutina 2
JSR $3C
RTS
JSR $29
RTS
CS2: UD. Pila. Subrutinas: subrutinas anidadas (4)
Memoria
JSR $29
SP
$FF
$FE
$00
$02
$01
$03
$29
PC
RTS
subr1
$FD
$3C
RTS
subr2
JSR $3C
$003
$2A
$2B
$2C
$02B
Prog.
principal Subrutina 1 Subrutina 2
JSR $3C
RTS
JSR $29
RTS
CS2: UD. Pila. Subrutinas: subrutinas anidadas (5)
Memoria
JSR $29
SP
$FF
$FE
$00
$02
$01
$03
$29
PC
RTS
subr1
$FD
$3C
RTS
subr2
JSR $3C
$003
$2A
$2B
$2C
$02B
Prog.
principal Subrutina 1 Subrutina 2
JSR $3C
RTS
JSR $29
RTS
CS2: UD. Pila. Subrutinas: subrutinas anidadas (6)
Memoria
$29
PC
RTS
subr1
JSR $3C$2A
$2B
$2C
JSR $29
SP $FF
$FE
$00
$02
$01
$03
$FD
$3C
RTS
subr2
$003
$02B
Prog.
principal Subrutina 1 Subrutina 2
JSR $3C
RTS
JSR $29
RTS
CS2: UD. Pila. Subrutinas: subrutinas anidadas (7)
Memoria
$29
PC RTS
subr1
JSR $3C$2A
$2B
$2C
JSR $29
SP $FF
$FE
$00
$02
$01
$03
$FD
$3C
RTS
subr2
$003
$02B
Prog.
principal Subrutina 1 Subrutina 2
JSR $3C
RTS
JSR $29
RTS
CS2: UD. Pila. Subrutinas: subrutinas anidadas (8)
JSR $29
SP
$FF
$FE
Memoria
$00
$02
$01
$03
$29
PC
RTS
subr1
$FD
$3C
RTS
subr2
JSR $3C
JSR $29
JSR $3C
RTS
RTS
$003
$2A
$2B
$2C
$02B • La ejecución anidada de subrutinas es
posible gracias a la pila (íd. recursiva)
Prog.
principal Subrutina 1 Subrutina 2
CS2: Instrucciones. Conjunto de instrucciones
(*) Nótese que el
registro PC es
incrementado durante la
fase de búsqueda de la
instrucción (al igual que
el CS1), por lo que, al
comenzar la fase de
ejecución, PC está
apuntando a la siguiente
instrucción.
M = RAM C = bit de carry - = no importa
El modo de
direccionamiento
(Direcc.) de una instrucción
indica cómo ésta referencia
al operando. Según el
modo, los bits A7-0 del
código de instrucción
pueden indicar:
• Inmediato:
A7-0 ≡ dato = operando (8
bits)
• Directo:
A7-0 ≡ dir (dirección del
operando)
M(dir) = operando (12 bits)
• Indirecto:
A7-0 ≡ punt (puntero al
operando)
M7-0(punt) = dirección del
operando
M(M7-0(punt)) = operando
(12 bits)
Instrucción Mnemónico Operación Tipo Direcc. Descripción
0000 A7 ... A0 LAIM dato AC ← dato Transf. Inmediato Carga AC con valor inmediato
0001 A7 ... A0 LDA dir AC ← M(dir) Transf. Directo Carga AC desde RAM
0010 A7 ... A0 STA dir M(dir) ← AC Transf. Directo Almacena AC en RAM
0011 A7 ... A0 ADD dir AC ← AC + M(dir) Aritm. Directo Suma
0100 A7 ... A0 SUB dir AC ← AC – M(dir) Aritm. Directo Resta
0101 A7 ... A0 ADDI punt AC ← AC + M(M7-0(punt)) Aritm. Indirecto Suma indirecta
0110 -------- ROR AC ← SHR(AC, C), C ← AC0 Lógica Implícito Rotación a la dch. con carry
0111 -------- ROL C ← AC11, AC ← SHL(AC, C) Lógica Implícito Rotación a la izq. con carry
1000 A7 ... A0 JMP dir PC ← dir Salto
incond.
Directo Salto incondicional
1001 A7 ... A0 BCS dir C: PC ← dir Salto
cond.
Directo Salto condicional si carry
1010 A7 ... A0 DBZ dir M(dir) ← M(dir) – 1
Z: PC ← PC+1 (*)
Salto
cond.
Directo Salto condicional si cero
(bit Z)
1011 -------- CLC C ← 0 Estado Implícito Pone carry a 0
1100 -------- SEC C ← 1 Estado Implícito Pone carry a 1
1101 -------- STOP Control Implícito Detiene la ejecución
1110 A7 ... A0 JSR dir SP ← SP – 1
M(SP) ← PC (*)
PC ← dir
Salto Directo Salto a subrutina
1111 -------- RTS PC ← M(SP)
SP ← SP + 1
Salto Implícito Retorno de subrutina
CS2: Instrucciones. Modos de direccionamiento
• Inmediato:
• el dato (operando) está
incluido en la propia
instrucción
LAIM $9FPC
Memoria
CO CD
$9FLAIM
instrucción
dato
AC ← $9FLAIM $9F
CS2: Instrucciones. Modos de direccionamiento (2)
$9F
• Directo:
• hay que buscar el dato
(operando) en la memoria;
• la instrucción incluye la
dirección del dato
$A2
ADD $9FPC
Memoria
$9F
dirección
del dato
dato
CO CD
$9FADD
instrucción
AC ← AC + $A2ADD $9F
CS2: Instrucciones. Modos de direccionamiento (3)
$9F$9F
• Indirecto:
• hay que buscar el dato
(operando) en la memoria;
• la instrucción incluye un
puntero al dato
$A2
ADDI $9FPC
Memoria
$9Fpuntero
dato
CO CD
$9FADDI
instrucción
$1C$A2
dirección
del dato
$A2
AC ← AC + $1CADDI $9F
CS2: Instrucciones. Modos de direccionamiento (4)
• Implícito:
• el dato (operando) se
sobreentiende, no está
almacenado en ningún sitio
CLCPC
Memoria
CO CD
--CLC
instrucción
C ← 0CLC
CS2: Instrucciones. Desarrollo en µops
Fase de búsqueda
Operación Nivel RT Señales de control
(cualquiera) 1. MAR ← PC
2. IR ← RAM;
PC ← PC + 1
TPC
R, W4, W8, IPC
Tras la fase de búsqueda:
• IR11-8 contiene el código de operación de la instrucción
• IR7-0 puede contener, según el tipo de direccionamiento de la
instrucción:
• el operando (direccionamiento inmediato,
IR7-0 ≡ dato de 8 bits)
• la dirección del operando (direccionamiento directo,
IR7-0 ≡ dir)
• un puntero al operando (direccionamiento indirecto,
IR7-0 ≡ punt)
CS2: Instrucciones. Desarrollo en µops (2)
Fase de ejecución
Operación Nivel RT Señales de control
LAIM dato
AC ← dato
1. RT ← 011-8 IR7-0 ; AC ← 0
2. AC ← AC + RT
R8, CIM, WT, ZAC
RT, s, WAC
LDA dir
AC ← M(dir)
1. MAR ← IR
2. RT ← RAM; AC ← 0
3. AC ← AC + RT
TIR
ZAC, WT, R
RT, s, WAC
STA dir
M(dir) ← AC
1. MAR ← IR
2. RAM ← AC
TIR
RAC, W
ADD dir
AC ← AC + M(dir)
1. MAR ← IR
2. RT ← RAM
3. AC ← AC + RT
TIR
WT, R
RT, s, WAC
SUB dir
AC ← AC – M(dir)
1. MAR ← IR
2. RT ← RAM
3. AC ← AC – RT
TIR
WT, R
RT, r, WAC
ADDI punt
AC ← AC + M(M7-0(punt))
1. MAR ← IR
2. IR7-0 ← RAM7-0
3. MAR ← IR
4. RT ← RAM
5. AC ← AC + RT
TIR
R, W8
TIR
R, WT
RT, s, WAC
ROR
AC ← SHR(AC, C)
1. AC ← SHR(AC, C);
C ← AC0
RR
ROL
AC ← SHL(AC, C)
1. AC ← SHR(AC, C);
C ← AC11
RL
CS2: Instrucciones. Desarrollo en µops (3)
Fase de ejecución
Operación Nivel RT Señales de control
JMP dir
PC ← dir
1. PC ← IR7-0 R8, WPC
BCS dir
C: PC ← dir
1. C: PC ← IR7-0 R8, WPC
DBZ dir
M(dir) ← M(dir) - 1
Z: PC ← PC+1
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
TIR
R, WT
DT
RT, W, IPC
CLC
C ← 0
1. C ← 0 CC
SEC
C ← 1
1. C ← 1 SC
STOP NOP -
JSR dir
SP ← SP – 1
M(SP) ← PC
PC ← dir
1. SP ← SP – 1
2. MAR ← SP
3. RAM ← PC
4. PC ← IR7-0
DS
TSP
RPC, W
R8, WPC
RTS
PC ← M(SP)
SP ← SP + 1
1. MAR ← SP
2. PC ← RAM;
SP ← SP + 1
TSP
R, WPC, IS
CS2: Instrucciones. Ejecución de DBZ: estado previo
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
W4,
W8,
R8
MAR[8]
PC[8]
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-0
$A $A0
(DBZ)
$05
$AA0$04
$A0 $001
$06
≡ DBZ $A0
$803
$D00
R W
TPC,
TIR,
TSP
8
8 12
8
DB11-8
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
PC $05
Z
C
ZAC,
RAC,
CS2: Instrucciones. Ejecución de DBZ: ciclo 1
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
W4,
W8,
R8
MAR[8]
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-0
$04
$A0
PC[8]
$05
PC $05
$06
$001
$A $A0
(DBZ)
$AA0 ≡ DBZ $A0
$803
$D00
R W
TPC,
TIR,
TSP
8
8 12
8
DB11-8
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
Z
C
ZAC,
RAC,
CS2: Instrucciones. Ejecución de DBZ: ciclo 2
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
8
W4,
W8,
R8
MAR[8]
TPC,
TIR,
TSP
8
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-08
$A0
$A0
$04
$A0
PC[8]
$05
PC $05
$06
$001
$A $A0
(DBZ)
$AA0 ≡ DBZ $A0
$803
$D00
R W
$00112
DB11-8
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
Z
C
ZAC,
RAC,
CS2: Instrucciones. Ejecución de DBZ: ciclo 3 (operando=1)
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
8
W4,
W8,
R8
MAR[8]
TPC,
TIR,
TSP
8
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-08
$001
$A0
$A0
$04
$A0
PC[8]
$05
PC $05
$06
$001
$A $A0
(DBZ)
$AA0 ≡ DBZ $A0
$803
$D00
R W
12
DB11-8
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
Z
C
ZAC,
RAC,
CS2: Instrucciones. Ejecución de DBZ: ciclo 4 (operando=1)
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
8
W4,
W8,
R8
MAR[8]
TPC,
TIR,
TSP
8
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-08
$000
$A0
$A0
$04
$A0
PC[8]
$05
PC $05
$06
$001
$A $A0
(DBZ)
$AA0 ≡ DBZ $A0
$803
$D00
R W
$00012
DB11-8
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
Z
C
ZAC,
RAC,
CS2: Instrucciones. Ejecución de DBZ: final (operando=1)
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
W4,
W8,
R8
MAR[8]
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-0
$000
$04
$A0 $000
PC[8]
$06
PC
$05
$06
$A $A0
(DBZ)
$AA0 ≡ DBZ $A0
$803
$D00
R W
TPC,
TIR,
TSP
8
8 12
8
DB11-8
Esta
instrucción
no es
ejecutada
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
Z
C
ZAC,
RAC,
CS2: Instrucciones. Ejecución de DBZ: ciclo 3 (operando≠1)
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
8
W4,
W8,
R8
MAR[8]
TPC,
TIR,
TSP
8
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-08
$020
$A0
$A0
$04
$A0
PC[8]
$05
PC $05
$06
$020
$A $A0
(DBZ)
$AA0 ≡ DBZ $A0
$803
$D00
R W
12
Si $A0
contuviese un
valor distinto a
$001, por
ejemplo $020:
DB11-8
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
Z
C
ZAC,
RAC,
CS2: Instrucciones. Ejecución de DBZ: ciclo 4 (operando≠1)
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
8
W4,
W8,
R8
MAR[8]
TPC,
TIR,
TSP
8
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-08
$01F
$A0
$A0
$04
$A0 $020
PC[8]
$05
PC $05
$06
$A $A0
(DBZ)
$AA0 ≡ DBZ $A0
$803
$D00
R W
12
DB11-8
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
Z
C
ZAC,
RAC,
CS2: Instrucciones. Ejecución de DBZ: final (operando≠1)
1. MAR ← IR7-0
2. RT ← RAM
3. RT ← RT – 1
4. RAM ← RT;
Z: PC ← PC + 1
RT
WT, RT,
DT
AC[12]
WAC,
RR, RL
ALU
8
AB
DB
RAM
28x12
CONTROL
IR[12]
W4,
W8,
R8
MAR[8]
CLPC,
IPC,
WPC,
RPC
C
SP[8]
8
CLS,
DS,
IS
0000
DB11-8
DB7-0
8 4IR7-0
Cout
SC,
CC
Z
C
DB7-0
$01F
$04
$A0 $01F
PC[8]
$05
PC $05
$06
$A $A0
(DBZ)
$AA0 ≡ DBZ $A0
$803
$D00
R W
TPC,
TIR,
TSP
8
8 12
8
DB11-8
4
IR11-84
TPC
TIR
TSP
s
r
CIM
Xs
Z
C
ZAC,
RAC,
CS2: Programación. Ensamblador
mi_programa.txt
Etiquetas
de datos:
constantes
o
direcciones
de variables
en memoria
Sección para directivas
(palabras reservadas que no son
instrucciones) de definición de
etiquetas de datos
equ RES $A0
equ MD $A1
equ MR $A2
laim 25
sta MD
laim 12
sta MR
jsr mult
stop
mult: laim $00
sta RES
bucle: lda RES
add MD
sta RES
dbz MR
jmp bucle
rts
Sección del programa principal
Etiquetas
de salto:
representan
direcciones
de memoria
(destinos de
saltos) Sección para la definición de
subrutinas
CS2: Programación. Ensamblador. Directiva equ
mi_programa.txt
Etiquetas
de datos:
constantes
o
direcciones
de variables
en memoria
equ RES $A0
equ MD $A1
equ MR $A2
laim 25
sta MD
laim 12
sta MR
jsr mult
stop
mult: laim $00
sta RES
bucle: lda RES
add MD
sta RES
dbz MR
jmp bucle
rts
equ RES $A0
Nombre de la directiva
Etiqueta
ValorEtiquetas
de salto:
representan
direcciones
de memoria
(destinos de
saltos)
CS2: Programación. Especificación de programas
equ RES $A0
equ MD $A1
equ MR $A2
$019
$2A1
$00C
$2A2
$E06
$D00
$000
$2A0
$1A0
$3A1
$2A0
$AA2
$808
$F00
Memoria
$00
$01
$02
$03
$04
$05
$06
$07
$08
$09
$0A
$0B
$0C
$0D
laim $19
sta $A1
laim $0C
sta $A2
jsr $06
stop
laim $00
sta $A0
lda $A0
add $A1
sta $A0
dbz $A2
jmp $08
rts
laim $19
sta MD
laim $0C
sta MR
jsr mult
stop
mult: laim $00
sta RES
bucle: lda RES
add MD
sta RES
dbz MR
jmp bucle
rts
Pseudocódigo/Lenguaje de
programación
MD ← 25
MR ← 12
R ← mult(MD,MR)
fin
subr mult(MD,MR) dev R
R ← 0
hacer
R ← R + MD
MR ← MR - 1
mientras MR ≠ 0
fin mult
Código máquina Mnemónicos Ensamblador
CS2: Programación. Especificación de programas (2)
100010101
001010100
101010101
000011110
001010100
101010010
101010100
001111111
000101010
Código
máquina
Compilador Ensamblador
Pseudocódigo/
Lenguaje de
programación
MD ← 25
MR ← 12
R ← mult(MD,MR)
fin
subr mult(MD,MR) dev R
R ← 0
hacer
R ← R + MD
MR ← MR - 1
mientras MR ≠ 0
fin mult
Ensamblador
equ RES $A0
equ MD $A1
equ MR $A2
laim $19
sta MD
laim $0C
sta MR
jsr mult
stop
mult: laim $00
sta RES
bucle: lda RES
This is a workstation.
File Edit View Insert Window About
This is a workstation.
File Edit View Insert Window AboutThis is a workstation.
File Edit View Insert Window About
This is a workstation.
File Edit View Insert Window AboutThis is a workstation.
File Edit View Insert Window About
This is a workstation.
File Edit View Insert Window About
This is a workstation.
File Edit View Insert Window About
This is a workstation.
File Edit View Insert Window About
CS2: Programación. Pseudocódigo: asignaciones
...
laim C
sta VARIABLE
...
...
VARIABLE ← C
...
C ≡ constante
...
lda VARIABLE2
sta VARIABLE1
...
...
VARIABLE1 ← VARIABLE2
...
...
laim 0
addi PUNTERO
sta VARIABLE
...
...
VARIABLE ← PUNTERO[]
...
PUNTERO[] ≡ dato apuntado por
el PUNTERO
CS2: Programación. Pseudocódigo: comparaciones
...
laim 1
add A
sub B
sta TEMP
dbz TEMP
jmp distintos
... {iguales}
jmp seguir
distintos: ... {distintos}
seguir: ...
TEMP ← A – B + 1
TEMP ≠ 0
TEMP ← TEMP – 1 (= A – B),
¿TEMP = 0? (≡ ¿A = B?)
TEMP = 0
...
si (A = B)
... {iguales}
sino
... {distintos}
fsi
...
CS2: Programación. Pseudocódigo: comparaciones (2)
...
lda A
sub B
bcs AmenorqB
... {A ≥ B}
jmp seguir
AmenorqB: ... {A < B}
seguir: ...
AC ← A – B,
C ← 1 si A – B < 0 (≡ A < B)
¿C = 1? (≡ ¿A < B?)
C = 1 C = 0
...
si (A < B)
... {A < B}
sino
... {A ≥ B}
fsi
...
Nota: válido sólo si A y B son ambos positivos o ambos negativos.
CS2: Programación. Pseudocódigo: bucles
...
laim N
sta CONT
bucle: ... {cuerpo}
dbz CONT
jmp bucle
...
CONT ← N
CONT = 0
CONT ← CONT – 1
¿CONT = 0?
CONT ≠ 0
N ≡ número de iteraciones (N > 0)
...
CONT ← N
hacer
... {cuerpo}
CONT ← CONT - 1
mientras (CONT ≠ 0)
...
CS2: Programación. Pseudocódigo: subrutinas
subr NOMBRE(P1,P2,...)
dev R1,R2,...
...
fin NOMBRE
Declaración:
NOMBRE:
...
rts
P1, P2, ... = parámetros de entrada
R1, R2, ... = parámetros de salida
Nota: un parámetro de entrada puede
ser también parámetro de salida
...
<R1,R2,...> ← NOMBRE(P1,P2,...)
...
Llamada:
...
jsr NOMBRE
...
CS2: Programación. Ejemplo: Suma de 16 sumandos
• Los sumandos están almacenados en $D0 .. $DF
• El resultado debe almacenarse en la dirección $BB
• En caso de overflow, detener el programa
CONT ← 16
PUNT ← $DF
SUMA ← 0
hacer
SUMA ← SUMA + PUNT[]
si (carry)
terminar
fsi
PUNT ← PUNT – 1
CONT ← CONT - 1
mientras CONT ≠ 0
fin
pseudocódigo
Solución:
Se plantea como un bucle en el
que la variable SUMA ($BB) irá
acumulando los sumandos
recorridos hasta el momento.
Para poder acceder a cada
sumando, usamos un puntero
PUNT que decrementamos en
cada iteración. Su valor inicial
será $DF.
El número de iteraciones es
controlado por la variable
contador, CONT.
CS2: Programación. Ej.: Suma de 16 sumandos (2)
ensamblador CS2
CONT ← 16
PUNT ← $DF
SUMA ← 0
hacer
SUMA ← SUMA + PUNT[]
si (carry) terminar fsi
PUNT ← PUNT – 1
CONT ← CONT - 1
mientras CONT ≠ 0
fin
equ SUMA $BB
equ CONT $AA
equ PUNT $AB
laim 16
sta CONT
laim $DF
sta PUNT
laim 0
sta SUMA
bucle:
lda SUMA
addi PUNT
sta SUMA
bcs terminar
dbz PUNT
dbz CONT
jmp bucle
terminar:
stop
pseudocódigo
CS2: Programación. Ej.: Suma de 16 sumandos (3)
• Podemos mejorar
el programa
resultante usando el
AC para acumular
los sumandos en el
bucle en lugar de
usar la variable
SUMA.
• Únicamente habría
que actualizar SUMA
al finalizar el bucle,
cuando AC contenga
la suma de los 16
sumandos.
equ SUMA $BB
equ CONT $AA
equ PUNT $AB
laim 16
sta CONT
laim $DF
sta PUNT
laim 0
sta SUMA
bucle:
lda SUMA
addi PUNT
sta SUMA
bcs terminar
dbz PUNT
dbz CONT
jmp bucle
terminar:
stop
equ SUMA $BB
equ CONT $AA
equ PUNT $AB
laim 16
sta CONT
laim $DF
sta PUNT
laim 0
bucle:
addi PUNT
bcs terminar
dbz PUNT
dbz CONT
jmp bucle
terminar:
sta SUMA
stop

Más contenido relacionado

La actualidad más candente

Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Jair BG
 
Microcontroladores: Ejemplo de un computador real: AtmegaX8PA
Microcontroladores: Ejemplo de un computador real: AtmegaX8PAMicrocontroladores: Ejemplo de un computador real: AtmegaX8PA
Microcontroladores: Ejemplo de un computador real: AtmegaX8PASANTIAGO PABLO ALBERTO
 
Optimizacion
OptimizacionOptimizacion
Optimizacionshade9005
 
Parcial t1 2011 sol
Parcial t1 2011 solParcial t1 2011 sol
Parcial t1 2011 solJair BG
 
Understanding Advanced Buffer Overflow
Understanding Advanced Buffer OverflowUnderstanding Advanced Buffer Overflow
Understanding Advanced Buffer OverflowConferencias FIST
 
Curso de microcontroladores capitulo 11
Curso de microcontroladores capitulo 11Curso de microcontroladores capitulo 11
Curso de microcontroladores capitulo 11Hamiltonn Casallas
 
Curso de microcontroladores capitulo 10
Curso de microcontroladores capitulo 10Curso de microcontroladores capitulo 10
Curso de microcontroladores capitulo 10Hamiltonn Casallas
 
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)Victor Asanza
 
Presentacion proyecto final micro2
Presentacion proyecto final micro2Presentacion proyecto final micro2
Presentacion proyecto final micro2Luis Zurita
 
005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a pasoguelo
 
Redireccionamiento de datos parte i vs
Redireccionamiento de datos parte i vsRedireccionamiento de datos parte i vs
Redireccionamiento de datos parte i vsAnyelo Valdivia
 
Micp mejoramiento-sept2011solucion
Micp mejoramiento-sept2011solucionMicp mejoramiento-sept2011solucion
Micp mejoramiento-sept2011solucionJair BG
 
Informe practico de circuitos digitales
Informe practico de circuitos digitalesInforme practico de circuitos digitales
Informe practico de circuitos digitalesCarlos Garrido
 
Picprimerospasos
PicprimerospasosPicprimerospasos
PicprimerospasosMicroPart
 
Sobre las síncronas
Sobre las síncronasSobre las síncronas
Sobre las síncronasEduard Mujica
 

La actualidad más candente (20)

Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Parcial 2 tdic10_2010
Parcial 2 tdic10_2010
 
02c.Unidad central de proceso
02c.Unidad central de proceso02c.Unidad central de proceso
02c.Unidad central de proceso
 
Microcontroladores: Ejemplo de un computador real: AtmegaX8PA
Microcontroladores: Ejemplo de un computador real: AtmegaX8PAMicrocontroladores: Ejemplo de un computador real: AtmegaX8PA
Microcontroladores: Ejemplo de un computador real: AtmegaX8PA
 
Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 
Optimizacion
OptimizacionOptimizacion
Optimizacion
 
Parcial t1 2011 sol
Parcial t1 2011 solParcial t1 2011 sol
Parcial t1 2011 sol
 
Conjunto de 35 instrucciones
Conjunto de 35 instruccionesConjunto de 35 instrucciones
Conjunto de 35 instrucciones
 
Understanding Advanced Buffer Overflow
Understanding Advanced Buffer OverflowUnderstanding Advanced Buffer Overflow
Understanding Advanced Buffer Overflow
 
Curso de microcontroladores capitulo 11
Curso de microcontroladores capitulo 11Curso de microcontroladores capitulo 11
Curso de microcontroladores capitulo 11
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
Curso de microcontroladores capitulo 10
Curso de microcontroladores capitulo 10Curso de microcontroladores capitulo 10
Curso de microcontroladores capitulo 10
 
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
 
Presentacion proyecto final micro2
Presentacion proyecto final micro2Presentacion proyecto final micro2
Presentacion proyecto final micro2
 
005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso
 
Redireccionamiento de datos parte i vs
Redireccionamiento de datos parte i vsRedireccionamiento de datos parte i vs
Redireccionamiento de datos parte i vs
 
Micp mejoramiento-sept2011solucion
Micp mejoramiento-sept2011solucionMicp mejoramiento-sept2011solucion
Micp mejoramiento-sept2011solucion
 
Informe practico de circuitos digitales
Informe practico de circuitos digitalesInforme practico de circuitos digitales
Informe practico de circuitos digitales
 
Alarmas bts ericsson
Alarmas bts ericssonAlarmas bts ericsson
Alarmas bts ericsson
 
Picprimerospasos
PicprimerospasosPicprimerospasos
Picprimerospasos
 
Sobre las síncronas
Sobre las síncronasSobre las síncronas
Sobre las síncronas
 

Destacado

Catalogo Productos Barú Viejoteca
Catalogo Productos Barú ViejotecaCatalogo Productos Barú Viejoteca
Catalogo Productos Barú Viejotecacamiload09
 
Esquema de naturales tema 2
Esquema de naturales tema 2Esquema de naturales tema 2
Esquema de naturales tema 2isa_lanchares
 
Curso ESMM-Borja Sánchez
Curso ESMM-Borja SánchezCurso ESMM-Borja Sánchez
Curso ESMM-Borja Sánchezbsalmiron
 
El perdón
El perdón El perdón
El perdón lady_bho
 
Trabajo practico de matemática
Trabajo practico de matemáticaTrabajo practico de matemática
Trabajo practico de matemáticaMelinaAilen
 
Aprendizaje colaborativoo
Aprendizaje colaborativooAprendizaje colaborativoo
Aprendizaje colaborativooMiguel Reyes
 
Clase abierta 2º C
Clase abierta 2º CClase abierta 2º C
Clase abierta 2º CEscuela52
 
Un buen día para dejar de fumar
Un buen día para dejar de fumarUn buen día para dejar de fumar
Un buen día para dejar de fumarMaria Massagué
 
Actividad 1 Estructuras Discretas
Actividad 1 Estructuras DiscretasActividad 1 Estructuras Discretas
Actividad 1 Estructuras DiscretasYormanP
 
Puente viejo de herrera del duqe
Puente viejo de herrera del duqePuente viejo de herrera del duqe
Puente viejo de herrera del duqeACARLOSORTEGO
 
Tabla periódica de los elementos
Tabla periódica de los elementosTabla periódica de los elementos
Tabla periódica de los elementosDanhii Lfm
 
Herramiientas photoshop
Herramiientas photoshopHerramiientas photoshop
Herramiientas photoshopMariiLopez
 
Albert esplugas la comunicación en una sociedad libre
Albert esplugas   la comunicación en una sociedad libreAlbert esplugas   la comunicación en una sociedad libre
Albert esplugas la comunicación en una sociedad libreDaniel Diaz
 

Destacado (20)

Catalogo Productos Barú Viejoteca
Catalogo Productos Barú ViejotecaCatalogo Productos Barú Viejoteca
Catalogo Productos Barú Viejoteca
 
Esquema de naturales tema 2
Esquema de naturales tema 2Esquema de naturales tema 2
Esquema de naturales tema 2
 
Curso ESMM-Borja Sánchez
Curso ESMM-Borja SánchezCurso ESMM-Borja Sánchez
Curso ESMM-Borja Sánchez
 
Psicologia
PsicologiaPsicologia
Psicologia
 
El perdón
El perdón El perdón
El perdón
 
Clown
Clown Clown
Clown
 
Trabajo practico de matemática
Trabajo practico de matemáticaTrabajo practico de matemática
Trabajo practico de matemática
 
TIPOS DE MOTORES
TIPOS DE MOTORESTIPOS DE MOTORES
TIPOS DE MOTORES
 
Aprendizaje colaborativoo
Aprendizaje colaborativooAprendizaje colaborativoo
Aprendizaje colaborativoo
 
Clase abierta 2º C
Clase abierta 2º CClase abierta 2º C
Clase abierta 2º C
 
Diseño de puentes
Diseño de puentesDiseño de puentes
Diseño de puentes
 
Un buen día para dejar de fumar
Un buen día para dejar de fumarUn buen día para dejar de fumar
Un buen día para dejar de fumar
 
Actividad 1 Estructuras Discretas
Actividad 1 Estructuras DiscretasActividad 1 Estructuras Discretas
Actividad 1 Estructuras Discretas
 
Puente viejo de herrera del duqe
Puente viejo de herrera del duqePuente viejo de herrera del duqe
Puente viejo de herrera del duqe
 
Erick
ErickErick
Erick
 
Tabla periódica de los elementos
Tabla periódica de los elementosTabla periódica de los elementos
Tabla periódica de los elementos
 
Larc 12-4 bojanic
Larc 12-4 bojanicLarc 12-4 bojanic
Larc 12-4 bojanic
 
La ciudad
La ciudadLa ciudad
La ciudad
 
Herramiientas photoshop
Herramiientas photoshopHerramiientas photoshop
Herramiientas photoshop
 
Albert esplugas la comunicación en una sociedad libre
Albert esplugas   la comunicación en una sociedad libreAlbert esplugas   la comunicación en una sociedad libre
Albert esplugas la comunicación en una sociedad libre
 

Similar a PDF ing. sumoso 15-5-2015 Etc2 0304 cs2

Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009Jair BG
 
Micc final feb14_2009
Micc final feb14_2009Micc final feb14_2009
Micc final feb14_2009Jair BG
 
Micc final sept05 2009 soluc
Micc final sept05 2009 solucMicc final sept05 2009 soluc
Micc final sept05 2009 solucJair BG
 
Micc final sept05 2009 soluc
Micc final sept05 2009 solucMicc final sept05 2009 soluc
Micc final sept05 2009 solucJair BG
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_solucJair BG
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_solucJair BG
 
Rutinas y Sub Rutinas del MicroZ80
Rutinas y Sub Rutinas del MicroZ80Rutinas y Sub Rutinas del MicroZ80
Rutinas y Sub Rutinas del MicroZ80Pablo Chumania
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Alberto Gonzalez Isorna
 
Sistemas combinacionale1
Sistemas combinacionale1Sistemas combinacionale1
Sistemas combinacionale1Andres Flores
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_solucJair BG
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_solucJair BG
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84guestf09168b
 
Introducción a la programacion Pic16F84
Introducción a la programacion Pic16F84Introducción a la programacion Pic16F84
Introducción a la programacion Pic16F84Daniel Remondegui
 
Diseño de un Procesador 8 bits
Diseño de un Procesador 8 bitsDiseño de un Procesador 8 bits
Diseño de un Procesador 8 bitsSNPP
 

Similar a PDF ing. sumoso 15-5-2015 Etc2 0304 cs2 (20)

Guia 5 3 2015 c2
Guia 5 3 2015 c2Guia 5 3 2015 c2
Guia 5 3 2015 c2
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009
 
Micc final feb14_2009
Micc final feb14_2009Micc final feb14_2009
Micc final feb14_2009
 
Micc final sept05 2009 soluc
Micc final sept05 2009 solucMicc final sept05 2009 soluc
Micc final sept05 2009 soluc
 
Micc final sept05 2009 soluc
Micc final sept05 2009 solucMicc final sept05 2009 soluc
Micc final sept05 2009 soluc
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
 
Rutinas y Sub Rutinas del MicroZ80
Rutinas y Sub Rutinas del MicroZ80Rutinas y Sub Rutinas del MicroZ80
Rutinas y Sub Rutinas del MicroZ80
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000
 
Sistemas combinacionale1
Sistemas combinacionale1Sistemas combinacionale1
Sistemas combinacionale1
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_soluc
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_soluc
 
Pic16f84(1)
Pic16f84(1)Pic16f84(1)
Pic16f84(1)
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Introducción a la programacion Pic16F84
Introducción a la programacion Pic16F84Introducción a la programacion Pic16F84
Introducción a la programacion Pic16F84
 
Micro2 tema 3
Micro2 tema 3Micro2 tema 3
Micro2 tema 3
 
Diseño de un Procesador 8 bits
Diseño de un Procesador 8 bitsDiseño de un Procesador 8 bits
Diseño de un Procesador 8 bits
 

Más de Jose Bondia

Fundamentos de-electromagnetismo-para-ingenieria-david-k-cheng-140410005730-p...
Fundamentos de-electromagnetismo-para-ingenieria-david-k-cheng-140410005730-p...Fundamentos de-electromagnetismo-para-ingenieria-david-k-cheng-140410005730-p...
Fundamentos de-electromagnetismo-para-ingenieria-david-k-cheng-140410005730-p...Jose Bondia
 
Programas en lenguaje ensamblador
Programas en lenguaje ensambladorProgramas en lenguaje ensamblador
Programas en lenguaje ensambladorJose Bondia
 
Modos de direccionamiento
Modos de direccionamientoModos de direccionamiento
Modos de direccionamientoJose Bondia
 
Lenguajes máquina y ensamblador
Lenguajes máquina y ensambladorLenguajes máquina y ensamblador
Lenguajes máquina y ensambladorJose Bondia
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorJose Bondia
 
Ejercicios 68000
Ejercicios 68000Ejercicios 68000
Ejercicios 68000Jose Bondia
 
Ejercicios 68000 a
Ejercicios 68000 aEjercicios 68000 a
Ejercicios 68000 aJose Bondia
 
Sistemas digitales II - Capitulo 12 final-UNFV
Sistemas digitales II - Capitulo 12 final-UNFVSistemas digitales II - Capitulo 12 final-UNFV
Sistemas digitales II - Capitulo 12 final-UNFVJose Bondia
 
sistemas digitales II - Capitulo 12 final-pdf del ing sumoso- UNFV -
sistemas digitales II - Capitulo 12 final-pdf del ing sumoso- UNFV - sistemas digitales II - Capitulo 12 final-pdf del ing sumoso- UNFV -
sistemas digitales II - Capitulo 12 final-pdf del ing sumoso- UNFV - Jose Bondia
 
Tema 7 maquinas electricas unfv
Tema 7 maquinas electricas unfvTema 7 maquinas electricas unfv
Tema 7 maquinas electricas unfvJose Bondia
 
Cap6 transformadores 1_ maquinas electricas unfv
Cap6 transformadores 1_ maquinas electricas unfvCap6 transformadores 1_ maquinas electricas unfv
Cap6 transformadores 1_ maquinas electricas unfvJose Bondia
 
Problemas cap 2 maquinas electricas unfv
Problemas cap 2 maquinas electricas unfvProblemas cap 2 maquinas electricas unfv
Problemas cap 2 maquinas electricas unfvJose Bondia
 
Ejercicios cap 1 maquinas electricas unfv
Ejercicios cap 1 maquinas electricas unfvEjercicios cap 1 maquinas electricas unfv
Ejercicios cap 1 maquinas electricas unfvJose Bondia
 

Más de Jose Bondia (13)

Fundamentos de-electromagnetismo-para-ingenieria-david-k-cheng-140410005730-p...
Fundamentos de-electromagnetismo-para-ingenieria-david-k-cheng-140410005730-p...Fundamentos de-electromagnetismo-para-ingenieria-david-k-cheng-140410005730-p...
Fundamentos de-electromagnetismo-para-ingenieria-david-k-cheng-140410005730-p...
 
Programas en lenguaje ensamblador
Programas en lenguaje ensambladorProgramas en lenguaje ensamblador
Programas en lenguaje ensamblador
 
Modos de direccionamiento
Modos de direccionamientoModos de direccionamiento
Modos de direccionamiento
 
Lenguajes máquina y ensamblador
Lenguajes máquina y ensambladorLenguajes máquina y ensamblador
Lenguajes máquina y ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Ejercicios 68000
Ejercicios 68000Ejercicios 68000
Ejercicios 68000
 
Ejercicios 68000 a
Ejercicios 68000 aEjercicios 68000 a
Ejercicios 68000 a
 
Sistemas digitales II - Capitulo 12 final-UNFV
Sistemas digitales II - Capitulo 12 final-UNFVSistemas digitales II - Capitulo 12 final-UNFV
Sistemas digitales II - Capitulo 12 final-UNFV
 
sistemas digitales II - Capitulo 12 final-pdf del ing sumoso- UNFV -
sistemas digitales II - Capitulo 12 final-pdf del ing sumoso- UNFV - sistemas digitales II - Capitulo 12 final-pdf del ing sumoso- UNFV -
sistemas digitales II - Capitulo 12 final-pdf del ing sumoso- UNFV -
 
Tema 7 maquinas electricas unfv
Tema 7 maquinas electricas unfvTema 7 maquinas electricas unfv
Tema 7 maquinas electricas unfv
 
Cap6 transformadores 1_ maquinas electricas unfv
Cap6 transformadores 1_ maquinas electricas unfvCap6 transformadores 1_ maquinas electricas unfv
Cap6 transformadores 1_ maquinas electricas unfv
 
Problemas cap 2 maquinas electricas unfv
Problemas cap 2 maquinas electricas unfvProblemas cap 2 maquinas electricas unfv
Problemas cap 2 maquinas electricas unfv
 
Ejercicios cap 1 maquinas electricas unfv
Ejercicios cap 1 maquinas electricas unfvEjercicios cap 1 maquinas electricas unfv
Ejercicios cap 1 maquinas electricas unfv
 

Último

Inyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfInyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfmiltonantonioescamil
 
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXXTIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXXCamiloAlejandroMonte1
 
lollllllllllllllllllllllllllllllllllllllllllllllll
lolllllllllllllllllllllllllllllllllllllllllllllllllollllllllllllllllllllllllllllllllllllllllllllllll
lollllllllllllllllllllllllllllllllllllllllllllllllJesusFlores332
 
PIAnGIMNACIA___19655c35a563e33___ 2.pdfh
PIAnGIMNACIA___19655c35a563e33___ 2.pdfhPIAnGIMNACIA___19655c35a563e33___ 2.pdfh
PIAnGIMNACIA___19655c35a563e33___ 2.pdfhjonathancallenteg
 
manual de usuario de automovil nissan march 2010-2016
manual de usuario de automovil nissan march 2010-2016manual de usuario de automovil nissan march 2010-2016
manual de usuario de automovil nissan march 2010-20161angort
 
la historia de nissan skyline y su evolucion
la historia de nissan skyline y su evolucionla historia de nissan skyline y su evolucion
la historia de nissan skyline y su evolucionemanuelrosalezsanche
 

Último (6)

Inyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfInyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdf
 
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXXTIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
 
lollllllllllllllllllllllllllllllllllllllllllllllll
lolllllllllllllllllllllllllllllllllllllllllllllllllollllllllllllllllllllllllllllllllllllllllllllllll
lollllllllllllllllllllllllllllllllllllllllllllllll
 
PIAnGIMNACIA___19655c35a563e33___ 2.pdfh
PIAnGIMNACIA___19655c35a563e33___ 2.pdfhPIAnGIMNACIA___19655c35a563e33___ 2.pdfh
PIAnGIMNACIA___19655c35a563e33___ 2.pdfh
 
manual de usuario de automovil nissan march 2010-2016
manual de usuario de automovil nissan march 2010-2016manual de usuario de automovil nissan march 2010-2016
manual de usuario de automovil nissan march 2010-2016
 
la historia de nissan skyline y su evolucion
la historia de nissan skyline y su evolucionla historia de nissan skyline y su evolucion
la historia de nissan skyline y su evolucion
 

PDF ing. sumoso 15-5-2015 Etc2 0304 cs2

  • 1. CS2: Unidad de datos (UD) Cambios respecto al CS1: • Ancho datos: 12 bits • Ancho direcciones: 8 bits • Rotación del registro AC con carry • Decremento y detección de cero en RT • PC accesible desde el bus de datos • Puntero de pila RT WT, RT, DT AC[12] WAC, RR, RL s r ALU 12 8 R W AB DB RAM 28x12 CONTROLXs IR[12] 4 8 W4, W8, R8 MAR[8] TPC, TIR, TSP PC[8] 8 CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS ZAC, RAC, 0000 4 CIM DB11-8 DB11-8 DB7-0 8 4 IR11-8 IR7-0 Cout SC, CC Z C Z C TPC TIR TSP DB7-08
  • 2. CS2: UD. Cambios relacionados con el registro AC • Ahora es un registro universal, permitiendo desplazamientos en ambos sentidos (RR, RL) • Sus entradas y salidas serie están conectadas al biestable C • Al activar las señales de desplazamiento RR ó RL, lo que se produce es una rotación del contenido de AC con C: instrucciones ROR y ROL AC[12] WAC, RR, RL r ALU C ZAC, RAC, CIM Cout SC, CC C AC[12] WAC, RR, RL r ALU C ZAC, RAC, CIM Cout SC, CC C Ejemplo: C=1, AC11-0=011101110111 ROL ↓ C=0, AC11-0=111011101111 C=1, AC11-0=011101110111 ROR ↓ C=1, AC11-0=101110111011 • El biestable C almacena el carry generado en las operaciones realizadas con la ALU, y también puede ser puesto a 0 ó 1 (CC, SC) en cualquier momento: instrucciones CLC y SEC
  • 3. CS2: UD. Cambios relacionados con el registro RT • En el CS2 es un contador descendente: incorpora una entrada de decremento (DT) y una salida de borrow (Z) [detección de 0] • Sus salidas está conectadas al bus de datos, por lo que puede escribir a memoria (además de leer desde ella, que ya era posible en el CS1) • Por tanto, permite decrementar datos almacenados en memoria • Instrucción DBZ dir_dato RT WT, RT, DT 12 R W AB DB RAM 28x12 Z RT WT, RT, DT 12 R W AB DB RAM 28x12 Z 88
  • 4. CS2: UD. Cambios relacionados con el registro PC • El registro PC (Program Counter), al igual que en el CS1, contiene la dirección de la próxima instrucción a ejecutar • En el CS2 las direcciones son de 8 bits, por lo que el PC ha tenido que ser redimensionado a ese tamaño • El PC se incrementa automáticamente en la fase de búsqueda de cada instrucción, al igual que en el CS1 • Además, en el CS2, el valor del PC puede ser modificado desde el bus de datos, en particular, desde IR7-0 • Esto permite romper la ejecución secuencial de instrucciones y saltar a cualquier punto del programa • instrucción de salto incondicional: JMP dir_destino • instrucción de salto condicional (carry = 1): BCS dir_destino
  • 5. CS2: UD. Registro SP. La pila (stack) • La pila es una estructura de datos que reside en memoria • El registro SP (Stack Pointer, puntero de pila) apunta a la cima de la pila • En el CS2, la pila crece desde la dirección más alta ($FF) hacia direcciones más bajas • Operaciones sobre la pila: • PUSH: añadir un elemento en la cima de la pila • PULL: extraer el elemento situado en la cima de la pila • La pila permite los saltos y retornos de subrutinas: en el CS2, éste es el único uso que se hace de ella, instrucciones JSR y RTS
  • 6. CS2: UD. Pila. Operaciones Añadir un elemento PUSH SP SP – 1 RAM(SP) pN+1 Extraer un elemento PULL pN RAM(SP) SP SP + 1 p1 p2 pN pN-1 pN+1SP $FF $FE p1 p2 pN pN-1SP $FF $FE Memoria Memoria p1 p2 pN pN-1 SP $FF $FE Memoria
  • 7. CS2: UD. Pila. Subrutinas • Una subrutina es una secuencia de instrucciones que realizan una cierta tarea a partir de unos datos de entrada, generando unos datos de salida • Cuando un programa necesita realizar la tarea, hace una llamada a la subrutina, ésta se ejecuta y cuando termina, el programa se reanuda por donde se había quedado (retorno de subrutina) • Una subrutina se puede llamar todas las veces que el programa lo necesite • Una subrutina puede llamar a su vez a otra subrutina: ejecución anidada de subrutinas • Una subrutina puede llamarse a sí misma: subrutinas recursivas tarea tarea tarea tarea Programa principal Subrutina Programa (sin uso de subrutinas) ... llamada a subr ... ... llamada a subr ... llamada a subr ... ... retorno tarea tarea tarea tarea Programa principal Subrutina Programa (sin uso de subrutinas) ... llamada a subr ... ... llamada a subr ... llamada a subr ... ... retorno
  • 8. CS2: UD. Pila. Subrutinas: llamada y retorno (1) En el CS2: JSR = instrucción de salto a subrutina RTS = instrucción de retorno de subrutina Memoria $2A $29 $2B $2C RTS subrutina SP $00 JSR $29 $01 1. Salto a subrutina en $29, guardando la dirección de retorno $03 en la pila 2. Ejecución de la subrutina 3. Retorno al programa principal, extrayendo la dirección de retorno desde la pila PC $02 $03 Para que el CS2, tras la ejecución de la subrutina, pueda volver al programa principal, debe almacenar la dirección de retorno ($03, en este caso) antes de efectuar el salto: para ello se usa la pila $FE $FF
  • 9. CS2: UD. Pila. Subrutinas: llamada y retorno (2) En el CS2: JSR = instrucción de salto a subrutina RTS = instrucción de retorno de subrutina Memoria $2A $29 $2B $2C PC RTS subrutina JSR $29 $00 $01 1. Salto a subrutina en $29, guardando la dirección de retorno $03 en la pila 2. Ejecución de la subrutina 3. Retorno al programa principal, extrayendo la dirección de retorno desde la pila $02 $03 $003 $FE SP $FF
  • 10. CS2: UD. Pila. Subrutinas: llamada y retorno (2) En el CS2: JSR = instrucción de salto a subrutina RTS = instrucción de retorno de subrutina Memoria $2A $29 $2B $2C PC RTS subrutina JSR $29 $00 $01 1. Salto a subrutina en $29, guardando la dirección de retorno $03 en la pila 2. Ejecución de la subrutina 3. Retorno al programa principal, extrayendo la dirección de retorno desde la pila $02 $03 $003 $FE SP $FF
  • 11. CS2: UD. Pila. Subrutinas: llamada y retorno (2) En el CS2: JSR = instrucción de salto a subrutina RTS = instrucción de retorno de subrutina Memoria $2A $29 $2B $2C PC RTS subrutina JSR $29 $00 $01 1. Salto a subrutina en $29, guardando la dirección de retorno $03 en la pila 2. Ejecución de la subrutina 3. Retorno al programa principal, extrayendo la dirección de retorno desde la pila $02 $03 $003 $FE SP $FF
  • 12. CS2: UD. Pila. Subrutinas: llamada y retorno (3) En el CS2: JSR = instrucción de salto a subrutina RTS = instrucción de retorno de subrutina Memoria $2A $29 $2B $2CPC RTS subrutina JSR $29 $00 $01 1. Salto a subrutina en $29, guardando la dirección de retorno $03 en la pila 2. Ejecución de la subrutina 3. Retorno al programa principal, extrayendo la dirección de retorno desde la pila $02 $03 $003 $FE SP $FF
  • 13. CS2: UD. Pila. Subrutinas: llamada y retorno (fin) En el CS2: JSR = instrucción de salto a subrutina RTS = instrucción de retorno de subrutina Memoria $2A $29 $2B $2C RTS subrutina SP $00 JSR $29 $01 1. Salto a subrutina en $29, guardando la dirección de retorno $03 en la pila 2. Ejecución de la subrutina 3. Retorno al programa principal, extrayendo la dirección de retorno desde la pila $02 PC $03 $003 $FE $FF
  • 14. CS2: UD. Pila. Subrutinas: subrutinas anidadas JSR $29 SP $FF $FE Memoria $00 $02 $01 $03 $29 PC RTS subr1 $FD $3C RTS subr2 JSR $3C$2A $2B $2C Prog. principal Subrutina 1 Subrutina 2 JSR $3C RTS JSR $29 RTS
  • 15. CS2: UD. Pila. Subrutinas: subrutinas anidadas (2) Memoria $29PC RTS subr1 JSR $3C$2A $2B $2C JSR $29 SP $FF $FE $00 $02 $01 $03 $FD $3C RTS subr2 $003 Prog. principal Subrutina 1 Subrutina 2 JSR $3C RTS JSR $29 RTS
  • 16. CS2: UD. Pila. Subrutinas: subrutinas anidadas (3) Memoria $29 PC RTS subr1 JSR $3C$2A $2B $2C JSR $29 SP $FF $FE $00 $02 $01 $03 $FD $3C RTS subr2 $003 Prog. principal Subrutina 1 Subrutina 2 JSR $3C RTS JSR $29 RTS
  • 17. CS2: UD. Pila. Subrutinas: subrutinas anidadas (4) Memoria JSR $29 SP $FF $FE $00 $02 $01 $03 $29 PC RTS subr1 $FD $3C RTS subr2 JSR $3C $003 $2A $2B $2C $02B Prog. principal Subrutina 1 Subrutina 2 JSR $3C RTS JSR $29 RTS
  • 18. CS2: UD. Pila. Subrutinas: subrutinas anidadas (5) Memoria JSR $29 SP $FF $FE $00 $02 $01 $03 $29 PC RTS subr1 $FD $3C RTS subr2 JSR $3C $003 $2A $2B $2C $02B Prog. principal Subrutina 1 Subrutina 2 JSR $3C RTS JSR $29 RTS
  • 19. CS2: UD. Pila. Subrutinas: subrutinas anidadas (6) Memoria $29 PC RTS subr1 JSR $3C$2A $2B $2C JSR $29 SP $FF $FE $00 $02 $01 $03 $FD $3C RTS subr2 $003 $02B Prog. principal Subrutina 1 Subrutina 2 JSR $3C RTS JSR $29 RTS
  • 20. CS2: UD. Pila. Subrutinas: subrutinas anidadas (7) Memoria $29 PC RTS subr1 JSR $3C$2A $2B $2C JSR $29 SP $FF $FE $00 $02 $01 $03 $FD $3C RTS subr2 $003 $02B Prog. principal Subrutina 1 Subrutina 2 JSR $3C RTS JSR $29 RTS
  • 21. CS2: UD. Pila. Subrutinas: subrutinas anidadas (8) JSR $29 SP $FF $FE Memoria $00 $02 $01 $03 $29 PC RTS subr1 $FD $3C RTS subr2 JSR $3C JSR $29 JSR $3C RTS RTS $003 $2A $2B $2C $02B • La ejecución anidada de subrutinas es posible gracias a la pila (íd. recursiva) Prog. principal Subrutina 1 Subrutina 2
  • 22. CS2: Instrucciones. Conjunto de instrucciones (*) Nótese que el registro PC es incrementado durante la fase de búsqueda de la instrucción (al igual que el CS1), por lo que, al comenzar la fase de ejecución, PC está apuntando a la siguiente instrucción. M = RAM C = bit de carry - = no importa El modo de direccionamiento (Direcc.) de una instrucción indica cómo ésta referencia al operando. Según el modo, los bits A7-0 del código de instrucción pueden indicar: • Inmediato: A7-0 ≡ dato = operando (8 bits) • Directo: A7-0 ≡ dir (dirección del operando) M(dir) = operando (12 bits) • Indirecto: A7-0 ≡ punt (puntero al operando) M7-0(punt) = dirección del operando M(M7-0(punt)) = operando (12 bits) Instrucción Mnemónico Operación Tipo Direcc. Descripción 0000 A7 ... A0 LAIM dato AC ← dato Transf. Inmediato Carga AC con valor inmediato 0001 A7 ... A0 LDA dir AC ← M(dir) Transf. Directo Carga AC desde RAM 0010 A7 ... A0 STA dir M(dir) ← AC Transf. Directo Almacena AC en RAM 0011 A7 ... A0 ADD dir AC ← AC + M(dir) Aritm. Directo Suma 0100 A7 ... A0 SUB dir AC ← AC – M(dir) Aritm. Directo Resta 0101 A7 ... A0 ADDI punt AC ← AC + M(M7-0(punt)) Aritm. Indirecto Suma indirecta 0110 -------- ROR AC ← SHR(AC, C), C ← AC0 Lógica Implícito Rotación a la dch. con carry 0111 -------- ROL C ← AC11, AC ← SHL(AC, C) Lógica Implícito Rotación a la izq. con carry 1000 A7 ... A0 JMP dir PC ← dir Salto incond. Directo Salto incondicional 1001 A7 ... A0 BCS dir C: PC ← dir Salto cond. Directo Salto condicional si carry 1010 A7 ... A0 DBZ dir M(dir) ← M(dir) – 1 Z: PC ← PC+1 (*) Salto cond. Directo Salto condicional si cero (bit Z) 1011 -------- CLC C ← 0 Estado Implícito Pone carry a 0 1100 -------- SEC C ← 1 Estado Implícito Pone carry a 1 1101 -------- STOP Control Implícito Detiene la ejecución 1110 A7 ... A0 JSR dir SP ← SP – 1 M(SP) ← PC (*) PC ← dir Salto Directo Salto a subrutina 1111 -------- RTS PC ← M(SP) SP ← SP + 1 Salto Implícito Retorno de subrutina
  • 23. CS2: Instrucciones. Modos de direccionamiento • Inmediato: • el dato (operando) está incluido en la propia instrucción LAIM $9FPC Memoria CO CD $9FLAIM instrucción dato AC ← $9FLAIM $9F
  • 24. CS2: Instrucciones. Modos de direccionamiento (2) $9F • Directo: • hay que buscar el dato (operando) en la memoria; • la instrucción incluye la dirección del dato $A2 ADD $9FPC Memoria $9F dirección del dato dato CO CD $9FADD instrucción AC ← AC + $A2ADD $9F
  • 25. CS2: Instrucciones. Modos de direccionamiento (3) $9F$9F • Indirecto: • hay que buscar el dato (operando) en la memoria; • la instrucción incluye un puntero al dato $A2 ADDI $9FPC Memoria $9Fpuntero dato CO CD $9FADDI instrucción $1C$A2 dirección del dato $A2 AC ← AC + $1CADDI $9F
  • 26. CS2: Instrucciones. Modos de direccionamiento (4) • Implícito: • el dato (operando) se sobreentiende, no está almacenado en ningún sitio CLCPC Memoria CO CD --CLC instrucción C ← 0CLC
  • 27. CS2: Instrucciones. Desarrollo en µops Fase de búsqueda Operación Nivel RT Señales de control (cualquiera) 1. MAR ← PC 2. IR ← RAM; PC ← PC + 1 TPC R, W4, W8, IPC Tras la fase de búsqueda: • IR11-8 contiene el código de operación de la instrucción • IR7-0 puede contener, según el tipo de direccionamiento de la instrucción: • el operando (direccionamiento inmediato, IR7-0 ≡ dato de 8 bits) • la dirección del operando (direccionamiento directo, IR7-0 ≡ dir) • un puntero al operando (direccionamiento indirecto, IR7-0 ≡ punt)
  • 28. CS2: Instrucciones. Desarrollo en µops (2) Fase de ejecución Operación Nivel RT Señales de control LAIM dato AC ← dato 1. RT ← 011-8 IR7-0 ; AC ← 0 2. AC ← AC + RT R8, CIM, WT, ZAC RT, s, WAC LDA dir AC ← M(dir) 1. MAR ← IR 2. RT ← RAM; AC ← 0 3. AC ← AC + RT TIR ZAC, WT, R RT, s, WAC STA dir M(dir) ← AC 1. MAR ← IR 2. RAM ← AC TIR RAC, W ADD dir AC ← AC + M(dir) 1. MAR ← IR 2. RT ← RAM 3. AC ← AC + RT TIR WT, R RT, s, WAC SUB dir AC ← AC – M(dir) 1. MAR ← IR 2. RT ← RAM 3. AC ← AC – RT TIR WT, R RT, r, WAC ADDI punt AC ← AC + M(M7-0(punt)) 1. MAR ← IR 2. IR7-0 ← RAM7-0 3. MAR ← IR 4. RT ← RAM 5. AC ← AC + RT TIR R, W8 TIR R, WT RT, s, WAC ROR AC ← SHR(AC, C) 1. AC ← SHR(AC, C); C ← AC0 RR ROL AC ← SHL(AC, C) 1. AC ← SHR(AC, C); C ← AC11 RL
  • 29. CS2: Instrucciones. Desarrollo en µops (3) Fase de ejecución Operación Nivel RT Señales de control JMP dir PC ← dir 1. PC ← IR7-0 R8, WPC BCS dir C: PC ← dir 1. C: PC ← IR7-0 R8, WPC DBZ dir M(dir) ← M(dir) - 1 Z: PC ← PC+1 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 TIR R, WT DT RT, W, IPC CLC C ← 0 1. C ← 0 CC SEC C ← 1 1. C ← 1 SC STOP NOP - JSR dir SP ← SP – 1 M(SP) ← PC PC ← dir 1. SP ← SP – 1 2. MAR ← SP 3. RAM ← PC 4. PC ← IR7-0 DS TSP RPC, W R8, WPC RTS PC ← M(SP) SP ← SP + 1 1. MAR ← SP 2. PC ← RAM; SP ← SP + 1 TSP R, WPC, IS
  • 30. CS2: Instrucciones. Ejecución de DBZ: estado previo 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] W4, W8, R8 MAR[8] PC[8] CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-0 $A $A0 (DBZ) $05 $AA0$04 $A0 $001 $06 ≡ DBZ $A0 $803 $D00 R W TPC, TIR, TSP 8 8 12 8 DB11-8 4 IR11-84 TPC TIR TSP s r CIM Xs PC $05 Z C ZAC, RAC,
  • 31. CS2: Instrucciones. Ejecución de DBZ: ciclo 1 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] W4, W8, R8 MAR[8] CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-0 $04 $A0 PC[8] $05 PC $05 $06 $001 $A $A0 (DBZ) $AA0 ≡ DBZ $A0 $803 $D00 R W TPC, TIR, TSP 8 8 12 8 DB11-8 4 IR11-84 TPC TIR TSP s r CIM Xs Z C ZAC, RAC,
  • 32. CS2: Instrucciones. Ejecución de DBZ: ciclo 2 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] 8 W4, W8, R8 MAR[8] TPC, TIR, TSP 8 CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-08 $A0 $A0 $04 $A0 PC[8] $05 PC $05 $06 $001 $A $A0 (DBZ) $AA0 ≡ DBZ $A0 $803 $D00 R W $00112 DB11-8 4 IR11-84 TPC TIR TSP s r CIM Xs Z C ZAC, RAC,
  • 33. CS2: Instrucciones. Ejecución de DBZ: ciclo 3 (operando=1) 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] 8 W4, W8, R8 MAR[8] TPC, TIR, TSP 8 CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-08 $001 $A0 $A0 $04 $A0 PC[8] $05 PC $05 $06 $001 $A $A0 (DBZ) $AA0 ≡ DBZ $A0 $803 $D00 R W 12 DB11-8 4 IR11-84 TPC TIR TSP s r CIM Xs Z C ZAC, RAC,
  • 34. CS2: Instrucciones. Ejecución de DBZ: ciclo 4 (operando=1) 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] 8 W4, W8, R8 MAR[8] TPC, TIR, TSP 8 CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-08 $000 $A0 $A0 $04 $A0 PC[8] $05 PC $05 $06 $001 $A $A0 (DBZ) $AA0 ≡ DBZ $A0 $803 $D00 R W $00012 DB11-8 4 IR11-84 TPC TIR TSP s r CIM Xs Z C ZAC, RAC,
  • 35. CS2: Instrucciones. Ejecución de DBZ: final (operando=1) 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] W4, W8, R8 MAR[8] CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-0 $000 $04 $A0 $000 PC[8] $06 PC $05 $06 $A $A0 (DBZ) $AA0 ≡ DBZ $A0 $803 $D00 R W TPC, TIR, TSP 8 8 12 8 DB11-8 Esta instrucción no es ejecutada 4 IR11-84 TPC TIR TSP s r CIM Xs Z C ZAC, RAC,
  • 36. CS2: Instrucciones. Ejecución de DBZ: ciclo 3 (operando≠1) 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] 8 W4, W8, R8 MAR[8] TPC, TIR, TSP 8 CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-08 $020 $A0 $A0 $04 $A0 PC[8] $05 PC $05 $06 $020 $A $A0 (DBZ) $AA0 ≡ DBZ $A0 $803 $D00 R W 12 Si $A0 contuviese un valor distinto a $001, por ejemplo $020: DB11-8 4 IR11-84 TPC TIR TSP s r CIM Xs Z C ZAC, RAC,
  • 37. CS2: Instrucciones. Ejecución de DBZ: ciclo 4 (operando≠1) 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] 8 W4, W8, R8 MAR[8] TPC, TIR, TSP 8 CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-08 $01F $A0 $A0 $04 $A0 $020 PC[8] $05 PC $05 $06 $A $A0 (DBZ) $AA0 ≡ DBZ $A0 $803 $D00 R W 12 DB11-8 4 IR11-84 TPC TIR TSP s r CIM Xs Z C ZAC, RAC,
  • 38. CS2: Instrucciones. Ejecución de DBZ: final (operando≠1) 1. MAR ← IR7-0 2. RT ← RAM 3. RT ← RT – 1 4. RAM ← RT; Z: PC ← PC + 1 RT WT, RT, DT AC[12] WAC, RR, RL ALU 8 AB DB RAM 28x12 CONTROL IR[12] W4, W8, R8 MAR[8] CLPC, IPC, WPC, RPC C SP[8] 8 CLS, DS, IS 0000 DB11-8 DB7-0 8 4IR7-0 Cout SC, CC Z C DB7-0 $01F $04 $A0 $01F PC[8] $05 PC $05 $06 $A $A0 (DBZ) $AA0 ≡ DBZ $A0 $803 $D00 R W TPC, TIR, TSP 8 8 12 8 DB11-8 4 IR11-84 TPC TIR TSP s r CIM Xs Z C ZAC, RAC,
  • 39. CS2: Programación. Ensamblador mi_programa.txt Etiquetas de datos: constantes o direcciones de variables en memoria Sección para directivas (palabras reservadas que no son instrucciones) de definición de etiquetas de datos equ RES $A0 equ MD $A1 equ MR $A2 laim 25 sta MD laim 12 sta MR jsr mult stop mult: laim $00 sta RES bucle: lda RES add MD sta RES dbz MR jmp bucle rts Sección del programa principal Etiquetas de salto: representan direcciones de memoria (destinos de saltos) Sección para la definición de subrutinas
  • 40. CS2: Programación. Ensamblador. Directiva equ mi_programa.txt Etiquetas de datos: constantes o direcciones de variables en memoria equ RES $A0 equ MD $A1 equ MR $A2 laim 25 sta MD laim 12 sta MR jsr mult stop mult: laim $00 sta RES bucle: lda RES add MD sta RES dbz MR jmp bucle rts equ RES $A0 Nombre de la directiva Etiqueta ValorEtiquetas de salto: representan direcciones de memoria (destinos de saltos)
  • 41. CS2: Programación. Especificación de programas equ RES $A0 equ MD $A1 equ MR $A2 $019 $2A1 $00C $2A2 $E06 $D00 $000 $2A0 $1A0 $3A1 $2A0 $AA2 $808 $F00 Memoria $00 $01 $02 $03 $04 $05 $06 $07 $08 $09 $0A $0B $0C $0D laim $19 sta $A1 laim $0C sta $A2 jsr $06 stop laim $00 sta $A0 lda $A0 add $A1 sta $A0 dbz $A2 jmp $08 rts laim $19 sta MD laim $0C sta MR jsr mult stop mult: laim $00 sta RES bucle: lda RES add MD sta RES dbz MR jmp bucle rts Pseudocódigo/Lenguaje de programación MD ← 25 MR ← 12 R ← mult(MD,MR) fin subr mult(MD,MR) dev R R ← 0 hacer R ← R + MD MR ← MR - 1 mientras MR ≠ 0 fin mult Código máquina Mnemónicos Ensamblador
  • 42. CS2: Programación. Especificación de programas (2) 100010101 001010100 101010101 000011110 001010100 101010010 101010100 001111111 000101010 Código máquina Compilador Ensamblador Pseudocódigo/ Lenguaje de programación MD ← 25 MR ← 12 R ← mult(MD,MR) fin subr mult(MD,MR) dev R R ← 0 hacer R ← R + MD MR ← MR - 1 mientras MR ≠ 0 fin mult Ensamblador equ RES $A0 equ MD $A1 equ MR $A2 laim $19 sta MD laim $0C sta MR jsr mult stop mult: laim $00 sta RES bucle: lda RES This is a workstation. File Edit View Insert Window About This is a workstation. File Edit View Insert Window AboutThis is a workstation. File Edit View Insert Window About This is a workstation. File Edit View Insert Window AboutThis is a workstation. File Edit View Insert Window About This is a workstation. File Edit View Insert Window About This is a workstation. File Edit View Insert Window About This is a workstation. File Edit View Insert Window About
  • 43. CS2: Programación. Pseudocódigo: asignaciones ... laim C sta VARIABLE ... ... VARIABLE ← C ... C ≡ constante ... lda VARIABLE2 sta VARIABLE1 ... ... VARIABLE1 ← VARIABLE2 ... ... laim 0 addi PUNTERO sta VARIABLE ... ... VARIABLE ← PUNTERO[] ... PUNTERO[] ≡ dato apuntado por el PUNTERO
  • 44. CS2: Programación. Pseudocódigo: comparaciones ... laim 1 add A sub B sta TEMP dbz TEMP jmp distintos ... {iguales} jmp seguir distintos: ... {distintos} seguir: ... TEMP ← A – B + 1 TEMP ≠ 0 TEMP ← TEMP – 1 (= A – B), ¿TEMP = 0? (≡ ¿A = B?) TEMP = 0 ... si (A = B) ... {iguales} sino ... {distintos} fsi ...
  • 45. CS2: Programación. Pseudocódigo: comparaciones (2) ... lda A sub B bcs AmenorqB ... {A ≥ B} jmp seguir AmenorqB: ... {A < B} seguir: ... AC ← A – B, C ← 1 si A – B < 0 (≡ A < B) ¿C = 1? (≡ ¿A < B?) C = 1 C = 0 ... si (A < B) ... {A < B} sino ... {A ≥ B} fsi ... Nota: válido sólo si A y B son ambos positivos o ambos negativos.
  • 46. CS2: Programación. Pseudocódigo: bucles ... laim N sta CONT bucle: ... {cuerpo} dbz CONT jmp bucle ... CONT ← N CONT = 0 CONT ← CONT – 1 ¿CONT = 0? CONT ≠ 0 N ≡ número de iteraciones (N > 0) ... CONT ← N hacer ... {cuerpo} CONT ← CONT - 1 mientras (CONT ≠ 0) ...
  • 47. CS2: Programación. Pseudocódigo: subrutinas subr NOMBRE(P1,P2,...) dev R1,R2,... ... fin NOMBRE Declaración: NOMBRE: ... rts P1, P2, ... = parámetros de entrada R1, R2, ... = parámetros de salida Nota: un parámetro de entrada puede ser también parámetro de salida ... <R1,R2,...> ← NOMBRE(P1,P2,...) ... Llamada: ... jsr NOMBRE ...
  • 48. CS2: Programación. Ejemplo: Suma de 16 sumandos • Los sumandos están almacenados en $D0 .. $DF • El resultado debe almacenarse en la dirección $BB • En caso de overflow, detener el programa CONT ← 16 PUNT ← $DF SUMA ← 0 hacer SUMA ← SUMA + PUNT[] si (carry) terminar fsi PUNT ← PUNT – 1 CONT ← CONT - 1 mientras CONT ≠ 0 fin pseudocódigo Solución: Se plantea como un bucle en el que la variable SUMA ($BB) irá acumulando los sumandos recorridos hasta el momento. Para poder acceder a cada sumando, usamos un puntero PUNT que decrementamos en cada iteración. Su valor inicial será $DF. El número de iteraciones es controlado por la variable contador, CONT.
  • 49. CS2: Programación. Ej.: Suma de 16 sumandos (2) ensamblador CS2 CONT ← 16 PUNT ← $DF SUMA ← 0 hacer SUMA ← SUMA + PUNT[] si (carry) terminar fsi PUNT ← PUNT – 1 CONT ← CONT - 1 mientras CONT ≠ 0 fin equ SUMA $BB equ CONT $AA equ PUNT $AB laim 16 sta CONT laim $DF sta PUNT laim 0 sta SUMA bucle: lda SUMA addi PUNT sta SUMA bcs terminar dbz PUNT dbz CONT jmp bucle terminar: stop pseudocódigo
  • 50. CS2: Programación. Ej.: Suma de 16 sumandos (3) • Podemos mejorar el programa resultante usando el AC para acumular los sumandos en el bucle en lugar de usar la variable SUMA. • Únicamente habría que actualizar SUMA al finalizar el bucle, cuando AC contenga la suma de los 16 sumandos. equ SUMA $BB equ CONT $AA equ PUNT $AB laim 16 sta CONT laim $DF sta PUNT laim 0 sta SUMA bucle: lda SUMA addi PUNT sta SUMA bcs terminar dbz PUNT dbz CONT jmp bucle terminar: stop equ SUMA $BB equ CONT $AA equ PUNT $AB laim 16 sta CONT laim $DF sta PUNT laim 0 bucle: addi PUNT bcs terminar dbz PUNT dbz CONT jmp bucle terminar: sta SUMA stop