1 00:00:00,000 --> 00:00:08,000 Hola, hoy vamos a ver con un ejemplo cómo funciona el simulador cpu. Lo primero que 2 00:00:08,000 --> 00:00:14,760 necesitamos es un archivo de programa. En este archivo, lo que estamos haciendo 3 00:00:16,760 --> 00:00:21,760 es escribir una serie de instrucciones, en este caso sólo una, para ver un poco 4 00:00:22,760 --> 00:00:29,760 los pasos básicos de la ejecución de una instrucción. En el simulador simplemente 5 00:00:29,760 --> 00:00:43,760 cargamos el archivo, suma, vemos lo que ha cargado, aquí en memoria podemos ver en 6 00:00:43,760 --> 00:00:52,760 modo ensamblador las instrucciones que ha cargado, y vemos que tenemos cargada aquí 7 00:00:52,760 --> 00:01:01,760 la instrucción sumar el registro, o lo que hay en el registro R1, el valor del registro 8 00:01:01,760 --> 00:01:11,760 R2, sumarlos y guardarlo en R0. Vamos paso por paso y vamos viendo que hacen cada uno 9 00:01:11,760 --> 00:01:19,760 de los pasos. Primero, vemos que el contador de programa apunta a la dirección 0 de la 10 00:01:19,760 --> 00:01:26,760 primera instrucción del programa. Lo que va a hacer la unidad de control es aumentar 11 00:01:28,760 --> 00:01:34,760 el contador de programa, y para ello simplemente le va a sumar 1 a la dirección que ya había, 12 00:01:34,760 --> 00:01:42,760 y el resultado de esa suma lo va a guardar en el contador de programa. Aquí la unidad 13 00:01:42,760 --> 00:01:50,760 de control envía las señales de control necesarias para que esto ocurra. Vamos al paso 3 y vemos 14 00:01:50,760 --> 00:01:57,760 que lo que ha hecho es cargar la instrucción de memoria en el registro de instrucciones. 15 00:01:58,760 --> 00:02:09,760 Esta instrucción que teníamos, vamos a decimar, era el 40A, que correspondía en el ensamblador 16 00:02:09,760 --> 00:02:15,760 con sumar R1, R2 y guardarlo en R0. Ya la tiene guardada, ahora lo que va a hacer es 17 00:02:15,760 --> 00:02:24,760 enviar señales al decodificador para identificar las operaciones básicas para realizar esta 18 00:02:25,760 --> 00:02:34,760 instrucción. Tendrá que leer cada uno de los registros, cargar el valor de esos registros 19 00:02:34,760 --> 00:02:43,760 en las entradas de la ALU, generar el resultado y guardarlo en R0. Vamos ahora al paso 4, 20 00:02:45,760 --> 00:02:51,760 vamos a cambiar primero los valores de los registros, podemos sumar 0 y 0, no nos va 21 00:02:51,760 --> 00:02:57,760 a decir mucho, entonces vamos a poner dos valores, por ejemplo en R1 ponemos un 4 y 22 00:02:57,760 --> 00:03:10,760 en R2 ponemos un 2. Y vemos que va a cargar primero el 4 en el operando 1, el 2 lo va 23 00:03:10,760 --> 00:03:22,760 a guardar o lo va a cargar en el operando 2, genera la ALU la suma, para ello la unidad 24 00:03:22,760 --> 00:03:29,760 de control le envía la señal de control y una vez que tenemos el resultado lo guardará 25 00:03:29,760 --> 00:03:39,760 en el registro R0. En el paso 6 ya queda la instrucción completa. Ahora lo que hará 26 00:03:39,760 --> 00:03:47,760 como siempre es aumentar el contador de programa para que apunte a la siguiente instrucción 27 00:03:47,760 --> 00:03:55,760 que ya hemos visto que no tenemos más. Estos serían los pasos fundamentales básicos para 28 00:03:55,760 --> 00:04:00,760 ejecutar una instrucción a nivel de microprocesador.