Saltar al contenido principal
LibreTexts Español

4.1: Ejecución de un programa en la CPU de una dirección

  • Page ID
    80666
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Las siguientes instrucciones detallan cómo usar la CPU de una dirección.

    1. Primero descargue el archivo One-AddressCPU.zip del sitio web del autor, http://chuckkann.com. Descomprima el archivo en una ubicación adecuada.
    2. En el directorio raíz de este zip hay un archivo JAR ejecutable llamado OneAddressAssembler.jar. Haga doble clic en este icono, y debería ver la siguiente pantalla.
      Figura 4-3: Ejecución del ensamblador - paso 1

      Screen Shot 2020-07-03 a las 11.52.08 AM.png

    3. Haga clic en el botón Examinar y aparecerá un cuadro de diálogo de archivo. Seleccione el directorio AssemblyPrograms.
      Figura 4-4: Ejecución del ensamblador - paso 2

      Screen Shot 2020-07-03 a las 11.53.46 AM.png

    4. Seleccione el programa AdditionExample.asm. Este es el Programa 2.5 del Capítulo 2, y agrega dos valores de la memoria juntos y almacena el resultado nuevamente en la memoria.
      Figura 4-5: Ejecución del ensamblador - paso 3

      Screen Shot 2020-07-03 a las 11.55.05 AM.png

    5. El programa mostrará la siguiente pantalla, que dice que el ensamblador utilizará como entrada el archivo AdditionExample.asm, y si se completa con éxito producirá dos archivos de salida, AdditionExample.mc (el código de máquina) y AdditionExample.dat (los datos). Haga clic en el botón Ensamblar.
      Figura 4-6: Ejecución del ensamblador - paso 4

      Screen Shot 2020-07-03 a las 11.56.30 AM.png

    6. Debe recibir el siguiente mensaje de que el montaje se completó con éxito. Haga clic en Salir para cerrar el ensamblador.
      Figura 4-7: Ejecución del ensamblador - paso 5

      Screen Shot 2020-07-03 a las 11.58.24 AM.png

    7. Vaya al subdirectorio llamado Logisim, y haga clic en el icono de logisim-generic-2.7.1.jar. Esto abrirá Logisim, y deberías ver la siguiente pantalla. Elija la opción Archivo- >Abrir, seleccione el directorio Logisim y abra el archivo OneAddress CPU.circ.
      Figura 4-8: Ejecución de la CPU - paso 1

      Screen Shot 2020-07-03 a las 12.00.01 PM.png

    8. Ahora debería ver una pantalla con la CPU de una dirección en ella. Establezca el tamaño del zoom (con un círculo en la imagen) en 75% (o 50% si es necesario) para ver el diagrama completo. Por ahora las únicas dos áreas de la CPU se interesan son la Memoria de Texto y la Memoria de Datos, las cuales están rodeadas en el diagrama.
      Figura 4-9 Ejecución de la CPU - paso 2

      Screen Shot 2020-07-03 a las 12.02.52 PM.png

    9. Haga clic con el botón derecho en el cuadro Memoria de texto y seleccione la opción Editar contenido. Deberías ver el siguiente editor para que la memoria aparezca en tu pantalla. Tenga en cuenta que los valores de entrada para esta memoria están en hexadecimal, pero vamos a rellenarlo a partir de los archivos que fueron creados por el ensamblador, y el ensamblador ha escrito los archivos en hexadecimal.
      Figura 4-10: Ejecución de la CPU - paso 2 Screen Shot 2020-07-03 a las 12.05.33 PM.png
    10. Elija la opción Abrir, vaya al directorio AssemblyPrograms y seleccione el archivo AdditionExample.mc.
      Figura 4-11: Ejecución de la CPU - paso 3 Screen Shot 2020-07-03 a las 12.07.06 PM.png
    11. Ahora deberías tener el código de máquina AdditionExample en este bloque de datos, como en el siguiente ejemplo. Seleccione la opción cerrar y el código de máquina ya está disponible en la CPU.
      Figura 4-12: Ejecución de la CPU - paso 4

      Screen Shot 2020-07-03 a las 12.09.18 PM.png

    12. Repita los pasos 9-11 para la memoria de datos usando el archivo AdditionExample.dat. Sus datos y la memoria del programa deben ahora ser inicializados.
    13. Al hacer clic dos veces en el reloj (recuerde que los registros y la memoria solo cambian en un disparador de borde positivo, no un activador de borde negativo), y la instrucción clac se ejecutará. Esto no dará lugar a un cambio porque el $ac ya es cero. Haga clic en el reloj dos veces más, y debería ver que el programa está en la instrucción 2, y el $ac cambia a 5.
      Figura 4-13: Ejecución de la CPU - paso 5

      Screen Shot 2020-07-03 a las 12.11.45 PM.png

    14. Al hacer clic en el reloj 6 veces más se muestra que el programa se ha completado, y se ha calculado el valor de 7 (5+2) y se almacena en la dirección de memoria 0. Las dos últimas instrucciones, clac y beqz stop, simplemente ponen el programa en un bucle infinito al final para que no continúe ejecutándose por el resto de la memoria.

      En Logisim hay varias formas de controlar la simulación usando la opción Simulación. De particular utilidad es la frecuencia de tick (con qué frecuencia ocurre un clic de reloj), tick habilitado (que ejecuta el reloj a la frecuencia de tick) y Logging (que proporciona una manera fácil de revisar sus resultados).


    This page titled 4.1: Ejecución de un programa en la CPU de una dirección is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by Charles W. Kann III via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.