Unidad V




  
TIPOS DE INSTRUCCIONES 


     Instrucción 

     Es el conjunto de datos insertados en una secuencia estructurada o específica que el procesador interpreta y ejecuta.
        Los tipos de instrucción permitidos están definidos y determinados dentro de cada plataforma en el conjunto de instrucciones(en inglés ISA, instruction set architecture), que también determina los registros de origen y destino de la CPU, y en ocasiones un dato inmediato (aquellos que son especificados explícitamente en la instrucción).
     Estas instrucciones del computador son las que determinan el funcionamiento de la CPU que las ejecuta. La CPU puede realizar una diversidad de funciones, que son el reflejo de la variedad de las instrucciones definidas para dicha CPU. El programador tiene un repertorio de instrucciones como medio para controlar la CPU. 



 Tipo de instrucciones

·   Instrucciones de transferencia de datos: en este tipo de instrucciones, se transfieren datos desde una localización a otra. Los pasos que se siguen para realizarlo son:
1.   Determinación de las direcciones de origen y destino de memoria.
2.   Realización de la transformación de memoria virtual a memoria real.
3.   Comprobación de la caché.
4.   Inicio del proceso de lectura/escritura en la memoria. 
·   Instrucciones aritméticas: pueden implicar transferencia de datos antes y/o después. Realizan operaciones aritméticas de las que se encarga la ALU. Se pueden clasificar en de 1 operando (valor absoluto, negación) y 2 operandos (suma, resta). 
·        Instrucciones lógicas: al igual que las aritméticas, la ALU se encarga de realizar estas operaciones, que en este caso son de tipo lógico.
. Instrucciones de saltos: transmiten el control de la secuencia normal de una instrucción a la dirección de la instrucción de salto dada por el contador de programa.
·   Instrucciones de conversión: similares a las aritméticas y lógicas. Pueden implicar lógica especial para realizar la conversión. 
· Instrucciones de transferencia de control: actualizan el contador de programa (PC). Administran las llamadas/retornos a las subrutinas, el paso de parámetros y el enlazado. 
·  Instrucciones de E/S (entrada/salida): administran los comandos de entrada/salida. Si hay un mapa de memoria de entrada/salida, determina la dirección de este mapa.


      FORMATO DE LAS INSTRUCCIONES


     El formato determinarán la longitud en bits de las instrucciones y campos que codifican el valor de los factores citados. En general, una instrucción se compone de los siguentes campos:


  • Código de operaciones (CO)
  • Operandos fuentes (OP1,OP2...)
  • Operando destino o Resultado (OPd)
  • Instrucción siguiente (IS)

     Sin embargo, el formato de la instrucciones también se conoce como un conjunto 
de especificaciones que indican como debe ser 
interpretado el patrón de bits de una 
instrucción de máquina para logra su ejecución
dentro del computador.

     El formato de la instrucción nos indica cual es 
el código de operación y cuales los operandos 
que la instrucción especifica, tanto explícita
como implícitamente.          
 
Criterios para el diseño de los formatos          

     En algunas máquinas todas las instrucciones tienen la 
misma longitud; en otras hay instrucciones con distintas 
longitudes. La longitud de las instrucciones puede ser 
menor, igual o mayor que el tamaño de la palabra. Exigir 
que todas las instrucciones posean la misma longitud hace 
más sencillo su decodificación pero puede desperdiciarse 
espacio.
      En el momento que se diseña una nueva computadora se 
deben escoger los formatos de las instrucciones y para ello 
se deben tomar en cuenta varios factores.

      
      Un criterio de diseño importante es el relativo al 
tamaño de las instrucciones. Un programa 
conformado por n instrucciones de 16 bits ocupa 
menos espacio de memoria que n instrucciones de 
32 bits.
 

   Si se minimiza mucho el tamaño de las 
puede hacer que el proceso de 
decodificación y sobre posición de instrucciones 
sea más complicado.

MODOS DE DIRECCIONAMIENTO     Una instrucción de 8088/8086 no solo contienen información sobre la operación particular a realizar, sino que también incluye las especificaciones para el tipo de operando a manipular, así como también la posición de estos operandos. El microprocesador determina el modo de direccionamiento que es aludido por la sintaxis de la instrucción. Son siete los modos mas importantes de direccionamiento.


  • ·        Direccionamiento inmediato 
  • ·        Direccionamiento de registros
  • ·        Direccionamiento directo
  • ·        Direccionamiento indirecto de registros
  • ·        Direccionamiento relativo a base
  • ·        Direccionamiento indexado directo
  • ·        Direccionamiento indexado a base
 
