Вы находитесь на странице: 1из 42

Unidad 2

Memoria
Contiene el
programa a ser
ejecutado y datos

Dispositivos de
Entrada/Salida

Bus de sistema
Buses de datos, de
Direcciones y de
Control

Registros
Contienen los
operandos de las
instrucciones

Seal de Clock
Marca el ritmo

Status Register
Permite controlar el
resultado de algunas
instrucciones.

Seales de
control

Instruction
Register
Muestra la
instruccin que se
est ejecutando

Unidad de
Control
Muestra las
microinstrucciones
que se estn
ejecutando y el paso

Unidad
Aritmtico-Lgica
Muestra que operacin
AL que se est
ejecutando, los
operandos y el
resultado.

Program Counter
Contiene la direccin de la PRXIMA
instruccin a ejecutarse

MDR
Contiene el dato a guardar en
memoria o el dato que se ha ledo
de memoria

MAR
Contiene la direccin de memoria
donde se guardar o leer un
dato

Transferencia entre
registros
MOV R , R
d

MOV

Rd

Rs

MOV

R3

R2

0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0
0
B
4
0

Leer de memoria
MOV Rd, [Ri]

MOV

Rd

[Ri]

MOV

R3

[R2]

0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0
1
3
4
0
1233
1234
1235

A8D0
F501
67F4

Escribir en memoria
MOV [Ri], Rs

MOV

[Ri]

Rs

MOV

[R2]

R3

0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0
1
A
6
0
2311
2312
2313

A8D0
A321
F501
67F4

Movimiento 8 bits menos


sig.
MOVL R , Inm_8
d

MOVL

Rd

MOVL

R3

Inm_8
A

0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1
2
3
A
3

Movimiento 8 bits ms
sig.
MOVH R , Inm_8
d

MOVH

Rd

MOVH

R3

Inm_8
A

0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1
2
B
A
3

Por qu MOVL y MOVH?


Por qu no tener una nica instruccin que

guarde un nmero de 16 bits en un registro?


Porque necesitaramos una instruccin de

ms bits, y esto no es deseable! Si la


mantenemos siempre de 16 bits con una sola
lectura a memoria la obtenemos (debido a
que estamos limitados por el ancho del bus de
datos!)

Suma
ADD Rd, Rs1, Rs2

ADD

Rd

Rs1

Rs2

ADD

R1

R2

R3

0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0
4
1
4
C

Resta
SUB Rd, Rs1, Rs2

SUB

Rd

Rs1

Rs2

SUB

R1

R2

R3

0 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0
4
9
4
C

OR
OR Rd, Rs1, Rs2

OR

Rd

Rs1

Rs2

OR

R1

R2

R3

0 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0
5
1
4
C

AND y XOR
AND Rd, Rs1, Rs2

(01011 Rd Rs1 Rs2 00)

XOR Rd, Rs1, Rs2 (01100 Rd Rs1 Rs2 00)

COMP Rs1, Rs2 (01101 Rs1 Rs2 00000)

Permite saber si un nmero es mayor, menor o igual a otro.

ZF = Zero Flag
Est en 1 si el resultado es 0

OF = Overflow Flag
Si la operacin no se puede
resolver en la cantidad de bits
(16 bits en el simulador)

CF = Carry Flag
Es el ltimo acarreo
de la operacin ejecutada

SF = Sign Flag
0 si el resultado es +
1 si el resultado es -

De un solo operando
NOT Rd/s

(10000 Rd/s 00000000)

Realiza la operacin lgica NOT con los bits del registro


Rd/s.

INC Rd/s

(10001 Rd/s 00000000)

Incrementa el contenido del registro Rd/s en una unidad.

DEC Rd/s

(10010 Rd/s 00000000)

Decrementa el contenido del registro Rd/s en una unidad.

NEG Rd/s

(10011 Rd/s 00000000)

Cambia de signo (complemento a 2) el contenido del


registro Rd/s.

Saltos incondicionales
Instruccin

Descripcin

JMP Inm_8

Resultado

11 00 0 000
Inm_8

Realiza un salto relativo.

PC = PC +
Ex_16(Inm_8)

JMP Rx

Realiza
un
salto
absoluto a la posicin
de memoria contenida
en el registro Rx.

PC = Rx

11 00 1 Rx 0

Nota: Ex_16(Inm_8) significa que se extiende el nmero en 8 bits Inm_8 a


16 bits EXTENDIENDO su signo. Ejemplos:
20 es positivo entonces: Ex_16(20) = 0000 0000 0010 00002 = 002016
80 es negativo entonces: Ex_16(80) = 1111 1111 1000 00002 = FF8016

Salto condicional
Se ejecuta PC = PC + Ex_16(Inm_8)
siempre y cuando la condicin codificada en el
campo Cond sea cierta.
Cond

Es cierta si:
000

CF = 1

001

CF = 0

010

OF = 1

011

OF = 0

100

ZF = 1

101

ZF = 0

110

SF = 1

111

SF = 0

Gua de ejercicios

Calculando
Si el bus de direcciones cuenta con 8 bits,

cuntas posiciones de memoria se pueden


direccionar?

Si el bus de direcciones cuenta con 16 bits,

cul es la direccin ms baja y cul es la


direccin ms alta que se puede direccionar?

Conociendo el State
Register
(CF)
Hacer una suma de dos valores que prenda el
CF

ADD
ADD

Rd

Rs1

Rs2

Conociendo el State
Register
(ZF)
Hacer una resta de dos valores que prenda el
CF

SUB
SUB

Rd

Rs1

Rs2

Conociendo el State Register


(OF)
Hacer una suma de dos valores que prenda el
OF

ADD
ADD

Rd

Rs1

Rs2

Conociendo el State
Register
(SF)
Hacer una resta de dos valores que prenda el
CF

SUB
SUB

Rd

Rs1

Rs2

Indique si las siguientes


instrucciones son vlidas
4312
4A64
4A6F

Complete el siguiente cuadro


Las instrucciones se ejecutan una despus de la otra!

Instruccin
233F
2B01
436C

Instruccin en binario

R3

Hacer el seguimiento del siguiente


cdigo
Instruccin

Instruccin en binario

Mnemnico

4328
1180
4A64
1C40

Registro

Valor
inicial

PC

0100

R1

1324

R2

0100

R3

0000

R4

1421

[R4]

0500

Despus de ejecutar:
Inst 1

Inst 2

Inst 3

Inst 4

Вам также может понравиться