Está en la página 1de 53

Organizacin de la

unidad central de
procesamiento (CPU)
Organizacin Computacional
Unidad Central de Proceso (CPU)
Funcin: ejecutar secuencias de instrucciones.
Buscar instrucciones (memoria).
Interpretar instrucciones.
Buscar datos (memoria o E/S).
Procesar datos.
Escribir datos (memoria o E/S).

Programacin computadora.
Preparar secuencia de instrucciones (conjunto de
instrucciones).
Almacenar datos (memoria).
Instruir al CPU para que inicie la ejecucin.
Unidad Arimtica y Lgica (ALU)
Realiza clculos:
Aritmticos.
Suma, Resta, Multiplicacin y Divisin.
Lgicos (comparaciones).
AND, OR, NOT.

Utiliza banderas (signo, overflow, etc.).

Unidad de Control, Registros y E/S llevan datos.


Unidad de Control (UC)
Ejecucin de una instruccin = conjunto de ciclos:
Captacin (fetch): obtener instruccin de la memoria.
Indirecto: obtener operandos.
Ejecucin.
Interrupcin: instrucciones que requieren atencin urgente.

Ciclos compuestos de microoperaciones.

Utiliza los registros de Control y Estado.


Registros
Almacenamiento temporal interno del CPU.
Acceso de alta velocidad.
Localizacin de la ltima instruccin.
Almacenar instrucciones y datos mientras se ejecuta
alguna instruccin.

Dos tipos:
Disponibles al usuario.
Control y Estado (UC).
Disponibles al usuario:
Propsito General.
AX, BX, CX, DX (H/L).

Registros de Datos.

Registros de Direccin.
Propsito general.
SI y DI.
Direccionamiento.
SP, BP, CS, DS, ES, SS, IP.

Banderas (cdigos de condicin).


Control: control CPU.
Estado: estado de resultados de operaciones
aritmticas y lgicas.
Control y Estado.
Contador de Programa (PC): direccin de la instruccin a ser
buscada (siguiente).

Registro de Instruccin (IR): instruccin reciente.

Registro de Direccin de Memoria (MAR): direccin de la


localidad de memoria.

Registro de Dato de Memoria (MDR): palabra de memoria


mas reciente.

Palabra de Estado de Programa (PSW): cdigos de


condicin e informacin de estado.
Signo, cero, acarreo, igual, overflow, etc.
Instrucciones de
Mquina
Instrucciones de Mquina
Determinan la operacin del CPU.
Existe una gran variedad que varian en funcin: conjunto de
instrucciones.

Elementos de una instruccin de mquina:


Cada instruccin contiene la informacin requerida por el CPU
para ser ejecutada.
1. Cdigo de operacin: Ej: ADD, SUB, MOV.
2. Referencia de Operando Fuente: Direccin de los operandos
requeridos por la instruccin.
3. Referencia de Operando Resultante: Dir. guardar resultado.
4. Referencia de Siguiente Instruccin.: Dir. sig. instruccin.
Representacin de Instrucciones.

Secuencia de bits.

Mnemonicos.
Representacin simblica de una instruccin de mquina.
Abreviaciones que indican la operacin.
Ej: ADD, JMP, LOAD.

Dividida en campos.

Op. Code Operand Ref Operand Ref

La estructura de una instruccin es conocida como: formato


de instruccin.
Diseo del Conjunto de Instrucciones.
Complejo y Debatido.

1. Tipos de datos:
1. Direcciones.
2. Nmeros.
3. Caracteres.
4. Lgicos.

2. Formato de la instruccin:
1. Longitud, # campos, tipo de direccionamiento.

3. Registros:
1. No. de registros del CPU a ser usados.

4. Direccionamiento:
1. Modo(s) de especificar la direccin de un operando.
5. Repertorio de operaciones.
1. Transferencia de datos.
2. Aritmticas.
3. Manipulacin de bits (lgica).
4. Control de programa.
5. Manipulacin de cadenas (strings).
6. Control del CPU.

6. Nmero de direcciones de las instrucciones:


Cero HLT.
Una DIV BX
Dos MOV AL, 1
Instrucciones de Transferencia de Datos
MOV Mover
PUSH, POP Operaciones en Stack
XCHG Intercambiar
IN, OUT Puertos entrada/salida

MOV destino, fuente


Transfiere datos entre registros y memoria.

Destino: registro o localidad de memoria.

Fuente: registro, direccin memoria o nmero.


