1. Clasificación de las instrucciones de máquina
1.1. TIPOS DE INSTRUCCIONES
1.1.1. TRANSFERENCIA DE DATOS
1.1.1.1. Movimiento (move), alteración de datos (clear, inc, dec), rotación bits (shift, rotate)
1.1.2. ARITMETICAS
1.1.2.1. Add, Sub, Mult, Div
1.1.3. LOGICAS
1.1.3.1. And, Or, Xor
1.1.4. BOOLEANAS
1.1.4.1. Set bit, Clear bit, jump if bit set, jump if bit clear
1.1.5. DE SALTO
1.1.5.1. Control (Jump, Conditional jumps), relacionada con subrutinas (Push, Pull), Relacionadas con interrupción (Retorno de int.)
2. Direccionamiento
2.1. Una instrucción consiste en un código de operación (opcode) generalmente acompañado con información adicional como la dirección de los operandos, el destino de los resultados y la dirección de la siguiente. El tema general de especificar dónde están los operandos (es decir, sus direcciones) se llama direccionamiento. Considere una instrucción ADD que requiere la especificación de tres operandos: dos fuentes y un destino. De alguna manera, la instrucción ADD debe indicar dónde están los operandos y dónde debe poner se el resultado. Si las direcciones de memoria tienen 32 bits, la especificación de esta instrucción requiere direcciones de 32 bits además del código de operación. Las direcciones ocupan muchos más bits que el código de operación.
3. Modos dedireccionamiento
3.1. Cada instrucción debe contener la información que necesita el CPU para su ejecución: •Código de operación •Referencia a operandos fuente (dirección) •Referencia a operando resultado (dirección) •Referencia a la siguiente instrucción.
3.2. El direccionamiento toma en cuenta dos cosas: Cómo se especifica la dirección de un operando o referencia. Cómo se organizan los bits de una instrucción para definir las direcciones de los operandos y la operación que realiza dicha instrucción.
3.3. Las técnicas de direccionamiento más comunes son las siguientes:
3.3.1. Modo Inmediato El operando está presente en la propia instrucción. Es decir el campo dirección en la instrucción contiene el operando.
3.3.2. Modo Inmediato El modo inmediato representado con el símbolo #
3.3.3. Modo Directo El campo de dirección contiene la dirección efectiva (EA) del operando. Características: •La instrucción contiene la EA del operando •Un acceso adicional es requerido para obtener el operando •El rango de direcciones está limitado por el ancho del campo que contiene la dirección del operando. •La dirección es una constante a tiempo de ejecución pero el operando en sí puede variar en tiempo de ejecución.
3.3.4. Modo Indirecto El modo directo presenta el problema de que la longitud del campo de direcciones es normalmente menor que la longitud de una palabra, limitando de esta manera el rango de direcciones. Una solución es hacer que el campo de direcciones referencia la dirección de una palabra de memoria que contiene la dirección completa del operando. A esto se le conoce como modo indirecto. Ventajas: Permite acceder el espacio de direcciones. No hay limitación como en modo directo. Desventaja: La ejecución de la instrucción requiere de dos referencias a memoria para capturar el operando: una para captar su dirección y otra para obtener su valor.
3.3.5. Modo Registro Modo similar al directo. La única diferencia es que el campo de dirección referencia un registro en lugar de una dirección de memoria principal. Ventajas: Sólo es necesario un campo pequeño de direcciones en la instrucción y no se requieren referencias a memoria. El tiempo de acceso a un registro interno al CPU es mucho menor que el tiempo necesario para acceder memoria principal. Desventaja: El espacio de direcciones está muy limitado dado al pequeño número de registros que poseen las arquitecturas.
3.3.6. Modo con Desplazamiento Este modo combina las posibilidades de los modos directo e indirecto con registro. Requiere que las instrucciones tengan dos campos de dirección donde al menos uno de ellos es explícito. El valor contenido en uno de los campos de dirección se utiliza directamente. El otro campo de dirección o referencia implícita definida por el código de operación se refiere a un registro cuyo contenido se suma al primer campo de dirección para generar la dirección efectiva del operando.
3.3.7. Modo de Pila La pila es una matriz lineal de posiciones. A veces denominada lista de apilamiento o cola LIFO. La pila es un bloque de posiciones reservado en memoria. Los elementos se añaden en la cabecera de manera que, en cualquier instante, el bloque está parcialmente lleno. La pila tiene asociado un puntero (SP) que hace referencia a la cabecera o tope de la pila. Dicho puntero se usa como puntero de direccionamiento. Tanto la cabecera como el puntero pueden residir en registros de procesador.
4. Organización de instrucción de máquina
4.1. Cada instrucción requiere la información que necesita el CPU para su ejecución. El formato de las instrucción es un conjunto de especificaciones que indican como debe ser interpretado el patrón de bits de una instrucción de máquina para lograr 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.
5. Código de Operación (OpCode)
5.1. Es el primer campo de cada instrucción, esta indica la instrucción a realizar. Por ejemplo, ADD (sumar). Muchas instrucciones tienen un campo adicional que especifica el operando. Por ejemplo, las instrucciones que accedan a una variable local necesitan un campo para indicar cual variable. En los formatos de instrucciones comunes puede haber cero, una, dos o tres direcciones presentes.
5.2. CÓDIGO DE OPERACIONES
5.3. COD. OP
5.3.1. DIRECCION
5.4. COD. OP
5.4.1. DIRECCION 1
5.4.1.1. DIRECCION 2
5.5. COD. OP
5.5.1. DRI 1
5.5.1.1. DRI 2
5.5.1.1.1. DRI 3