viernes, 24 de octubre de 2014

INSTRUCCIONES


Se denomina instrucción en informática al conjunto de datos insertados en una secuencia estructurada o específica que el procesador interpreta y ejecuta.

TIPOS DE INSTRUCCIONES
  • Transferencias de datos: Permite transferir datos entre la memoria y el registro o viceversa. Copian datos de un origen a un destino, sin modificar el origen y normalmente sin afectar a los flags o indicadores de condición. Pueden transferir palabras, fracciones de palabras (bytes, media palabra) o bloques completos de n bytes o palabras.
  • Estas operaciones pueden ser:
    -> registro - registro
    -> registro - memoria
    -> memoria - registro
    -> memoria - memoria
    Nemotécnicos más frecuentes:
    • move: copia el contenido de un registro(o memoria) a otro.
    • store: copia el contenido de un registro a memoria.
    • load: copia el contenido de una posición de memoria a un registro.
    • move block: copia un bloque de datos de una posición de memoria a otra.
    • move multiple: copia del origen en varias posiciones de memoria.
    • exchange: intercambia el contenido de dos operandos.
    • clear: pone a 0 el destino. (todos los bits)
    • set: pone a 1 el destino. (todos los bits)
    • push: introduce un dato en la cabecera de la pila. (indicada por el SP)
    • pop: saca un dato de la cabecera de la pila. (indicada por el SP)

  • Instrucciones aritméticas: Son efectuadas por la ALU y suelen cambiar los flags o indicadores de condición, son todas aquellas instrucciones que permiten realizar operaciones aritméticas como la suma, resta, multiplicacióndivisión, incremento y decremento
    Nemotécnicos más frecuentes:
    • add: Suma.
    • add with carry: Suma con acarreo.
    • subtract: Resta.
    • subtract with borrow: Resta teniendo en cuenta el adeudo anterior.
    • increment: incrementa en 1 un valor.
    • decrement: decrementa en 1 un valor.
    • multiply: multiplica.
    • divide: divide.
    • extend: aumenta el operando de tamaño.
    • negate: cambia de signo.
    • absolute: valor absoluto.
  • Instrucciones de comparación: Suelen preceder a una instrucción de bifurcación condicional y modifican los flags. No hay que pensar que las instrucciones de salto condicional dependen de este repertorio, ya que lo único que hace el salto condicional es consultar los flags y salta si precede, pero no depende de ninguna instrucción de comparación. (de hecho cualquier operación aritmética realizada anteriormente a un salto condicional puede provocar que este "salte").
  • Nemotécnicos más frecuentes:
    • compare: Resta los dos operandos pero no almacena el resultado, solo modifica los flags.
    • test: compara un cierto valor especificado con el 0.

  • Instrucciones lógicas: Realizan operaciones booleanas "bit a bit" entre dos operandos. Como las aritméticas también modifican los flags.
  • Nemotécnicos más frecuentes:
    • and: el "y" lógico.
    • or: el "o inclusivo" lógico.
    • xor: el "o exclusivo" lógico.
    • not: la negación lógica. (complemento a 1, no confundir con el cambio de signo "negate" que es el complemento a 2)
  • Instrucciones de Desplazamiento: Pueden ser aritmético o lógico y pueden incluir o no rotaciones. Pueden ser de izquierda a derecha.
  • Nemotécnicos más frecuentes:
    • shift: desplazamiento aritmético o lógico.
    • rotate: rotación con o sin acarreo.
  • Instrucciones de bits: Comprueban un bit del operando y su valor lo reflejan en el indicador de cero. Pueden poner un bit a 0 o complementarlo.
  • Nemotécnicos más frecuentes:
    • bit test: comprueba un bit.
    • bit clear: comprueba un bit y lo pone a 0.
    • bit set: comprueba un bit y lo pone a 1.
  • Instrucciones de control: Permiten modificar la secuencia normal de ejecución de un programa, puede hacerse por salto condicional relativo o absoluto.
  • Se clasifican en cuatro grupos:
    -> salto incondicional
    -> salto condicional
    -> Llamada a subrutinas
    -> Gestión de las interrupciones
    • saltos: Pueden ser condicionales o incondicionales, se suelen especificar como jump o brantch, y en el caso de los condicionales se suele llamar jcond o bcond donde cond es una o más letras que indican la condición que ha de cumplirse para que el salto se produzca.
    -> Incondicional: salta sin comprobar ninguna condición.
    Nemotécnicos más frecuentes: jump o brantch
    -> Condicional: salta si la condición se cumple.
    Nemotécnicos más frecuentes: jcond o bcond
    • Llamadas a subrutinas: Invoca la ejecución de funciones anteriormente definidas.
    Nemotécnicos más frecuentes: call (llamada) y ret (retorno)
    • Gestión de interrupciones: Se usan para llamar a las rutinas de servicio de interrupción y esto se puede hacer por hardware o bien por software. Necesita una instrucción similar a return para retornar al contexto anterior pero restableciendo el estado de la máquina, para no afectar a la aplicación a la cual se interrumpió (iret).
  • Instrucciones de control y misceláneas:
    Nemotécnicos más frecuentes:
    • halt: Detiene la ejecución del programa hasta que una interrupción arranca otro programa.
    • wait: Sirve para detener la ejecución de un programa hasta que sucede un determinado evento que no es una interrupción (otra condición externa al primer programa).
    • nop: No realiza ninguna operación, sirve para rellenar huecos en un programa o temporizar esperas.
    • enable: Habilita las interrupciones.
    • disable: Des habilita las interrupciones.
    • test and set: Se utiliza para la implementación de la exclusión mutua, esto es, que un procesador no pueda acceder a un determinado recurso que está siendo usado por otro procesador en ese mismo momento.
    Se usan como semáforos, esto es, se declara una variable entera que tendrá el valor 0 si el recurso esta libre y 1 si está siendo utilizado, de manera que si un procesador comprueba y el semáforo está en 1 tendrá que esperar hasta que este cambie a 0. (1 = s.rojo y 0 = s.verde)



http://es.wikipedia.org/wiki/Conjunto_de_instrucciones


                                                                                                              Publicado por:  Wisman Silva

0 comentarios:

Publicar un comentario