MOV AX, 10
MOV BX, DX
Instrucciones Aritmticas
ADD / SUB Suma / Resta
INC / DEC Incremento / Decremento
NEG Complemento a dos
MUL / DIV Multiplicacin / Divisin

ADD / SUB Op1, Op2


Suma / resta del Op1 y el Op2.

El resultado es almacenado en el Op1.


MOV AX, 1
MOV BX, 2
MOV CX, 10
ADD AX, BX
SUB CX, 5
INC / DEC Op
Incremento / Decremento de Op en una unidad.

Resultado almacenado en Op.


MOV AX, 8
INC AX
MOV BX, AX
DEC BX

MUL / DIV Op
Multiplicacin / Divisin de AX por / entre Op.

Resultado almacenado en AX.


MOV AX, 5
MOV BX, 4
MUL BX
DIV 3
Instrucciones Lgicas
AND AND
OR OR Inclusivo
NOT Complementar (a uno)

NOT Op
Complemento a uno de Op.
Resultado almacenado en Op.

AND / OR Op1, Op2


AND / OR del Op1 con el Op2.
Resultado almacenado en Op1.
MOV AL, 5
AND AL, FH
OR AL, 0H
NOT AL
Instrucciones de Manipulacin de
Cadenas

MOVS Mover cadenas


CMPS Comparar cadenas
SCAS Recorrer cadena
LODS Leer cadena
STOS Guardar cadena
OF DF IF TF SF ZF AF PF CF

OF Overflow Flag
DF Direction Flag
IF Interruption Flag Registro de Banderas de 16 bits
TF Trap Flag Procesador 8088
SF Sign Flag
ZF Zero Flag
AF Aux. Carry Flag
PF Parity Flag
CF Carry Flag
Instrucciones de Control de Programa
CALL Llamar a una subrutina
RET Regresar de una subrutina
JMP Salto
JZ, JNZ Saltos condicionales
LOOP Ciclo
LOOPNE Ciclos condicionales
INT Interrupcin

JMP etiqueta
Provoca cambio en el flujo del programa sin considerar
condicin alguna.
La etiqueta especifica a partir de donde se continua la
ejecucin del programa.
JZ / JNZ etiqueta
Transfiere el control de ejecucin si y solo si la
bandera Zero Flag (ZF) se encuentra prendida /
apagada..
La etiqueta especifica a partir de donde se
continua la ejecucin del programa.
Si AX = 0 entonces AX = AX + 1
de otra forma AX = AX + 2

ADD AX, 0
JNZ SumaDos
INC AX
JMP Fin
SumaDos: ADD AX, 2
Fin: ...
LOOP etiqueta
Utilizada cuando se necesita ejecutar un conjunto
de instrucciones varias veces.
Brinca a la etiqueta siempre y cuando el valor de
CX sea diferente de cero.
En cada LOOP: CX = CX 1, si CX <> 0 salta.
Ej: Realice un programa que sume los numeros enteros
del 1 al 20. Almacene el resultado en DX.

MOV CX, 20
MOV AX, 0
MOV BX, 1
Suma: ADD AX, BX
INC BX
LOOP Suma
MOV DX, AX
Instrucciones de Control del Procesador
CLC Limpiar bandera CF
CLD Limpiar bandera DF
CLI Limpiar Bandera IF
CMC Complementar CF
STC Prender CF
STD Prender DF
STI Prender IF
HLT Detener el procesador (Alto)
Realice un programa que dado un nmero K, obtenga
su nmero de Fibonacci. Almacene el resultado en DX.
La sucesin de Fibonacci se define como la suma de
los dos ltimos elementos de una serie que empieza
con los nmeros 1, 1.
Ej: 1, 1, 2, 3, 5, 8, 13, ...
Formalmente se define de la siguiente manera:
F(1) = 1
F(2) = 1
F(K) = F(K-1) + F(K-2)

Ej: F(5) = F(4) + F(3) = 3 + 2 = 5


F(4) = F(3) + F(2) = 2 + 1 = 3
F(3) = F(2) + F(1) = 1 + 1 = 2
MOV CX, K
SUB CX, 1
JZ Uno
SUB CX, 1
JNZ Otro
Uno: MOV DX, 1
JMP Fin
Otro:
MOV AX, 1
MOV BX, 1
Serie:
MOV DX, AX
ADD AX, BX
MOV BX, DX
LOOP Serie
Fin: MOV DX, AX
...
SHL Op1, Op2
Corrimiento lgico a la izquierda
Recorre los bits de Op1 un nmero Op2 de
posiciones a la izquierda.
En cada corrimiento:
Agrega en el bit menos significativo un cero.
El bit ms significativo pasa a la bandera CF.