DIRECCIONAMIENTO INMEDIATO
     El operando es una constante situada detrás del código de la instrucción. Sin embargo, como registro destino no se puede indicar uno de segmento (habrá que utilizar uno de datos como paso intermedio).
                                  ADD   AX,0fffh 
 El número hexadecimal 0fffh es la constante numérica que en el direccionamiento inmediato se le sumará al registro AX.  
 Al trabajar con ensambladores, se pueden definir símbolos constantes ( no variables) y es más intuitivo:
  
          Dato   EQU   0fffh;                 símbolo constante                     MOV   AX, Dato
 Si se referencia a la dirección de memoria de una variable de la siguiente forma, también se trata de un caso de direccionamiento inmediato:         Dato     DW    0fffh;      ahora es una variable                    MOV    AX,OFFSET dato ;   AX = "dirección de memoria" de dato  Porque hay que tener en cuenta que cuando traduzcamos a números el símbolo podría quedar: 
 17F3:0A11   DW    FFF                      MOV   AX,0A11  
DIRECCIONAMIENTO DE REGISTROS
 Los operandos, necesariamente de igual tamaño, están contenidos en los registros indicados en la instrucción: 
                                 MOV   DX,AX                                 MOV   AH,AL Este puede ser un valor de 8 o 16 bits, el microprocesador interpreta la longitud del operando por el nombre del registro. DIRECCIONAMIENTO DIRECTO
 El operando está situado en la dirección indicada en la instrucción, relativa al segmento que se trate: 
                  MOV   AX,[57D1h]
                 MOV   AX,ES:[429Ch]

  Esta sintaxis (quitando la 'h' de hexadecimal) sería la que admite el programa DEBUG (realmente habría que poner, en el segundo caso, ES: en una línea y el MOV en otra). Al trabajar con ensambladores, las variables en memoria se pueden referenciar con etiquetas simbólicas:                  MOV   AX,dato                 MOV   AX,ES:dato          dato    DW    1234h       ; variable del programa 
     En el primer ejemplo se transfiere a AX el valor contenido en la dirección apuntada por la etiqueta dato sobre el segmento de datos (DS) que se asume por defecto; en el segundo ejemplo se indica de forma explícita el segmento tratándose del segmento ES. La dirección efectiva se calcula de la forma ya vista con anterioridad: Registro de 8segmento * 16 + desplazamiento_de_dato (este desplazamiento depende de la posición al ensamblar el programa). 
DIRECCIONAMIENTO INDIRECTO DE REGISTROS:
     El operando se encuentra en una dirección señalada por un registro de segmento*16 más un registro base (BX/BP) o índice (SI/DI). (Nota: BP actúa por defecto con SS).
 

        MOV   AX,[BP]           ; AX = [SS*16+BP]        MOV   ES:[DI],AX        ; [ES*16+DI] = AX  RELATIVO DE BASE
      La dirección de un operando se obtiene de la suma del numero y el contenido de un registro base (el BX o el BP), relativo al segmento seleccionado. El modo relativo a base es mas usado frecuentemente para acceder a estructuras de datos complejas.



 
INDIRECTO INDEXADO DIRECTO
      El operando se encuentra en una dirección determinada por la suma de un registro de segmento*16, un registro de índice, SI o DI y un desplazamiento de 8 ó 16 bits. Ejemplos:         MOV   AX,[DI+DESP]      ó      MOV   AX,desp[DI]        ADD   [SI+DESP],BX      ó      ADD   desp[SI],BX 

INDIRECTO CON BASE E ÍNDICE O INDEXADO A BASE:        El operando se encuentra en una dirección especificada por la suma de un registro de segmento*16, uno de base, uno de índice y opcionalmente un desplazamiento de 8 ó 16 bits:

         MOV   AX,ES:[BX+DI+DESP]      ó      MOV   AX,ES:desp[BX][DI]        MOV   CS:[BX+SI+DESP],CX      ó      MOV   CS:desp[BX][SI],CX 





FUENTES

Brey, Barry B.
The Intel microprocessors: 8086/8088, 80186/80188, 80286, 80386, 
80486, Pentium, Pentium Pro Processor, Pentium II, Pentium III and Pentium.
IV:Architecture, programming, and interfacing.
6th ed. Upper Saddle River, N.J.: Prentice Hall, 2003
 Stallings, William

Computer organization and architecture: designing for performance
6th ed. Upper Saddle River, NJ: Pearson Education, 2003





1 comentario:

  1. Se puede decir que los modos de direccionamiento de un procesador son las diferentes formas de transformación del campo de operando de la instrucción en la dirección del operando.También puedo acotar que el direccionamiento denominado relativo toma como valor de referencia elregistro contador de programa.

    ResponderEliminar