Estructuras - U5 - Lenguaje Ensamblador
Estructuras - U5 - Lenguaje Ensamblador
Estructuras - U5 - Lenguaje Ensamblador
Funcionamiento de la CPU
Índice temático Unidad Nº 5 – Funcionamiento de la CPU
Tipos de Instrucciones
Funcionamiento del Procesamiento de una instrucción
microprocesador Ejecución de un programa
5.1. Introducción
Se ha visto en la Unidad 1 que una computadora está compuesta
básicamente por una Memoria Principal, una Unidad Central de Proceso y
Periféricos. En la Unidad 3 se describió la Memoria Principal y su relación
con la Unidad Central de Proceso. Esta Unidad se ocupa en detalle de la
Unidad Central de Proceso (CPU).
Pero, ¿cómo está constituida físicamente una CPU? Físicamente, la
CPU es un dispositivo electrónico que controla y dirige el funcionamiento de
todo el sistema y recibe el nombre de microprocesador.
El microprocesador es el corazón de cualquier computadora normal,
ya sea una PC, un servidor o una Laptop. Comercialmente hablando, el
microprocesador puede ser un Pentium 4, un Athlon, un Celeron, un Duron
u otro de las muchas otras marcas y tipos de microprocesadores existentes,
pero todos ellos hacen aproximadamente las mismas cosas en
aproximadamente la misma forma.
165
¿Qué es un chip?
Un chip o circuito integrado, es una pastilla de material semiconductor (generalmente silicio o germanio)
pequeña y delgada que contiene circuitos electrónicos con componentes miniaturizados como diodos,
transistores, resistencias, y condensadores. La pastilla se protege con un encapsulado de plástico o
cerámica que posee los conductores metálicos necesarios para la conectar la pastilla en una placa de
circuito impreso.
Existen varios tipos de chips. Entre los más avanzados se encuentran los microprocesadores. Otro
ejemplo de chips son las memorias digitales.
Un chip puede medir aproximadamente 2,5 cm de largo y contener decenas de millones de transistores.
Un microprocesador actual contiene decenas de millones de transistores grabados sobre un chip de
unos pocos milímetros cuadrados.
166
En 1974 Intel lanzó el 8080. Este microprocesador de 8 bits se
convirtió en la CPU de la "home computer" o computadora hogareña
(anterior a la PC).
El primer microprocesador que revolucionó el mercado fue el Intel
8088, introducido en 1979 e incorporado a la IBM PC (que recién apareció
alrededor de 1982).
El mercado de la PC fue pasando desde el 8088 al 80286, al 80386, al
80486, al Pentium, al Pentium II, al Pentium III, al Pentium 4 (Ver Tabla
5.1). Todos estos microprocesadores fueron hechos por Intel y todos ellos
son mejoras sobre el diseño básico del 8088. El Pentium 4 puede ejecutar
cualquier segmento de código que corra sobre el original 8088, pero lo hace
aproximadamente 5000 veces más rápido.
Velocidad de
Nombre Fecha Transistores Micrones Ancho de datos MIPS
reloj
167
instrucción. En muchos casos, el bus de datos externo es del mismo
ancho que la UAL, pero no siempre. El 8088 tiene una UAL de 16 bits y
un bus de datos de 8 bits, mientras que los modernos Pentium traen
datos de 64 bits de una sola vez para sus UAL de 32 bits.
MIPS: o "millones de instrucciones por segundo" es una medida grosera
del rendimiento de la CPU. Las CPU modernas pueden hacer muchas
cosas diferentes, por lo que la velocidad expresada en MIPS pierde
mucho significado, pero describe en sentido general, la potencia relativa
de procesamiento que posee una CPU.
En la Tabla 5.1 se puede ver que, en general, existe una relación entre
la velocidad del reloj y los MIPS. También se puede ver una relación entre el
número de transistores y MIPS. Por ejemplo, el 8088 trabaja a 5 MHz pero
solamente ejecuta 0,33 MIPS (alrededor de 1 instrucción cada 15 ciclos de
reloj). Los modernos procesadores, pueden procesar a una velocidad de 2
instrucciones por cada ciclo de reloj. Esta mejora está directamente
relacionada al número de transistores en el chip.
Velocidad Caché
Microprocesador Fecha Velocidad de reloj
del bus L2 L3
Pentium 1993 60 MHz 50 MHz 256 KB -
Pentium II 1997 233 MHz 66 MHz 256 KB -
Pentium III 1999 450 MHz 100 MHz 256 KB -
Pentium 4 2000 1,3 GHz a 2,8 GHz 533 MHz 1 MB -
(1)
P4 – HT 2001 2,4 GHz a 3,6 GHz 800 MHz 1 MB -
(2)
P4 HT – EE 2001 3,2 GHz a 3,4 GHz 800 MHz 512 KB 2 MB
P4 Dual 2,4 GHz a 3,6 GHz 800 MHz 1 MB -
Core i3 2,4 GHz a 3,4 GHz 1600 MHz 256 KB 4 MB
Core i5 1,06 GHz a 3,46 GHz 1600 MHz 1 MB
(3)
Core i7 3,2 GHz a 3,46 GHz 6,4 GT/s 6x256 KB 15 MB
(1) Tecnología HT (Hyper Threading) : Permite ejecutar 2 instrucciones al mismo tiempo, a través de software.
(2) Tecnología HT- Extreme Edition
(3) GT/s Giga Transfer por segundo. Nomenclatura aplicada a procesadores multi núcleo.
Tabla 5.2 Microprocesadores Intel.
168
Velocidad del Caché
Microprocesador Fecha Velocidad de reloj
bus L1 L2
K-5 1994 60 MHz
K-6 1998 300 MHz
K6-2 1999 550 MHz
Athlon 2000 1 GHz a 1,4 GHz 266 MHz 128 KB 256 KB
Athlon XP 2001 1,8 GHz a 2,2 GHz 400 MHz 128 KB 512 KB
Athlon 64 2003 2,2 GHz 2000 MHz 128 KB 1 MB
Athlon 64 FX 2003 2,2 GHz 1,6 GHz 128 KB 1 MB
Athlon 64 X2 2005 2,2 GHz 1,6 GHz 512 KB 1 MB
Velocidad Caché
Microprocesador Fecha Velocidad de reloj
del bus L1 L2 L3
Intel Celeron 1999 1,6 GHz a 2,8 GHz 400 MHz - 128 KB -
AMD Duron 1999 800 MHz a 1,3 GHz 200 MHz 128 KB -
Intel Celeron D 2000 2,4 GHz a 2,93 GHz 533 MHz - 256 KB -
AMD Sempron 2000 1,5 GHz a 2 GHz 333 MHz 128 KB 256 KB
169
5.3. Arquitectura de la CPU
La CPU está constituida fundamentalmente por la Unidad de Control y
la UAL, pero además debe contar con elementos de memoria para el
almacenamiento temporal de los datos tratados por la CPU. Esa memoria
está constituida por Registros.
La conexión entre los distintos componentes del computador se realiza
mediante buses. Ya se ha definido un bus como un conjunto de caminos
conductores en paralelo, que puede ser compartido por varios dispositivos,
a los fines de la comunicación entre los mismos. Cuando los datos deben
ser transmitidos de un componente a otro, viaja por el bus desde el
componente fuente al de destino, almacenándose temporalmente en
registros.
170
memoria si se va a acceder para realizar una operación de lectura o
de escritura.
Cuando un dato está preparado para ser transmitido, primero se envía
la dirección de destino por el bus de direcciones, a continuación se envía el
dato por el bus de datos, y todas estas acciones están controladas por
señales que se envían por el bus de control.
Figura 5.3 (a) Máquina de tres direcciones. (b) Máquina de una dirección
171
En el presente curso se tomará como base una máquina de una
dirección. En este caso la UAL posee un registro particular, denominado
Acumulador. Para realizar una operación, se utiliza el Acumulador para
recibir el primer operando y luego de realizada la operación, el Acumulador
almacena el resultado. Esta característica permite instrucciones aritméticas
de una sola dirección: la del segundo operando.
En la Figura 5.3b, el Acumulador sustituye a los registros R1 y R3 de
la Figura 5.3a. El segundo operando puede almacenarse en el registro de
palabra asociado a la memoria.
Entonces, en una máquina de una dirección, la operación de suma
necesita tres instrucciones, en la siguiente secuencia:
Cargar el primer operando en el Acumulador;
Sumar el segundo operando con el contenido del Acumulador. Al
finalizar la operación, el resultado queda almacenado en el Acumulador.
Almacenar en memoria el contenido del Acumulador, que contiene el
resultado de la operación realizada.
172
Como se verá más adelante, el Registro de Estado refleja en cada uno
de sus bits distintas características del valor almacenado en el Acumulador,
y es consultado por la Unidad de Control para tomar decisiones cuando
ejecuta instrucciones de ruptura de secuencia.
173
5.3.3. Registros de la CPU
Para poder realizar la ejecución de un programa, es obvio que la CPU
necesita almacenar instrucciones y datos temporalmente mientras una
instrucción está siendo ejecutada. En otras palabras, la CPU necesita una
pequeña memoria. Estos elementos de memoria interna se denominan
registros.
Los registros almacenan datos que la CPU necesita constantemente y
por tal razón se encuentran implementados con la tecnología de memoria
interna de mayor velocidad (SRAM).
Por ejemplo, la CPU debe “recordar” la instrucción que se encuentra
en ejecución, para ello cuenta con un registro especial: el Registro de
Instrucción. Asimismo, para continuar la ejecución del programa cada vez
que finaliza una instrucción, la CPU debe conservar la posición de la
instrucción siguiente; para esta tarea recurre al registro Contador de
Programa. La Figura 5.5 muestra estos dos registros y como veremos a
continuación, la CPU cuenta con otros registros más para su
funcionamiento.
La Figura 5.6 muestra un esquema de la CPU detallando los
principales registros que posee. Cada uno de estos registros se utiliza para
tareas específicas.
174
Clasificación de los registros
a) Según la Unidad con la que se relacionan.
Se puede agrupar a los registros de acuerdo a la Unidad de la CPU con
la que están relacionados o asociados para trabajar. Esta clasificación será
útil al momento de hacer el seguimiento de las instrucciones dentro de la
CPU. Según este criterio, se puede hablar de:
Registros asociados a la Memoria Principal:
o Registro de Palabra o registro de datos: Este registro es el
encargado de almacenar la información (datos o instrucciones)
que se intercambian con la Memoria Principal a través del bus
de datos. Durante una operación de lectura contiene la
información que proviene de la Memoria; si es una instrucción, la
pasa al registro de instrucciones; si es un dato el intercambio se
produce con el Acumulador, la UAL, o algún registro individual.
Durante una operación de escritura contiene la información que
proviene del Acumulador. Este intercambio dentro de la CPU se
realiza a través del bus interno.
o Registro de Direcciones: Este registro almacena las direcciones de
las celdas de memoria que van a ser accedidas para realizar una
lectura/escritura. Está conectado directamente al bus de
direcciones.
Registros asociados a la Unidad de Control:
o Registro de Instrucciones: Este registro sirve para contener la
instrucción que es captada por la CPU durante una operación de
lectura.
o Contador de Programa: El contador de programa contiene una
dirección de instrucción. Típicamente, la Unidad Control actualiza
el CP después de cada captación de instrucción de manera que
siempre apunta a la siguiente instrucción a ejecutar. Una
instrucción de bifurcación o salto también modificará el contenido
del CP.
o Puntero a Pila: El registro puntero a pila permite almacenar la
dirección de acceso a la memoria pila. Se verá su funcionamiento
al tratar las instrucciones de ruptura de secuencia.
Registros asociados a la Unidad Aritmético-lógica:
o Acumulador: La función de este registro ya se ha visto al describir
la UAL de una sola dirección. Se usa para almacenar el primer
operando de una operación aritmética y finalmente se carga con
el resultado de la operación llevada a cabo en la UAL.
o Registro de Estado: Este registro contiene códigos de condición
además de otra información de estado. Los códigos de condición
(también llamados indicadores o flags) son bits cuyos valores son
establecidos por el hardware de la CPU de acuerdo al resultado de
la última operación realizada por la UAL. Es decir que, además de
almacenarse el propio resultado en el registro Acumulador, se
obtiene también los indicadores o flags del resultado obtenido.
Cada indicador se almacena en un bit del Registro de Estado
describiendo cierta condición del resultado (si fue nulo, si fue
positivo, si se produjo desbordamiento). Los indicadores pueden
ser examinados con posterioridad como parte de una condición de
bifurcación condicional.
La Figura 5.7 muestra un ejemplo de Registro de Estado de ocho
bits. La cantidad y significado de los bits del registro no es igual
175
para todos los microprocesadores sino que puede cambiar de un
modelo a otro según los criterios de diseño del fabricante.
176
operación o puede haber registros específicos para operaciones en
coma flotante. En algunos casos los registros de uso general
pueden ser utilizados para funciones de direccionamiento.
o Registros de Datos: pueden ser usados únicamente para contener
datos y no se pueden emplear en el cálculo de una dirección de
operando. Un ejemplo de este tipo de registro es el Acumulador.
o Registros de Direcciones: almacenan solo direcciones. Pueden ser
en sí registros de uso más o menos general, o pueden estar
dedicados a un modo de direccionamiento particular. El caso más
conocido es el Puntero a Pila.
0000 0001 0000 0001 0110 0000 Cargar el contenido de la dirección 0160H en el Acumulador.
0000 0101 0000 0001 0110 0001 Sumar el contenido de la dirección 0161H al Acumulador.
0000 0010 0000 0001 0110 0010 Transferir el contenido del Acumulador a la dirección de
memoria 0162H.
Dirección de Instrucción en
Descripción
memoria principal lenguaje ensamblador
178
Figura 5.8 Estructura interna de la Unidad de Control
Dirección de
Código fuente Código Objeto Descripción
memoria principal
179
Figura 5.9 Esquema de la CPU.
180
Instrucciones de inicio y fin de programa: Estas instrucciones indican el
comienzo y la finalización de un programa respectivamente.
ORG Indica la dirección de memoria donde comienza la ejecución
del programa. Cabe aclarar que solo es una instrucción de
ensamble, es decir se utiliza al momento de armar el Código
Objeto.
END Indica la finalización del programa que se estaba ejecutando.
181
JUMP NZ Modifica el contador de programa (CP) con una nueva
dirección si el resultado de la operación efectuada es
distinta de cero, o sea Z= 0
JUMP P Modifica el contador de programa (CP) con una nueva
dirección si el resultado de la operación efectuada es
positivo, o sea S= 0
JUMP M Modifica el contador de programa (CP) con una nueva
dirección si el resultado de la operación efectuada es
negativo, o sea S=1
182
Resumen con los distintos tipos de instrucciones
183
5.5.2. Procesamiento de una instrucción
La función básica que realiza una computadora es la ejecución de
programas. El programa a ejecutar está compuesto por un conjunto de
instrucciones almacenadas en memoria. La unidad central de proceso (CPU)
se encarga de leer y ejecutar las instrucciones especificadas en dicho
programa.
Para adquirir una mejor comprensión de esta función y de la forma en
que los principales componentes del computador interactúan para ejecutar
un programa, es preciso considerar con detalle el proceso de ejecución de
un programa. El procesamiento que requiere una instrucción se denomina
ciclo de instrucción.
El punto de vista más sencillo considera el procesamiento de una
instrucción constituido por dos etapas: el ciclo de captación y el de
ejecución (Ver Figura 5.11).
En el ciclo de captación la CPU lee (capta, de “fetch” en inglés) la
instrucción de memoria y en el ciclo de ejecución la ejecuta. La ejecución
del programa consiste en la repetición del proceso de captación y ejecución
de la instrucción. Por supuesto, la ejecución de la instrucción puede a su
vez estar compuesta de cierto número de pasos.
La captación de una instrucción es una operación común a todas las
instrucciones y consiste en la lectura de la instrucción de una posición de
memoria; la ejecución de la instrucción puede suponer varias operaciones y
depende de la naturaleza de la instrucción.
La ejecución del programa se detiene sólo si la máquina se
desconecta, se produce algún error, o se encuentra una instrucción del
programa que detiene al computador.
184
de ejecución. A continuación se describen las microórdenes que el
secuenciador genera durante ambas etapas.
Contador de Contador de
6
Programa Programa +1
185
Figura 5.12 Ciclo de captación de una instrucción.
186
interpretando el operando recibido como segundo operando, ya que el
primer operando es siempre el valor almacenado en el Acumulador.
El resultado de la operación realizada entre el primer y segundo
operando, queda almacenado en el Acumulador. A continuación, la Unidad
de Control ordena la actualización de los flags (bits) del Registro de Estado
que reflejan condiciones del resultado de la operación realizada en la
UAL (ver apartado 5.3.3 – Registros Asociados a la UAL: Registro de Estado).
El siguiente esquema de microinstrucciones resume los pasos del ciclo
de ejecución completo de una instrucción aritmética (sólo cambiará el tipo
de operación aritmética a ejecutar). Estos pasos se muestran para su
seguimiento en la Figura 5.13.
Bus Interno
Registro de
10 UAL
Palabra
(2do operando)
11 UAL Acumulador
187
Figura 5.13 Ciclo de ejecución de una instrucción aritmética (ADD, SUB, MPL o DIV).
188
El siguiente esquema muestra los pasos del ciclo de ejecución de la
instrucción LOAD, cuyo seguimiento puede realizarse en la Figura 5.14.
Bus de Datos
Memoria Registro de
9
Principal Palabra
(lectura)
189
escrita. La Unidad de Control ordena la operación de escritura en memoria
y el contenido del registro Acumulador es llevado por el bus interno al
Registro de Palabra. Desde allí a través del bus de datos se almacena el
dato en la celda de memoria activada.
A continuación se muestra el esquema de microinstrucciones del ciclo
de ejecución de la instrucción STORE con el respectivo seguimiento en la
Figura 5.15.
Bus de Datos
Registro de Memoria
10
Palabra Principal
(escritura)
190
Observación: Para la resolución de los ejemplos y ejercicios
propuestos que se presentan a continuación, se usará el set de
instrucciones y la arquitectura de procesador detallado en la Tabla
5.5.
a) Realice el seguimiento del siguiente programa usando los esquemas y Figuras: 5.13, 5.14 y 5.15
ORG 0107 H Comienzo de programa. En el contador de programa se carga la dirección 0107H.
0107 H LOAD, (025ª H) Carga en el Acumulador el contenido de la celda de memoria de dirección 025AH.
0108 H ADD, (135E H) Suma al Acumulador el contenido de la celda de dirección 135EH.
0109 H STORE, (135F H)Almacena el contenido del Acumulador en la dirección 135FH.
010ª H END Fin del programa
Memoria Principal
Bus de Datos
01 025A H 0107 H
03 135E H 0108 H Bus de Direcciones
02 135F H 0109 H
0E 0000 H 010A H
: :
: :
:
13 D 025A H
Memoria de datos : :
20 D 135E H
50 D 135F H
Nota: Para mayor claridad, se muestran los esquemas de microinstrucciones en las páginas siguientes.
4) Después del ciclo de búsqueda: 0109 H STORE, (135F H) (135F H)= 50D
191
192
LOAD CB CP
RDir
Bus Dir MP= 0107 H Bus Datos
RP
RI U.C. CP=CP+1
0107 H 0107 H 01 025A H 01 025A H 01 025A H 01 025A H 01 Decodif. 0108 H
Dec.
CE 01 025A H 01= LD
Bus Dir MP= 025A H Bus Datos
RDir RP Acum.
025A H 13 13 13
Dec.
CE 03 135E H 03 =ADD
Bus Dir MP= 135E H Bus Datos U.A.L. R.Estado
RDir RP Acum
135E H 20 20 20 13 +20 33 S=0 Z=0
Dec.
CE 02 135F H 02 =ST
Bus Dir MP= 135F H
RDir
Secuenc. 135F H 50 33
Bus de Datos
Acum R.Palabra
33
Dec.
CE 0E 0000 H 0E =END CB: Ciclo de Búsqueda
CE: Ciclo de Ejecución
192
Ciclo de Búsqueda Ciclo de Ejecución
Bus Interno (Dir. Operando)
Contador de Registro de Registro de Registro de
1 7
Programa Direcciones Instrucciones Direcciones
0107 H 025A H
Bus de Datos
Memoria Bus de Datos Registro de Memoria Registro de
3 9
Principal (01 025A H) Palabra Principal Palabra
(13)
(Cod. Op.)
Registro de
5 Decodificador
Instrucciones
01
6 CP=0107 H CP+1=0108 H
(2do operando)
Registro de Bus Interno Registro de Registro de
4 10 UAL
Palabra 03 135E H Instrucciones Palabra
20
(Cod. Op.)
Registro de UAL
5 Decodificador 11 Acum. = 33
Instrucciones 13+20
03 33
Bus Interno
Memoria Bus de Datos Registro de Registro de
3 9 Acumulador
Principal (02 135F H) Palabra Palabra
33
Bus de Datos
Registro de Bus Interno Registro de Registro de MP = 135F H
4 10
Palabra 02 135F H Instrucciones Palabra 50 33
(33)
(Cod. Op.)
Registro de
5 Decodificador
Instrucciones
02
6 CP=0109 H CP+1=010A H
193
Instrucciones de ruptura de secuencia sin retorno: JUMP
Este tipo de instrucción, también llamado instrucción de bifurcación o
de salto, permite modificar el desarrollo secuencial del programa, haciendo
que la instrucción de salto sea seguida no por la instrucción almacenada en
la siguiente dirección, sino por una instrucción cuya dirección viene
suministrada por la propia instrucción de salto. Además este salto puede
ser incondicional o estar sujeto a ciertas condiciones que deben ser
cumplidas para ejecutar el salto (ver apartado 5.5.1).
194
Salto condicional – Procesamiento de las instrucciones JUMP M/ P/ Z/ NZ
Cuando el Decodificador identifica el código de operación como una
instrucción de salto condicional, la Unidad de Control verifica la condición
de salto con los bits del Registro de Estado. Si la condición se cumple
(verdadero), la dirección de salto que se encuentra en la zona de dirección
del Registro de Instrucciones se transfiere al Contador de Programa
modificando de esta manera la secuencia del programa. Si la condición no
se cumple (falso), la ejecución de la instrucción termina, el Contador de
Programa no se modifica y la ejecución del programa continúa
normalmente. (ver apartado 5.5.1).
Falso
Fin
195
Ejemplo 5.2 Seguimiento de instrucciones de salto
a) Realice el seguimiento del siguiente programa usando los esquemas de microinstrucciones. Considere el
Acumulador= 20; Registro de Estado: Z=0 S=0
0106 H …
0107 H JUMP Z, 0109 H Salta a la dirección 0109 H (STORE), si el resultado de la operación es nulo (si Z=1)
0108 H JUMP, 010A H Salto incondicional a la dirección 010A H (END)
0109 H STORE, (135F H Almacena el contenido del Acumulador en la dirección 135F H.
010AH END
Memoria Principal
Bus de Datos
09 0109 H 0107 H
07 010A H 0108 H Bus de Direcciones
02 135F H 0109 H
0E 0000 H 010A H
: :
: :
Nota: Para mayor claridad, se muestran los esquemas de microinstrucciones en las páginas siguientes.
196
Ciclo de Búsqueda Ciclo de Ejecución
Bus Interno Bus Interno
Contador de Registro de Registro de UC
1 7
Programa Direcciones Estado (flag: Z) Z=0
0107 H
6 CP=0107 H CP+1=0108 H
(Cod. Op.)
Registro de
5 Decodificador
Instrucciones
07
6 CP=0108 H CP+1=0109 H
Bus Interno
Contador de Registro de
1
Programa Direcciones
010A H
(Cod. Op.)
Registro de
5 Decodificador
Instrucciones
0E
6 CP=010A H CP+1=010B H
197
Instrucciones de ruptura de secuencia con retorno: CALL, RET
Una instrucción de salto con retorno, se refiere siempre a un llamado
para la ejecución de un programa secundario. En lenguaje Assembler el
llamado se realiza usando la instrucción CALL. Según el lenguaje de
programación que se esté usando, el programa secundario puede ser una
Función, un Procedimiento o una Subrutina. Este programa secundario,
depende del programa principal que lo invocó, y por lo tanto una vez
ejecutado debe devolver el control al programa principal para que continúe
con la secuencia del programa. El retorno al programa principal se hace a
través de la instrucción RETURN (RET), colocada al final de la subrutina. Se
verá a continuación el desarrollo de estas dos instrucciones.
Bus de Datos
Registro de
11 Memoria Pila
Palabra
(escritura)
Bus Interno
Registro de Contador de
12
Instrucciones Programa
(dir.operando)
198
Figura 5.18 Ciclo de ejecución de una instrucción de salto con retorno (CALL).
199
Pasos del procesamiento de la instrucción RET
Bus Interno Registro de
7 Puntero Pila
Direcciones
Bus Datos
Registro de
9 Memoria Pila
Palabra
(lectura)
Bus Interno
Registro de Contador de
10
Palabra Programa
200
Ejemplo 5.3 Seguimiento de instrucciones de salto con retorno.
a) Realice el seguimiento del siguiente programa usando los esquemas de microinstrucciones. Complete el
cuadro correspondiente a la memoria de datos e instrucciones. Considere el Acumulador = 20 y el Puntero
Pila = 0100 H.
0106 H …
0107 H CALL, 0209 H Salta a la dirección 0209 H para ejecutar la subrutina, después de guardar 0108 H
0108 H END Fin del programa principal.
: :
0209 H STORE, (035B H) Almacena el contenido del acumulador en la dirección 035B H.
020A H RET Retorna al programa principal, a la dirección 0108 H.
Memoria Principal
00FE H
Bus de Datos 00FF H Memoria Pila
0100 H
: :
0C 0209 H 0107 H
0E 0000 H 0108 H Bus de Direcciones
: :
: :
02 035B H 0209 H
0D 0000 H 020A H
Memoria de datos : :
13 D 035B H
Nota: Para mayor claridad, se muestran los esquemas de microinstrucciones en la página siguiente.
201
Ciclo de Búsqueda Ciclo de Ejecución
Bus Interno
Contador de Registro de
1 7 PP = 0100 H PP-1= 00FF H
Programa Direcciones
0107 H
Bus Interno
Registro de CP = 0108 H
6 CP = 0107 H CP+1=0108 H 12-
Instrucciones CP = 0209 H
0209 H
6 CP = 0209 H CP+1=020A H
202
Bibliografía
JEAN-PIERRE MEINADIER. "Estructura y Funcionamiento de las
Computadoras Digitales"
WILLIAM STALLING. "Organización y Arquitectura de Computadores".
PEDRO DE MIGUEL ANASAGASTI. "Fundamento de los Computadores"
MARIO GINZBURG. "Operación Programación de Computadoras"
Revistas
Users #174- "Procesadores"- Adrián Mansilla
Fuentes webs:
http://www.howstuffworks.com - "How Microprocessors Work".
Marshall Brain
http://www.portalmundos.com / mundoinformatica / hardware -
"AMD vs. Intel: Pequeña historia de los procesadores". Sergio de
los Santos
http://www.intel.com
http://www.amd.com
203