You are on page 1of 3

UNIDAD DE CONTROL

La función principal de la unidad de control de la UCP es dirigir la secuencia de pasos de modo que la
computadora lleve a cabo un ciclo completo de ejecución de una instrucción, y hacer esto con todas las
instrucciones de que conste el programa. Los pasos para ejecutar una instrucción cualquiera son los siguientes:

I. Ir a la memoria y extraer el código de la siguiente instrucción (que estará en la siguiente celda de memoria
por leer). Este paso se llama ciclo de fetch en la literatura computacional (to fetch significa traer, ir por).

II. Decodificar la instrucción recién leída (determinar de que instrucción se trata).

III. Ejecutar la instrucción.

IV. Prepararse para leer la siguiente casilla de memoria (que contendrá la siguiente instrucción), y volver al
paso 1 para continuar.

La unidad de control ejecutara varias veces este ciclo de cuatro instrucciones alambradas a una enorme
velocidad.

Se llama así a estas instrucciones porque no residen en memoria, ni fueron escritas por ningún programador,
sino que la maquina las ejecuta directamente por medios electrónicos, y lo hará mientras este funcionando
(mientras este encendida) en una computadora es a razón de cientos de miles (o incluso millones) de veces por
segundo.

Se ha definido ya el modelo de von Neumann. Ahora se pondrá a funcionar sobre nuestro pequeño programa
de ejemplo (que ya esta cargado en la memoria).

PASOS PARA LA EJECUCION DE UN PROGRAMA

Se describirán todos los pasos con detalle por única vez, para que el lector pueda estudiarlos con detenimiento
hasta estar seguro de haberlos comprendido.

• En virtud de que el programa comienza a partir de la celda numero 10, se debe indicar a la unidad de
control que esa celda contiene la primera instrucción. Esto se hace por medio de un apuntador (que forma
parte de los circuitos electrónicos de la unidad de control) que recibe el nombre de contador de programa
(CP). Así pues, el primer paso debe consistir en apuntar a la casilla 10, y esto se representara por CP−10.

(obsérvese que este paso es externo, esto es, no forma parte del programa, sino que se tiene que hacer desde
afuera para iniciara la operación de la computadora)

• La unidad de control ejecutara el paso I e ira a la casilla 10 para leer su contenido, que es21.
• La unidad de control ejecuta el paso II, con lo que decodifica el 21 recién leído y determina que se trata de
una operación CARGA_Ac. En este momento sucede algo de primordial importancia: como la instrucción
21 tiene una longitud de dos celdas cuyo valor se cargara en el acumulador (que en este caso de casualidad
también es 21), la maquina deberá ajustar el valor del contador de programa para que este apunte a celda
siguiente.
• La unidad de control ejecuta el paso III, con la que efectivamente efectuara la operación de carga. Por esto,
la computadora debe ir a la celda 11 y extraer su contenido, pero ahora ya no lo considera como instrucción
si no como dirección por la cual ira a la celda 21 para extraer el valor que contenga.

1
En este momento hay que tener cuidado para que no haya confusión: el primer 21 (el de la celda 10) es la
instrucción CARGA_Ac; el segundo 21

( El de la celda 11) es la dirección de la celda de memoria cuyo valor se desea cargar en el acumulador. Esta
instrucción completa 21, 21, puede leerse de la siguiente manera: cargar el acumulador con el valor que este
contenido en la celda cuya dirección aparece a la derecha de donde sé esta leyendo ahora. Conviene tener muy
en claro antes de seguir adelante.