MOV AX, 11001100B


SHL AX, 1
AX = 10011000, CF = 1
Realice un programa que utilizando la instruccin
SHL, multiplique por dos un nmero N, K veces.
Las entradas al programa sern:
el nmero N a multiplicar.
el numero de veces K que se desea realizar la multiplicacin.

Pruebe su programa con N = 2, K = 3 (Resultado = 16).


Modos de
Direccionamiento
Modos de Direccionamiento
Permiten interpretar los bits de una direccin para encontrar el
valor de un operando.

Modos:
Implcito
Inmediato
Directo
Indirecto
Registro
Registro Indirecto
Desplazamiento

No todas las computadoras utilizan todos los modos.


Direccionamiento Implcito.
No necesita recibir la direccin del operando,
esta se encuentra implcita en la operacin.

Ej.:
MUL BX

Ventaja:
Acceso rpido.

Desventaja:
Conocer perfectamente la operacin.
Direccionamiento Inmediato.
Recibe el operando y no la direccin de este.

Ej.:
MOV AX, 4

Ventaja: no requiere memoria extra para traer


el operando.

Desventaja: Solo puede utilizar constantes.


Direccionamiento Directo.
Recibe la direccin en memoria del operando.

Ej.:
MOV AX, [10]

Ventaja:
Acceso rpido para variables globales.

Desventajas:
La instruccin siempre accesar la misma localidad de
memoria.
Solo puede cambiar el valor del operando pero no su
direccin.
Direccionamiento Indirecto.
Recibe la direccin de la palabra en memoria
(apuntador) que contiene la direccin del operando.

Ej.:
MOV AX, [[10]]

Ventaja:
La direccin en memoria puede apuntar a distintas
localidades de memoria.

Desventaja:
La ejecucin de la instruccin requiere de dos
referencias a memoria para traer el operando (una
para obtener su direccin y la otra para obtener su
valor).
Direccionamiento de Registro (directo).
Similar al direccionamiento directo.

Recibe un registro en lugar de una direccin en memoria.

Ej.:
MOV AX, BX

Ventaja:
No necesita referencias a memoria.

Desventaja:
Nmero limitado de registros en el CPU -> usar este
direccionamiento para operandos muy utilizados.

Este es el modo de direccionamiento ms comn.


Direccionamiento de Registro Indirecto.
Similar al direccionamiento indirecto.

Recibe un registro que contiene la direccin (apuntador) en


memoria del operando.

Ej.:
MOV AX, [BX]

Ventaja:
La direccin en el registro puede apuntar a distintas localidades
de memoria (misma indirecta).
Utiliza una referencia menos a memoria en comparcin con el
direccionamiento inderecto.

Utilizado para apuntadores de uso frecuente.


Direccionamiento de Desplazamiento.
Combina los modos de direccionamiento directo y de
registro indirecto.

Se requiere que la direccin del operando sea calculada


en base a una direccin fija ms otra direccin de
desplazamiento.
Direccin = Fija + Desplazamiento.

Tanto la direccin fija como la de desplazamiento pueden


ser referenciadas de manera directa o indirecta.

La direccin fija puede estar mplicita en la instruccin.


1. Relativo.
2. Indexado.
3. Base.
Relativo.
La direccin fija es el registro PC y se encuentra
implcita en la instruccin.
Ej.:

MOVPC AX, BX (BX = 5, PC = 10)

Indexado.
La direccin fija referencia a la memoria.

El desplazamiento contiene un nmero positivo para


calcular la direccin del operando.
Ventaja: Eficiente para operaciones ciclicas.

Desventaja: dos accesos a memoria.

Dos tipos principales:


Preindexado.
Postindexado.
Preindexado (indexamiento previo)
La direccin fija es sumada al desplazamiento.
El resultado es usado como una direccin en
memoria donde se encuentra la direccin del
operando.
Ej.:
MOV AX, [BX,CX]

Postindexado (indexamiento posterior)


