martes, 5 de abril de 2016

Instrucciones de Máquina

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.
Representación de Instrucciones...
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

   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


  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