Se encarga de realizar las transformaciones de los
datos. Consta de una serie de mdulos que llevan a cabo operaciones lgico-matemticas. Puede realizar un conjunto de operaciones aritmticas bsicas y un conjunto de operaciones lgicas, a travs de lneas de seleccin. 1.2 Unidad Aritmtica y Lgica (ALU) 2 Las cuatro entradas de A se combinan con las de B generando una operacin de salida de cuatro bits en la funcin F. La entrada de seleccin de modo S2 distingue entre las operaciones aritmticas y lgicas. 3
Las entradas de seleccin S0 y S1 determinan la operacin aritmtica o lgica. Con las entradas S0 y S1 se pueden elegir cuatro operaciones aritmticas (con S2 en un estado) y cuatro lgicas (con S2 en otro estado). Los acarreos de entrada y salida tienen sentido nicamente en las operaciones aritmticas. 4 S1
S0 Salida
Funcin Fi
0
0
F=Ai+Bi
OR
0
1
F=Ai Bi
XOR
1
0
F=AiBi
AND
1
1
F=A'i
NOT
Tabla de Funcin Lgica
5 Seleccin de Funcin
Salida N
Funcin
Descripcin
S1
S0
Cin
N
F
0
0
0
0
A
Transferir A
0
0
1
0
A+1
Incrementar A
0
1
0
B
A+B
Suma o agregar B a A
0
1
1
B
A+B+1
Suma con acarreo o agregar B a A ms 1
1
0
0
B
A+B
Agregar el complemento de 1 de B a A
1
0
1
B
A+B+1
Agregar el complemento de 2 de B a A
1
1
0
Todos unos
A-1
Decrementar A
1
1
1
Todos unos
A
Transferir A
Tabla de Funcin Aritmtica 6 1.3 Registros Internos Permiten almacenar resultados parciales con mayor velocidad al ejecutar las instrucciones. Tambin se suele guardar alguna configuracin interna del CPU, ultimas operaciones realizadas, etc. Principales registros: Contador de programa: Almacena la direccin de la siguiente instruccin a ejecutar. Registro de instrucciones: Almacena las instrucciones que se han capturado desde memoria y que se sern ejecutadas. Registro de estado: Informa del resultado de la ltima operacin realizada en la ALU. Registros de propsito general: Son varios registros que sirven como almacenamiento temporal de cualquier operacin. 7 Una instruccin de un lenguaje de alto nivel es una construccin cercana al lenguaje humano pero alejada del lenguaje binario que entiende el microprocesador (cdigo mquina). Para que el microprocesador interprete dicha instruccin debe traducirse a cdigo mquina (unos y ceros), proceso denominado compilacin. Se puede hacer mas agradable la escritura en cdigo mquina asignndole un nemnico a cada instruccin formando el cdigo ensamblador. Lenguajes de Alto Nivel, Ensamblador y Cdigo de Mquina 8 Flujo de Datos: Como se sabe el proceso de ejecucin de una instruccin se divide en ciclo de bsqueda y ciclo de ejecucin de la instruccin. El primero consiste en copiar la instruccin en curso en el IR. Esto se consigue gracias a que la CPU almacena la direccin de la siguiente instruccin a ejecutar en el Contador de programa. La CPU fija esta direccin en el bus de direcciones y genera las seales de lectura. 9 Una vez almacenada la instruccin en el IR, se decodifica y la unidad de control lleva a cabo los pasos necesarios para capturar los operandos necesarios que pueden estar en la misma instruccin, en los registros internos o en la memoria. La manera en que se establece el lugar de almacenamiento de los operandos se conoce como modos de direccionamiento. 10 Ejemplo: Como ejemplo veamos la ejecucin de la instruccin LXI D, TABLA, que carga en el registro D el byte contenido en la direccin apuntada por el registro HL. Primero se accede a la direccin de memoria apuntada por el PC iniciando el ciclo de bsqueda. Dicho dato se carga en IR. Luego se decodifica la instruccin forzando a cargar los registros involucrados en la instruccin. 11 Bsqueda de la Instruccin LXI H 12 Ejecucin de la Instruccin LXI H 13 Repertorio de Instrucciones Lenguajes de alto nivel compilacin lenguaje mquina (se usan Nemnicos por ser muy confuso manejar 1 y 0). Repertorio de instrucciones: Conjunto de instrucciones que puede ejecutar el microprocesador. Debe cumplir dos condiciones: Completitud: Debe poder calcular, en tiempo finito, cualquier tarea computable. Eficacia: Debe permitir una alta velocidad de clculo. 14 Cada instruccin debe tener la siguientes caractersticas generales: Deben realizar una funcin nica y sencilla, simplificando su decodificacin. Una misma instruccin emplea un nmero fijo de operandos. Codificacin de instrucciones debe ser sistemtica. Las instrucciones son autocontenidas e independientes, es decir, contienen toda la informacin necesaria para ejecutarse. Debe expresar: el tipo de operacin, el valor o posicin donde se hallan los operandos, el lugar donde tiene que depositarse el resultado y la ubicacin de la siguiente instruccin. 15 En conclusin, los elementos constitutivos de una instruccin mquina son:
Cdigo de operacin. Referencia a operandos fuente. Referencia al operando resultado.
16 Tipos de Instrucciones Instrucciones de transferencia de datos Mueven datos entre registros y entre registros y memoria. MOV destino, origen Ejemplos: MOV AL,BL MOV [SI + 3C9E],AX MOV BX,23AF 17 Instrucciones aritmticas y lgicas Llevan a cabo operaciones aritmticas (suma, resta), incremento, decremento, lgicas (OR, AND, XOR) ADD operando1, operando2 Ejemplo ADD AH,[BX + SI +3003] XOR BX,AX 18 Instrucciones que modifican la secuencia del programa (Bifurcaciones) Alteran el funcionamiento habitual del Contador de Programa. Se dividen en las siguientes, pudiendo ser cualquiera de ellas incondicionales o condicionales (dependen del estado de los sealizadores). Sin retorno: J UMP direccin Con posibilidad de retorno, para ello guarda la direccin de la siguiente instruccin en la Pila: CALL direccin De retorno: RET 19 Otras Instrucciones De rotacin NOP HALT INT 20 Modos de Direccionamiento Este procedimiento sirve para determinar la ubicacin del operando, que dependiendo de la instruccin puede estar en: La propia instruccin, mediante un dato inmediato. Memoria, mediante la direccin. Registros internos de la CPU. 21 Tipos de direccionamiento Direccionamiento inmediato Forma mas sencilla pues el operando est presente en la instruccin. Ventaja: Una vez cargada la instruccin, no se requiere nuevo acceso a memoria. Desventaja: Rango de valores limitado. 22 Direccionamiento inmediato 23 Direccionamiento directo La instruccin contiene la direccin de memoria del operando Ventaja: Sencillez por que no requiere de clculos previos para conocer la direccin final del dato Desventaja: El cdigo de Direccin (CD) debe tener la suficiente longitud para direccionar todo el mapa de memoria 24 Direccionamiento directo 25 Direccionamiento mediante registro El operando se encuentra almacenado en uno de los registros internos del CPU. Ventaja: No precisa de ciclo de lectura adicional. Desventaja: Rango de valores limitado. 26 Direccionamiento mediante registro 27 Direccionamiento relativo a registro El dato al cual se desea acceder reside en memoria. La direccin efectiva del dato la calcula el procesador sumando una cantidad (desplazamiento) al valor de un registro especial. El desplazamiento puede ser un nmero inmediato o residir en otro registro al cual se le denomina puntero. En la instruccin se debe especificar el desplazamiento y el identificador del registro (aunque a veces viene determinado por la instruccin). 28 Facilita el acceso a un conjunto de posiciones de memoria especificadas a partir de una posicin de referencia. Ventaja: Accede a todo el espacio de direccionamiento. Desventaja: Complejidad. Existen varios tipos en funcin del registro puntero utilizado: Direccionamiento relativo al registro PC. Direccionamiento relativo al registro base: usa como puntero un registro de trabajo o uno dedicado, al cual se le denomina registro base. Direccionamiento relativo a la Pila. 29 Direccionamiento relativo a registro 30 Direccionamiento indexado Direccionamiento similar al relativo a registro base. Diferencia: El registro puntero (o ndice, llamado en este caso) se modifica con frecuencia en la ejecucin de un programa. Se usa para recorrer estructuras de datos (matrices). 31 Direccionamiento indirecto La direccin especificada en la instruccin no indica la posicin del dato, sino la direccin efectiva del dato. Ventaja: Supera la desventaja del direccionamiento directo. Desventaja: La ejecucin de la instruccin requiere de dos referencias a memoria. Usado en aplicaciones que usan datos distanciados en memoria. Se puede combinar con todos los direccionamientos relativos vistos anteriormente. 32 Direccionamiento indirecto