5.2 Funcionamiento interno de una computadora (cómo se ejecutan las instrucciones en lenguaje máquina) Registros de procesador : − contador de programa (PC) = dirección de la instrucción a ejecutar − registro de instrucción (IR) = código de la instrucción a ejecutar Para comenzar a ejecutar un programa, primero habrá que cargarlo en memoria (en posiciones consecutivas) y darle el control (PC Å dirección de la 1ª instrucción) Fundamentos de Informática EUP ULPGC Jose Torres Una vez hecho esto la unidad de control repite sucesivamente 2 fases para cada instrucción: a) captación de la instrucción : copiar la instrucción en el registro de instrucción (IR): IR Å M(PC) y PC Å PC+1 b) ejecución de la instrucción : interpreta el código de operación y genera señales de control para efectuar las (micro)operaciones necesarias Fundamentos de Informática EUP ULPGC Jose Torres Supongamos un computador como el de la figura: Fundamentos de Informática EUP ULPGC Jose Torres Las instrucciones máquina de este computador son de 16 bits : (de mas a menos significativos) − 4 para el código de operación − 4 para el operando destino(op_d) − 4 para el operando fuente 2 (op_f2) − 4 para el operando fuente 1(op_f1) Los operandos siempre estarán en un registro (que puede ser un puerto) que se especifica por su número (dirección) En ensamblador se especifica primero el código de operación y luego los operandos: si son 2 el destino y el fuente 1 y si son 3 el destino, el fuente 2 y el fuente 1(en este orden y separados por comas) Fundamentos de Informática EUP ULPGC Jose Torres El lenguaje de esta máquina tiene, entre otras, las siguientes instrucciones: − IN rx,IPv : entrada de dato: rx Å IPv. Para el teclado el puerto de entrada es 02. El código de operación de esta instrucción es B’0100 − OUT OPv,rx : salida de dato = OPv Å rx. Para la pantalla el puerto de salida es 02. El código de operación de esta instrucción es B’0101 − ADDS rx,ry,rz : rx Å ry + rz. El código de operación de esta instrucción es B’0110 − HALT : finaliza el programa quedando en espera. El código de operación de esta instrucción es B’1111 Fundamentos de Informática EUP ULPGC Jose Torres Programa para sumar dos números que se dan por teclado y dar el resultado por pantalla : En ensamblador : IN r0,IP02 /* introducir dato y cargarlo en r0 */ IN r1,IP02 /* introducir dato y cargarlo en r1 */ ADDS r3,r0,r1 /* sumar datos y cargar resultado en r3 */ OUT OP02,r3 /* sacar resultado por pantalla*/ HALT Supongamos que el programa se carga a partir de la dirección 8. El contenido de los registros (aquellos que cambian su valor) al final de la fase de ejecución y captación de cada una de las instrucciones sería: Fundamentos de Informática EUP ULPGC Jose Torres 1.a) IR=h4002,PC=h0009 1.b) r0=h0032 (valor tecleado) 2.a) IR=h4102,PC=h000A 2.b) r1=h0010 (valor tecleado) 3.a) IR=h6301,PC=h000B 3.b) r3=h0042 4.a) IR=h6302,PC=h000C 4.b) OP02=h0042 5.a) IR=hF000,PC=h000D 5.b) - Fundamentos de Informática EUP ULPGC Jose Torres