1 2
Perifricos
CPU
Unidad Aritmtica y Lgica
Unidad de Control
n
2
A D
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.
Realiza clculos:
Aritmticos. Suma, Resta, Multiplicacin y Divisin. Lgicos (comparaciones). AND, OR, NOT.
Ejecucin de una instruccin = conjunto de ciclos: Captacin (fetch): obtener instruccin de la memoria. Indirecto: obtener operandos. Ejecucin. Interrupcin: instrucciones que requieren atencin urgente.
Registros
Acceso de alta velocidad. Localizacin de la ltima instruccin. Almacenar instrucciones y datos mientras se ejecuta alguna instruccin.
Dos tipos:
Disponibles al usuario:
Propsito General. AX, BX, CX, DX (H/L). Registros de Datos. Registros de Direccin. Propsito general.
SI y DI.
SP, BP, CS, DS, ES, SS, IP.
Direccionamiento.
Banderas (cdigos de condicin). Control: control CPU. Estado: estado de resultados de operaciones aritmticas y lgicas.
8
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.
Instrucciones de Mquina
10
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. 2.
3.
4.
Cdigo de operacin: Ej: ADD, SUB, MOV. Referencia de Operando Fuente: Direccin de los operandos requeridos por la instruccin. Referencia de Operando Resultante: Dir. guardar resultado. Referencia de Siguiente Instruccin.: Dir. sig. instruccin.
11
Representacin de Instrucciones.
Secuencia de bits.
Mnemnicos.
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
12
Complejo y Debatido.
1.
Tipos de datos:
1.
2. 3. 4.
2.
1.
Formato de la instruccin:
Longitud, # campos, tipo de direccionamiento.
3.
1.
Registros:
No. de registros del CPU a ser usados.
4.
1.
Direccionamiento:
Modo(s) de especificar la direccin de un operando.
13
5.
Repertorio de operaciones.
1. 2. 3. 4. 5. 6.
Transferencia de datos. Aritmticas. Manipulacin de bits (lgica). Control de programa. Manipulacin de cadenas (strings). Control del CPU.
6.
14
MOV destino, fuente Transfiere datos entre registros y memoria. Destino: registro o localidad de memoria. Fuente: registro, direccin memoria o nmero.
15
Instrucciones Aritmticas
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
16
MUL / DIV Op Multiplicacin / Divisin de AX por / entre Op. Resultado almacenado en AX.
Instrucciones Lgicas
AND OR NOT
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.
Mover cadenas Comparar cadenas Recorrer cadena Leer cadena Guardar cadena
19
OF DF IF TF SF ZF
AF
PF
CF
OF Overflow Flag DF Direction Flag IF Interruption Flag TF Trap Flag SF Sign Flag ZF Zero Flag AF Aux. Carry Flag PF Parity Flag CF Carry Flag
20
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.
21
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: ...
22
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.
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
23
Limpiar bandera CF Limpiar bandera DF Limpiar Bandera IF Complementar CF Prender CF Prender DF Prender IF Detener el procesador (Alto)
24
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.
25
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 MOV DX, AX Fin: ...
26
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.
27
Modos de Direccionamiento
28
Modos de Direccionamiento
Permiten interpretar los bits de una direccin para encontrar el valor de un operando. Modos:
Direccionamiento Implcito.
No necesita recibir la direccin del operando, esta se encuentra implcita en la operacin. Ej.:
MUL BX
Ventaja:
Acceso rpido.
Desventaja:
Direccionamiento Inmediato.
Ventaja: no requiere memoria extra para traer el operando. Desventaja: Solo puede utilizar constantes.
31
Direccionamiento Directo.
Direccionamiento Indirecto.
Recibe la direccin de la palabra en memoria (apuntador) que contiene la direccin del operando.
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).
33
Ventaja:
Desventaja:
Nmero limitado de registros en el CPU -> usar este direccionamiento para operandos muy utilizados.
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.
35
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. Relativo. Indexado. Base.
1. 2. 3.
36
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.
37
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
38
PC = 100 AX = 20 BX = 4 CX = 5 DX = 2 DIV BX Implcito MOV AX, 10 Inmediato MOV AX, [0] Directo MOV AX, [[2]] Indirecto MOV AX, BX Registro MOV AX, [CX] Registro Indirecto MOVPC AX, DXRelativo MOV AX, [DX,BX] Preindexado MOV AX, [BX]BX Postindexado
0 1 2 3 4 5 6
. . .
100 101 102 103 104 105 18
100
17 15
39
PC = 100 AX = 20 BX = 5 CX = 4 DX = 100
0 1 2 3 4
5 100
100
. . .
Por cada tipo de direccionamiento escriba una instruccin de mquina que almacene en AX el valor 5. Utilice los siguientes valores en los registros de CPU y en la memoria principal. Asuma que estos nunca cambian.
40
Ciclos de Mquina
41
Ciclos 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.
42
Programa
Ciclo de instruccin
. . . . . . . .
Ciclo de instruccin
Captacin
Indirecto Ejecucin Interrupcin
Captacin
Indirecto Ejecucin Interrupcin
43
Ciclo de Instruccin
Captacin
Interrupcin
Indirecto
Ejecucin
44
Tiempo 1:
Tiempo 2:
Mover el contenido de la direccin de memoria apuntado por el MAR al MDR. Memory Data Register Incrementar el contenido del PC en uno. Program Counter Mover el contenido del MDR al IR. Registro de instruccin
45
Tiempo 3:
t3:
46
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.
47
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. Micro operaciones del ciclo: t1: MDR PC t2: MAR Direccin almacenamiento PC Direccin rutina interrupcin t3: Memoria MDR
48
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:
49
50
Ciclo de Captacin
t1:MAR t2:MDR PC t3:IR PC Memoria PC + 1 MDR
Ciclo de Ejecucin
t4:AX AX * 5
51
PC Memoria PC + 1 MDR
Ciclo Indirecto
t4: MAR t5: MDR t6: IR(20) IR(10) Memoria MDR(20)
52
Gracias
53