Determinan la operación del CPU.
Existe una gran variedad que varían en
función: conjunto
de instrucciones.
Elementos de una instrucción de máquina:
Cada
instrucción contiene la información requerida por el CPU para ser ejecutada.
1.Código de operación: Ej:
ADD, SUB, MOV.
2.Referencia de Operando Fuente: Dirección
de los operandos
requeridos por la instrucción.
3.Referencia de Operando Resultante: Dir.
guardar resultado.
4.Referencia de Siguiente Instrucción.:
Dir. sig. instrucción.
Secuencia
de bits.
Mnemonicos.
Representación simbólica de una
instrucción de máquina.
Abreviaciones que indican la operación.
Ej: ADD, JMP, LOAD.
Dividida
en campos.
La
estructura de una instrucción es conocida como: formato de instrucción.
Diseño del Conjunto de Instrucciones.
Complejo
y Debatido.
2. Tipos
de datos:
1.
Direcciones.
2.
Números.
3.
Caracteres.
4.
Lógicos.
3. Formato
de la instrucción:
Longitud,
# campos, tipo de direccionamiento.
4. Registros:
No.
de registros del CPU a ser usados.
5. Direccionamiento:
Modo(s)
de especificar la dirección de un operando.
6. Repertorio
de operaciones.
1.
Transferencia de datos.
2.
Aritméticas.
3.
Manipulación de bits (lógica).
4.
Control de programa.
5.
Manipulación de cadenas (strings).
6.
Control del CPU.
7. Número
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, dirección memoria o número.
MOV
AX, 10
MOV
BX, DX
Instrucciones
Aritméticas
ADD
/ SUB Suma / Resta
INC
/ DEC Incremento
/ Decremento
NEG Complemento a dos
MUL
/ DIV Multiplicación
/ División
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
Multiplicación
/ División de AX por / entre Op.
Resultado
almacenado en AX.
MOV
AX, 5
MOV
BX, 4
MUL
BX
DIV
3
Instrucciones
Lógicas
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 Manipulación de Cadenas
MOVS Mover cadenas
CMPS Comparar cadenas
SCAS Recorrer cadena
LODS Leer cadena
STOS Guardar cadena
Registro de Banderas de 16 bits
Procesador 8088
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
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 Interrupción
JMP etiqueta
Provoca
cambio en el flujo del programa sin considerar condición alguna.
La etiqueta
especifica a partir de donde se continua la ejecución del programa.
JZ / JNZ etiqueta
Transfiere
el control de ejecución si y solo si la bandera “Zero Flag (ZF)” se encuentra
prendida / apagada..
La etiqueta
especifica a partir de donde se continua la ejecución del programa.
Si AX = 0 entonces AX = AX + 1
de otra forma AX = AX + 2
ADD AX, 0
JNZ SumaDos
INC AX
JMP
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
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)
Modos de Direccionamiento
Permiten interpretar los bits de una dirección para encontrar el
valor de un operando.
Modos:
Implícito
Inmediato
Directo
Indirecto
Registro
Registro Indirecto
Desplazamiento
No todas las computadoras utilizan todos los modos.
Direccionamiento
Implícito.
No
necesita recibir la dirección del operando, esta se encuentra implícita en la
operación.
Ej.:
MUL BX
Ventaja:
Acceso
rápido.
Desventaja:
Conocer
perfectamente la operación.
Direccionamiento Inmediato.
Recibe
el operando y no la dirección de este.
Ej.:
MOV AX, 4
Ventaja:
no requiere memoria extra para traer el operando.
Desventaja:
Solo puede utilizar constantes.
Direccionamiento Directo.
Recibe
la dirección en memoria del operando.
Ej.:
MOV AX, [10]
Ventaja:
Acceso
rápido para variables globales.
Desventajas:
La
instrucción siempre accesará la misma localidad de memoria.
Solo
puede cambiar el valor del operando pero no su dirección.
Direccionamiento Indirecto.
Recibe
la dirección de la palabra en memoria
(apuntador) que contiene la dirección del operando.
Ej.:
MOV AX, [[10]]
Ventaja:
La
dirección en memoria puede apuntar a distintas localidades de memoria.
Desventaja:
La
ejecución de la instrucción requiere de dos referencias a memoria para traer el
operando (una para obtener su dirección y la otra para obtener su valor).
Direccionamiento de Registro (directo).
Similar
al direccionamiento directo.
Recibe
un registro en lugar de una dirección en memoria.
Ej.:
MOV AX, BX
Ventaja:
No
necesita referencias a memoria.
Desventaja:
Número
limitado de registros en el CPU -> usar este direccionamiento para operandos
muy utilizados.
Este
es el modo de direccionamiento más común.
Direccionamiento de Registro Indirecto.
Similar
al direccionamiento indirecto.
Recibe
un registro que contiene la dirección (apuntador) en memoria del operando.
Ej.:
MOV AX, [BX]
Ventaja:
La
dirección en el registro puede apuntar a distintas localidades de memoria
(misma indirecta).
Utiliza
una referencia menos a memoria en comparción 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 dirección del operando sea calculada en base a una dirección
fija más otra dirección de desplazamiento.
Dirección
= Fija + Desplazamiento.
Tanto
la dirección fija como la de desplazamiento pueden ser referenciadas de manera
directa o indirecta.
La
dirección fija puede estar ímplicita en la instrucción.
Relativo.
Indexado.
Base.
Relativo.
La
dirección fija es el registro PC y se encuentra implícita en la instrucción.
Ej.:
MOVPC AX, BX (BX = 5,
PC = 10)
Indexado.
La
dirección fija referencia a la memoria.
El
desplazamiento contiene un número positivo para calcular la dirección del
operando.
Ventaja:
Eficiente para operaciones ciclicas.
Desventaja:
dos accesos a memoria.
Dos
tipos principales:
Preindexado.
Postindexado.
Preindexado (indexamiento previo)
La
dirección fija es sumada al desplazamiento.
El
resultado es usado como una dirección en memoria donde se encuentra la
dirección del operando.
Ciclos de Máquina
La
función de una computadora es ejecutar programas.
La
ejecución de un programa consiste en ejecutar una secuencia de instrucciones de
máquina.
Cada
instrucción de máquina 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.
Ciclo
de captación (fetch).
Ocurre al inicio de cada ciclo de
máquina.
Produce que una instrucción de máquina
sea traída de memoria principal.
Pasos del ciclo:
Se
asume que existe un reloj para sincronizar la ejecución.
Tiempo 1:
Mover el contenido del PC al MAR.
Tiempo 2:
Mover el contenido de la dirección 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 captación:
t1: MAR PC
t2: MDR Memoria
PC PC + 1
t3: IR MDR
Ciclo Indirecto.
Obtiene
los operandos
indirectos de la instrucción de máquina.
Objetivo
es transformar un direccionamiento indirecto en uno directo.
Microoperaciones del
ciclo:
Se
asume un formato de instrucción de una sola dirección.
t1: MAR IR(dirección)
t2:
MDR Memoria
t3: IR(dirección) MDR
(dirección)
Ciclo de Interrupción.
Puede
ocurrir al finalizar el ciclo de ejecución.
Se
ejecuta si alguna señal de interrupción ha sido emitida.
Objetivo:
Guardar la siguiente dirección a
ejecutarse.
Pasar el control a la rutina de
interrupción.
Microoperaciones del
ciclo:
t1: MDR PC
t2: MAR Dirección
almacenamiento
PC Dirección rutina interrupción
t3: Memoria MDR
Ciclo de Ejecución.
El
número de microoperaciones a
ejecutarse no es fijo como en los ciclos de captación, indirecto e
interrupción.
La
cantidad de microoperaciones
depende de la instrucción de máquina.
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
Ejecución
de una instrucción completa.
MUL 5
Ciclo
de Captación
t1: MAR PC
t2: MDR Memoria
PC PC + 1
t3: IR MDR
Ciclo
de Ejecución
t4: AX AX *
5
SUB
AX, [[10]]
Ciclo de Captación
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 Ejecución (SUB AX, [20])
t7: MAR IR(20)
t8: MDR Memoria
t9: AX AX -
MDR



No hay comentarios.:
Publicar un comentario