• La unidad de control ejecuta el paso IV, para luego ejecutar todo el ciclo de nuevo. Obsérvese que es un
ciclo ilimitado, que solo terminara cuando se ejecute la instrucción ALTO. En este caso, el contador de
programa se hará igual a 12; esto es, apuntara a la celda numero 12.
• Se ejecuta (por segunda vez) el paso I de la unidad de control. Como CP=12, se leerá esa celda, que
contiene un 57.
• Se decodifica esa instrucción, que es SUMA_Ac, por lo que la CP se prepara para apuntar a la siguiente
celda. (Recuérdese que la instrucción SUMA_Ac ocupa 2 celdas: una para el código de operación y otra
para la dirección de la celda cuyo contenido se sumara al acumulador.)
• Se ejecuta la instrucción 57, con lo que se añade el contenido de la celda 22 al acumulador(la dirección 22
reside en la celda 13, es a la que actualmente apunta el contador de un programa como resultado del paso
anterior). Ahora el acumulador contendrá un 12.
• La CP se actualiza para apuntar a la celda 14, en la cual (y no es casualidad) reside el código de la siguiente
instrucción.
• Se lee la celda 14 y se extrae su código: 96.
• Se decodifica la instrucción, que es GUARDA_Ac, por lo que el CP sea lista para apuntar a la siguiente
celda, que contendrá la dirección de la celda en donde se guardara el contenido del acumulador.
• Al ejecutarse esta instrucción se deposita el valor del acumulador (12) en la celda numero 23, o sea, se deja
el resultado de la suma en la celda que de antemano se había separado para tal fin.
• La unidad de control regresa al paso I no sin antes actualizar el contador de programas para que apunte a la
celda 16 es donde reside la siguiente instrucción.
• Se lee la celda 16 y se extrae su contenido: 70.
• Se decodifica esta instrucción, que es ALTO. El CP no se prepara para extraer un dato de la siguiente celda
porque la instrucción 70 ocupa una sola celda.
• Se ejecuta esta instrucción, lo que detiene a la unidad de control y a la maquina. De esta manera se rompe el
ciclo de los 4 pasos.

De estos 16 pasos sobre sale lo siguiente:

• Dado el contenido de una celda, la computadora no puede distinguir si se trata de un instrucción o de


un dato o dirección.
• Debido a lo anterior, es responsabilidad de quien maneja la maquina indicarle cual es la celda donde
comienza el programa (esto se hizo por medio del paso 0, que se describió externo al programa).
• Una vez que el contador de un programa apunta a la celda que contiene la primera instrucción, el resto
del proceso ocurre de manera automática e invisible para el programador. Esto se debe a los ajustes
internos que hace al CP (en el paso II) que a su vez, dependen de la longitud de la instrucción que sé
esta ejecutando.

COMO EJECUTAR UN PROGRAMA

Sí el archivo. EXE esta en la unidad por omisión, podría usar el DOS para cargarlo para su ejecución
introduciendo:

P05ASM1.EXE o PO5ASM1

2
Si omite la extensión del archivo el DOS supone que es. EXE (o .COM). Sin embargo, ya que este programa
no produce resultados visibles, se sugiere que lo ejecute con DEBUG y avance paso por paso en su ejecución
en comandos de rastreo. (T. Teclee lo siguiente incluyendo la extensión. EXE:

DEBUG D:P05ASM1.EXE

DEBUG carga el modelo del programa.EXE. Y MUESTRA SU INDICACION (un guión). Para ver el
segmento de la pila teclee:

D SS:0.

La pila contiene solo ceros ya que fue la forma de visualizarla. Para ver el segmento de datos teclee:

D DS:0.

La operación muestra tres elementos de datos.

FA 00 7D 00 00 00, con los bytes de cada palabra en orden inverso para ver el segmento de código, teclee:

D CS:0.

Compare el código de maquina mostrando con el segmento de código del listado del ensamblado:

D8−−−−8ED8A10000...

En este caso el listado del ensamblador no muestra de manera precisa el código de maquina ya que el
ensamblador no conoce la operación del operando de la primera instrucción. Ahora puede determinar esta
instrucción examinando el código desplegado.

Teclee R para ver los registros y rastree la ejecución del programa con sucesivos comandos T.

Amedida que avance el programa, fíjese en el contenido de los registros. Cuando llegue a la ultima
instrucción, puede utilizar L para volver a cargar y correr el programa o Q para salir de la sesión con DEBUG.

You might also like