La direccin fija contiene la direccin en memoria
que a su vez contiene la direccin a ser utilizada
para obtener el operando.
A la direccin obtenida a partir de la direccin fija
se le suma el desplazamiento para obtener la
direccin del operando.
Ej.:
MOV AX, [BX]CX
0 7
PC = 100
1
2 100
AX = 20 3
4 100
BX = 4 20
5
CX = 5 6 105
DX = 2
.
DIV BX Implcito
.
MOV AX, 10 Inmediato
MOV AX, [0] Directo
MOV AX, [[2]] Indirecto .
MOV AX, BX Registro
100 18
MOV AX, [CX] Registro Indirecto 101
MOVPC AX, DXRelativo 102 100
MOV AX, [DX,BX] Preindexado 103
104 17
MOV AX, [BX]BX Postindexado 105 15
PC = 100 0 5
1 100
2
AX = 20
3
BX = 5 4 100
CX = 4 .
DX = 100
.
.
100 5
Por cada tipo de direccionamiento escriba una
101
instruccin de mquina que almacene en AX
102
el valor 5.
103
Utilice los siguientes valores en los 104 5
registros de CPU y en la memoria principal.
Asuma que estos nunca cambian.
Ciclos de Mquina
Ciclos de Mquina
La funcin de una computadora es ejecutar programas.

La ejecucin de un programa consiste en ejecutar una


secuencia de instrucciones de mquina.

Cada instruccin de mquina esta a su vez compuesta de un


conjunto de ciclos llamados ciclos de instrucciones.

Cada uno de los ciclos de instrucciones esta compuesto de


una serie de pasos conocidos como microoperaciones.
Programa

Ciclo de . . . . . . . . Ciclo de
instruccin instruccin

Captacin Captacin

Indirecto Indirecto

Ejecucin Ejecucin

Interrupcin Interrupcin
Ciclo de Instruccin

Captacin

Interrupcin Indirecto

Ejecucin
Ciclo de captacin (fetch).
Ocurre al inicio de cada ciclo de mquina.

Produce que una instruccin de mquina sea trada de


memoria principal.

Pasos del ciclo:


Se asume que existe un reloj para sincronizar la ejecucin.
Tiempo 1:
Mover el contenido del PC al MAR.
Tiempo 2:
Mover el contenido de la direccin de memoria apuntado por
el MAR al MDR.
Incrementar el contenido del PC en uno.
Tiempo 3:
Mover el contenido del MDR al IR.
Microoperaciones del ciclo de captacin:
t1: MAR PC
t2: MDR Memoria
PC PC + 1
t3: IR MDR
Ciclo Indirecto.
Obtiene los operandos indirectos de la
instruccin de mquina.

Objetivo es transformar un direccionamiento


indirecto en uno directo.

Microoperaciones del ciclo:


Se asume un formato de instruccin de una sola
direccin.
t1: MAR IR(direccin)
t2: MDR Memoria
t3: IR(direccin) MDR (direccin)
Ciclo de Interrupcin.
Puede ocurrir al finalizar el ciclo de ejecucin.

Se ejecuta si alguna seal de interrupcin ha sido


emitida.

Objetivo:
Guardar la siguiente direccin a ejecutarse.
Pasar el control a la rutina de interrupcin.

Microoperaciones del ciclo:


t1: MDR PC
t2: MAR Direccin almacenamiento
PC Direccin rutina interrupcin
t3: Memoria MDR
Ciclo de Ejecucin.
El nmero de microoperaciones a ejecutarse no es fijo como
en los ciclos de captacin, indirecto e interrupcin.

La cantidad de microoperaciones depende de la instruccin


de mquina.

Ejemplos:
ADD AX, [5]
t1: MAR IR(5)
t2: MDR Memoria
t3: AX AX + MDR

MOV AX, [100]


t1: MAR IR(100)
t2: MDR Memoria
t3: AX MDR
Diagrama de Flujo del Ciclo de Instruccin
Ejecucin de una instruccin completa.
MUL 5
Ciclo de Captacin
t1:MAR PC
t2:MDR Memoria
PC PC + 1
t3:IR MDR

Ciclo de Ejecucin
t4:AX AX * 5
SUB AX, [[10]]
Ciclo de Captacin
t1: MAR PC
t2: MDR Memoria
PC PC + 1
t3: IR MDR

Ciclo Indirecto
t4: MAR IR(10)
t5: MDR Memoria
t6: IR(20) MDR(20)

Ciclo de Ejecucin (SUB AX, [20])


t7: MAR IR(20)
t8: MDR Memoria
t9: AX AX - MDR

También podría gustarte