You are on page 1of 21

Ing.

Gabriel Castillo Hernndez

Arquitectura Von Newman


Facultad de Ingeniera Universidad Nacional Autnoma de Mxico

Captul o

Funcionamiento de una computadora


El Procesador Ideal
El objetivo de este captulo es presentar el funcionamiento general de una computadora constituida por una Unidad Central de Proceso (CPU) y su memoria principal. La arquitectura y operacin se presenta con base en una computadora idealizada (basada en la arquitectura propuesta por Von Newman) que denominaremos Procesador Ideal.

Arquitectura mnima de una computadora


Los componentes ms elementales de una computadora son: La unidad central de proceso. La tarea principal de la unidad central de proceso (o CPU por sus siglas en ingls) est encargada de la recuperacin, interpretacin y ejecucin de las instrucciones de un programa. Dichas instrucciones se encuentran almacenadas en la memoria principal (o simplemente memoria) de la computadora.

La memoria principal. Es un arreglo consecutivo de celdas, cada celda tiene la capacidad de almacenar un nmero de dgitos binarios determinado (datos o instrucciones); adems, cada celda es identificada mediante un identificador nico denominado direccin de la celda de memoria. En la memoria principal se almacenan tanto datos como los programas que operan sobre esos datos. Canal de comunicacin. Un canal de comunicacin (o Bus) es bsicamente un conjunto de lneas utilizadas para la transmisin de seales elctricas, a menudo dichas seales representan valores binarios. Es importante resaltar el hecho de que un canal de comunicacin es incapaz de retener informacin (en su expresin ms sencilla un canal de comunicacin es un conjunto de cables de cobre). En una computadora podemos distinguir los siguientes tipos de canales de comunicacin:

1) Bus de datos. Utilizado para la transmisin de datos entre las celdas de

memoria y el procesador, por este viaja la informacin que almacenada en las celdas o la que se desea almacenar en ellas, este hecho implica que el Bus de datos es bidireccional (las seales datos- viajan en ambos sentidos).
2) Bus de direcciones. Utilizado por el CPU para seleccionar la celda que

desea utilizar, es decir permite comunicar la direccin de la celda. Por su naturaleza este Bus es unidireccional.
3) Bus de control. Este canal de comunicacin es empleado para transmitir

seales de control desde el procesador y hacia el procesador. Seales tpicas son la de seleccin de memoria, seales y la de lectura y/o escritura de memoria. La figura 1 muestra el esquema arriba descrito.

0 1 2 3 4

Celda de memoria

. . .
0

. . .

...
n 1

m-1 m Direccin de memoria

Un anlisis ms detallado del CPU nos permite identificar los siguientes componentes: 1) Registros asociados al manejo de la memoria:

Registro de direccin de memoria. El registro de direccin de memoria (o MAR Memory Address Register) es el registro empleado por el CPU para polarizar el bus de direcciones. Cada vez que el CPU necesita utilizar la memoria colocar en el MAR la direccin de la celda a emplear (ya sea para lectura o para escritura). Registro de retencin de memoria. El registro de retencin de memoria (o MBR Memory Buffer Register) tiene dos funciones bsicas: (a) Durante la lectura de la memoria debe censar las lneas del Bus de datos y retener dichos valores. Previamente la celda de la cual se est recuperando la informacin ha colocado su informacin en el Bus de datos y lo mantiene sin cambio por unos instantes. (b) Durante la escritura a una celda de memoria proporciona al Bus de datos el valor que el CPU desea colocar en memoria, manteniendo estables las seales por un periodo de tiempo.

2) Registros asociados a la ejecucin de una instruccin:

Registros de instruccin. Recordemos que en la memoria se encuentra almacenado el programa que deseamos ejecutar, por lo que es necesario que el CPU tome cada una de las instrucciones del programa y la traslade dentro de l, para ello emplea el MAR (para especificar la direccin donde se encuentra la instruccin) y el MBR (para recibir el cdigo de la instruccin), sin embargo, una vez que el MBR ha recibido la instruccin debe de trasladarse dicho valor a un
2

lugar adecuado para su posterior interpretacin. El registro de instruccin (o IR Instruction Register) es utilizado para este fin.

Registros de propsito general. Las instrucciones que el procesador ejecuta, bsicamente modifican datos que se encuentra almacenados en la memoria. Al igual que las instrucciones, es necesario que dichos datos sean llevados al interior del CPU, esta labor es responsabilidad del programador. Para cumplir dicha tarea el programador debe hacer uso de registros de almacenamiento temporal y que por las caractersticas propias del CPU son limitados en nmero, a estos registros se les conoce como registros de propsito general.

3) Otros elementos:

Unidad de control. La unidad de control (o CU Control Unit) es un subsistema encargado de llevar a cabo el control de todas las operaciones del CPU. Unidad aritmtica y lgica. La unidad aritmtica y lgica (o ALU Arithmetic and Logic Unit) es un subsistema capaz de ejecutar operaciones aritmticas (sumas, restas, etc.) y lgicas (comparaciones, conjunciones, disyunciones, etc.) Registro de Banderas. El registro de banderas (o Flags) es un registro especial cuyo contenido es modificado principalmente por la ALU para reflejar el resultado de la ltima operacin realizada. A menudo es empleado tambin para reflejar estados especiales del procesador. Canales de comunicacin internos. Dentro del CPU existen canales de comunicacin que permiten transferir informacin de un registro a otro o de un registro a la ALU, sin embargo y para facilitar el entendimiento de la arquitectura no se presentan y tampoco se detallan en esta exposicin, baste saber que es posible comunicar informacin internamente. Conjunto de Instrucciones. Todo procesador es capaz de ejecutar un nmero finito de operaciones, a menudo este conjunto de instrucciones (o Instruction Set) no excede el ciento y, generalmente, el nombre de las instrucciones, su operacin e interpretacin dependen de cada procesador en particular.

La figura 2 muestra el esquema completo de la arquitectura mnima de una computadora.

Registros de Propsito General MAR ALU

Banderas

IR

MBR Unidad de Control

Esquemas de direccionamiento
Un programa de computadora es bsicamente un conjunto de instrucciones. Para que un programador pueda escribir dichas instrucciones es necesario que respete un conjunto de reglas, como es natural, estas reglas han evolucionado con el avance de la tecnologa. A continuacin se realizar una revisin de dicha evolucin(sin pretender ser riguroso ni exhaustivo). Para ello utilizaremos como modelo una de las instrucciones ms sencillas: la suma de dos variables, colocando el resultado en una tercera. (Por ejemplo A,B y R). Esta revisin nos permitir enriquecer la arquitectura mnima de una computadora, en cada esquema se sugerirn nuevas estructuras y se establecer cmo debe realizarse la operacin de suma.

Esquema de direccionamiento de 4 direcciones o 3+1 direcciones


Aunque actualmente el concepto de programa secuencial es natural1, ello no necesariamente siempre ha sido cierto. De hecho originalmente, era necesario especificar la instruccin que debera ejecutarse una vez terminada de ejecutar la instruccin actual, as para nuestro ejemplo, la instruccin quedara como: I30: SUMAR A,B,C,I40

Es decir una vez que una instruccin es ejecutada la instruccin que debe ser ejecutada a continuacin es la siguiente en secuencia, de acuerdo con el orden de escritura del programa.

La cual puede ser interpretada como: La instruccin 30 es: suma A y B y el resultado almacenarlo en C, una vez realizado lo anterior, ejecutar la instruccin 40. En este formato es posible identificar los siguientes elementos:
1) Un nmero de instruccin, el cual identifica la instruccin en cuestin: I30 2) Una operacin a realizar: suma 3) Los operandos que debern ser utilizados en la instruccin, a menudo dichos

operandos se encuentran almacenados en la memoria, por lo cual es necesario proporcionar la direccin de cada uno: A y B
4) Un resultado que representa el lugar donde se almacenar el resultado de la

operacin, igual que los operandos a menudo tambin representa una localidad de memoria: C
5) El nmero de la instruccin que deber ejecutarse una vez terminada esta

instruccin: I40 Debido a que en este formato se requiere especificar cuatro direcciones de memoria (dos de operandos, una de resultados y una ms de instruccin siguiente) a este esquema se le denomina de 4 direcciones o de 3+1 direcciones. Este esquema no introduce nuevos componentes en la arquitectura bsica de la computadora. En los prrafos siguientes se presenta la evolucin natural de este esquema de direccionamiento.

Esquema de 3 direcciones
Uno de los primeros cambios que se pueden introducir al esquema de 3+1 direcciones es la suposicin de que las instrucciones deben efectuarse en forma secuencial de acuerdo con el orden de escritura del programa, Una vez introducido este cambio, la instruccin de suma queda como: I30: SUMAR A,B,C Como puede observarse el campo de instruccin siguiente ha desaparecido, siendo la instruccin a ejecutar una vez terminada esta la instruccin I31. Como resultado de los cambios anteriores es necesario que el CPU lleve un control interno de la direccin donde se encuentra almacenada la instruccin que esta ejecutando en un momento dado. El nuevo componente, encargado de llevar el control de la secuencia del programa, se denomina Contador de Programa (o PC Program Counter). Adems, debido a que la naturaleza secuencial de los programas, se requiere de una instruccin especial para indicar al procesador que rompa la secuencia y que ejecute a continuacin una instruccin que no es la siguiente, esta instruccin es la instruccin de salto (JMP) o ruptura de secuencia2.

Esquema de 2 direcciones
La siguiente modificacin es la eliminacin del campo de resultados, asumiendo para ello, que uno de los dos operandos funcionar como operando y campo de resultado. Nuestro ejemplo tendr la forma:
2

Esta instruccin de salto es similar a la instruccin goto de lenguajes tales como basic o C.

I29: COPIAR C,A I30: SUMAR C,B En este ejemplo se asume que el operando que funciona como operando y campo de resultados es el primero. Por lo que la explicacin del programa es copiar el contenido de A a C (I29) y sumar a C el contenido de B (I30). Este esquema no introduce elementos nuevos en la arquitectura. Los cambios implican, como se ver posteriormente, que el cdigo generado para cada instruccin es ms sencillo (se requiere especificar menos informacin por instruccin), aunque se requieren de ms instrucciones para realizar una misma tarea.

Esquema de 1 direccin
Es posible simplificar an ms el esquema, para ello se requiere aceptar que todas las operaciones aritmticas y lgicas se realizarn siempre utilizando un registro especial denominado Acumulador. La funcin del Acumulador es doble: servir como operando y como registro de resultados. Son necesarias dos instrucciones especiales: cargar el acumulador con un valor ( LDA 16 por ejemplo cargar el acumulador con un nmero 16 ) y mover el contenido del acumulador a otro registro o celda de memoria (STA X por ejemplo cargara el contenido del acumulador en la variable X ). Nuestro ejemplo tendr la forma: I29: LDA A I30: SUMAR B I31: STA C

Esquema de 0 direcciones
El esquema de 0 direcciones hace uso de una pila (stack) sobre cuyo tope se realizan las operaciones. A menudo dicha pila no se encuentra localizada dentro del CPU sino mas bien en la memoria. Este hecho permite que en el un caso extremo se pueda utilizar toda la memoria para la pila. Generalmente, las pilas comienzan en las partes ms altas de memorias y su crecimiento (debido a operaciones de carga y descarga) se lleva a cabo hacia las localidades ms bajas de memoria. Dentro del CPU se lleva a cabo solamente el registro de la posicin del tope de la pila, el registro encargado de esta tarea es el apuntador del tope de la pila (SP o Stack Pointer). Adems son necesarias las instrucciones de carga (PUSH) y descarga (POP), aunque el esquema de estas instrucciones es de 1 direccin. Nuestro ejemplo tendr la forma: I29: PUSH A I30: PUSH B I31: SUMAR I32: POP C

Arquitectura completa de una computadora


Una vez revisados los esquemas de direccionamiento, en la figura 3 se presenta el esquema de la arquitectura completa del procesador. Los componentes y su funcin han sido explicados con anterioridad.

Registros de Propsito General MAR ALU

Banderas

IR

PC

SP

MBR Unidad de Control

El procesador Ideal
Como se mencion en la introduccin del presente captulo, una computadora idealizada denominada Procesador Ideal se utilizar para explicar la operacin general de una computadora.

Arquitectura

Los componentes que forman al Procesador Ideal se presentan en el esquema 4.

R0

R1

R2

R3

MAR ALU

Banderas

PC

IR

SP

MBR Unidad de Control

Banderas

El registro de banderas del procesador ideal, consta de cuatro banderas, las cuales se presentan a continuacin.

Como se recordar las banderas son indicadores del estado general del procesador y ms especficamente proporcionan informacin sobre las operaciones aritmticas y lgicas. El significado de cada bandera se explica en los prrafos siguientes. Para los ejemplos suponga que el contenido de los registros es el siguiente: R0=10, R1=20, R2=20 y R3=255. Adems, para efectos de estos ejemplos, se supone que los registros tendrn 8 bits. Bandera de Cero ( Zf Zero Flag ) La bandera de cero se encender cuando el resultado de la ltima operacin aritmtica es cero. En caso contrario se apagar. El resultado de la instruccin SUB R2,R1 es 0001 0100 0001 0100 0000 0000 por lo que la bandera Z se enciende. El resultado de la instruccin ADD R2,R1 es 0001 0100 0001 0100 0010 1000 por lo que la bandera Z se apaga.

Bandera de Signo (Sf Sign Flag) La bandera de signo se encender siempre que el bit ms significativo del resultado de la ltima operacin aritmtica sea uno. En caso contrario se apagar. El resultado de la instruccin SUB R0,R1 es: 0000 1010 0001 0100 1111 0110 Como puede observarse en este caso el bit ms significativo es 1 por lo que la bandera S se enciende. El resultado de la instruccin ADD R0,R1 es: 0000 1010 0001 0100 0001 1110 En este caso el bit ms significativo es 0, por lo cual la bandera S se apaga. Bandera de Acarreo (Cf Carry Flag) La bandera de acarreo se enciende cuando el resultado de la operacin aritmtica genera un acarreo del bit ms significativo hacia fuera. En caso contrario se apagar. El resultado de la instruccin ADD R3,R0 es 1111 1111 0001 1010 1 0001 1001

como se observa existe un acarreo del bit ms significativo (el octavo bit) hacia fuera por lo que la bandera de acarreo se enciende y en el registro R3 se almacena como resultado de la operacin: 0001 1001 El resultado de la instruccin ADD R2,R1 es 0001 0100 0001 0100 0010 1000 en este caso no se tiene un bit de acarreo por lo que la bandera de acarreo se apaga. Bandera de Overflow (Ov Overflow Flag) La bandera de acarreo se enciende como resultado de efectuar el xor3 entre la bandera de acarreo y la de signo. La justificacin y el significado de esta operacin se ver ms adelante. El resultado de la instruccin ADD R3,R0 es

Recurdese que la operacin binaria xor da como resultado 1 cuando alguno de los dos operandos es 1 pero no ambos, 0 en cualquier otro caso

1111 1111 0001 1010 1 0001 1001 con lo que la bandera de acarreo se enciende (1) y la de signo se apaga (0) por lo que el xor entre estas dos banderas da como resultado que la bandera de overflow se encienda. El resultado de la instruccin ADD R2,R1 es 0001 0100 0001 0100 0010 1000 con lo que la bandera de acarreo es 0 y la bandera de signo es 0, la bandera de overflow es por lo tanto 0.

Registros
Los registros de propsito general que es capaz de manejar el procesador ideal son cuatro:

Cdigo
00 01 10 11

Registro
R0 R1 R2 R3

Modos de direccionamiento
Para completar la especificacin del procesador es necesario especificar la manera en que el procesador tiene acceso a la informacin, tanto en los registros como en la memoria. En la tabla siguiente se especifican dichos modos y en los prrafos posteriores se describen dichos modos.

Cdigo
00 01 10 11

Modo de direccionamiento
No requiere4 Directo Inmediato Indirecto

Para la explicacin que a continuacin se presenta se emplear la instruccin mov . Modo registro (o directo) El ms sencillo mtodo de acceso a la informacin es el acceso directo, este modo de direccionamiento corresponde al uso de los registros como la fuente de la informacin a utilizar. Si un registro del procesador (por ejemplo R0) es utilizado como operando, con la connotacin de simplemente utilizar su contenido para la operacin, entonces se dice que el operando en cuestin se encuentra en modo directo. Ejemplo: MOV R0, R1 R0 y R1 son utilizados en modo directo. (Directamente se utiliza el contenido de los registros). Este modo de direccionamiento es el ms rpido, pues no se requiere que el CPU utilice la memoria para ejecutar la instruccin.
4

Este valor no es propiamente un modo de direccionamiento, se incluye aqu para completar la tabla. Su uso se explicar ms adelante.

10

Modo inmediato Si el operando que es utilizado dentro de la instruccin corresponde a una constante, entonces se dice que el operando se encuentra en modo inmediato. La razn de esta denominacin es que, como veremos ms adelante, la constante en cuestin se almacena a continuacin del cdigo de la instruccin. Por ejemplo: MOV R0,3 El primer operando (R0) se encuentra en modo directo mientras que el segundo operando se encuentra en modo inmediato. Como es lgico, no necesariamente los dos operando tienen que tener el mismo modo de direccionamiento. Modo indirecto A menudo el operando que se utilizar se encuentra almacenado en la memoria, por lo tanto es necesario tener un mecanismo que nos permita hacer esto. Dicho mecanismo vara de procesador en procesador sin embargo siempre es necesario especificar la direccin. En el procesador ideal se utilizar un registro de propsito general para especificar la direccin de la celda de memoria que se desea emplear. Ejemplo: MOV R0,(R1) El primer operando se encuentra en modo directo, mientras que el segundo se encuentra en modo indirecto, la instruccin la podemos traducir como: toma la direccin que se encuentra almacenada en el registro R1, ve a esa direccin de memoria y copia su contenido en el registro R0. A menudo es posible combinar estos modos de operacin para crear otros, sin embargo estos modos son bsicos y prcticamente cualquier procesador deber ser capaz de utilizarlos. Aunque el procesador ideal no puede utilizar modos combinados, es atractiva la idea de poder ejecutar instrucciones tales como: MOV R0, (345) sin embargo, como se ha comentado, esta operacin no es posible ejecutarla con el procesador ideal. De cualquier manera ser el manual del usuario del procesador el que determine qu operaciones pueden ejecutarse.

Conjunto de Instrucciones (Instruction Set)


Todo procesador es capaz de ejecutar un nmero finito de instrucciones, el procesador ideal no es la excepcin y a continuacin se presenta el listado completo de las instrucciones que es capaz de ejecutar. Cdigo 00 01 02 03 04 05 06 07 Instruccin INC DEC ADD SUB AND OR NOT CMP Op Zf 1 1 2 2 2 2 1 2 Cf Ov Significado Aritmticas y Lgicas Incremento en 1 Decremento en 1 Suma Resta Operacin lgica and Operacin lgica or Operacin lgica not Comparacin Ruptura de la secuencia del programa
11

Sf

Cdigo 08 09 0A 0B 0C 0D 0E 0F 10 11 12 17 13 14 15 16 18

Instruccin JMP JZ JNZ JS JNS JC JNC JO JNO CALL RET END PUSH POP PUSH SP POP SP MOV

Op Zf 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 2

Sf

Significado Salto no condicionado Salta si la bandera de cero est encendida Salta si la bandera de cero no est encendida Salta si la bandera de signo est encendida Salta si la bandera de signo no est encendida Salta si la bandera de acarreo est encendida Salta si la bandera de acarreo no est encendida Salta si la bandera de sobreflujo est encendida Salta si la bandera de sobreflujo no est encendida Llamada a subrutina Regreso de subrutina Termina programa Manejo del stack

Cf

Ov

Recupera del tope de la pila Guarda el SP en el tope la pila Recupera el SP del tope de la pila Transferencia de Informacin Copia el contenido del op. 2 al op. 1

Formato de instruccin
Cada instruccin que el procesador debe ejecutar se encuentra almacenada en la memoria de la computadora. De este lugar es de donde el CPU debe tomar cada instruccin. Como se recordar cada celda de memoria es capaz de almacenar un cierto nmero fijo de bits, por lo tanto, las instrucciones debe estar codificadas en dgitos binarios para poder almacenarlas en la memoria. Para poder codificar las instrucciones ser necesario establecer un protocolo de codificacin, dicho protocolo es nico para cada procesador y por lo general es establecido por los diseadores de procesador. Este protocolo de codificacin es conocido como Formato de la Instruccin. A continuacin se presenta el formato de instruccin para el procesador ideal. Las instrucciones que el procesador ideal puede ejecutar tienen un esquema de direccionamiento de dos direcciones. Cada instruccin del procesador ideal ser codificada en una palabra de 16 bits. El significado de cada bit se presenta en la tabla siguiente:
No usados B15 b14 b13 b12 Instruccin b11 b10 b9 b8 Modo Op1 b7 b6 Modo Op2 b5 b4 Operando1 b3 b2 Operando2 b1 b0

Codificacin de una instruccin La manera de codificar una instruccin se explica a continuacin, para ello supngase que se desea codificar la instruccin: ADD R0, (R1). Los bits b15 a b13 no son utilizados en este formato por lo que los valores que almacenemos en estos son irrelevantes. Utilizaremos el smbolo X para denotar la irrelevancia del valor de un bit. Como primer paso se codifica el campo de instruccin siguiente, para ello se utiliza el cdigo de acuerdo a la tabla del conjunto de instrucciones. El cdigo correspondiente a la instruccin ADD es 02 ( 0 0010 binario) con lo que se llenarn los bits b12 a b8:

12

No usados

Instruccin

Modo Op1

Modo Op2

Operando1

Operando2

b7

b6

b5

b4

b3

b2

b1

b0

El operando 1 de la instruccin es ADD R0,(R1) es R0, y el operando 1 est en modo directo, por lo que el cdigo a colocar en Modo Op1 es 00 (consulte la tabla de Modos de direccionamiento) y para el campo Operando 1 es 01 (consulte la tabla de registros), agregando estos valores al cdigo tendremos:
No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

b5

b4

b1

b0

Finalmente, el operando 2 de la instruccin es ADD R0,(R1) es R1, y el operando 2 est en modo indirecto, por lo que el cdigo a colocar en Modo Op2 es 11 y para el campo Operando 2 es 01, agregando estos valores al cdigo tendremos:
No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

Con lo cual el cdigo de la instruccin ADD R0,(R1) es 0000 0010 0111 0001 (binario) o 0271 (hexadecimal). Observe que los smbolos X han sido considerados como 0, esta ser la convencin a utilizar. Recurdese que las instrucciones de un programa se encuentran almacenadas en memoria, de modo que si la instruccin ADD R0,(R1) es parte de un programa dicha instruccin se encontrar almacenada en la memoria, por ejemplo en la direccin 3FA: Direccin Contenido de la Memoria

3F9 3FA 0000 0010 0111 0001 3FB Obsrvese que el proceso de codificacin es reversible, es decir, a partir de un cdigo de instruccin 0271 (Hexadecimal) es posible deducir que la instruccin correspondiente es ADD R0,(R1). Se deja al lector realizar la comprobacin. Codificacin de una instruccin con un operando en modo inmediato Es particularmente importante entender la manera en que se codifica una instruccin que incluye una constante como uno de sus operandos (modo de direccionamiento inmediato). Supngase que se desea codificar la instruccin ADD R0,0 y por un momento imaginemos que el cdigo que generamos es 0001, ahora supngase que deseamos codificar la instruccin ADD R0,1 generamos el cdigo 0002. Si seguimos en la misma
13

lgica, veremos que para cada valor posible de la constante tendremos que generar un cdigo distinto. Sin embargo, en esencia la instruccin es: suma una constante (cualquiera que esta sea) a registro R0, resulta atractiva la idea de generar un solo cdigo y de alguna manera especificar la contante a usar de manera que no cambie el cdigo de la instruccin. La solucin al problema anteriormente planteado es la siguiente: Codificar la instruccin sin incluir la constante, almacenando esta en la siguiente celda de memoria despus del cdigo de instruccin, un ejemplo aclarar esta idea. La instruccin ADD R1, 30 se codifica de la siguiente manera: por la instruccin, el modo del operando 1 y el cdigo del operando 1 tenemos:
No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

b5

b4

b1

b0

Para el operando 2 tenemos que el modo de direccionamiento es inmediato, por lo que el cdigo es 10:
No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

b1

b0

Ahora bien, en la instruccin ADD R1, 30 el segundo operando es una constante lo que ya ha sido especificado por el modo de direccionamiento inmediato para el operando 2. De modo que el valor asignado para el operando 2 es irrelevante porque no se usar. De esta manera tenemos:
No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

As pues, el cdigo del operando es 0000 0010 0110 0100 ( 0264 hex), y si esta instruccin se almacena en la direccin 3FB entonces la constante a utilizar para el operando 2 (30) se debe almacenar en la direccin 3FC. La instruccin ADD R1, 30 se almacenar en memoria como se muestra a continuacin. Se deja al lector comprobar que la codificacin de la instruccin ADD R1, 15 es el mostrado en las direcciones 3FD y 3FE.

14

Direccin

Contenido de la Memoria

3F9 3FA 0000 0010 0111 0001 3FB 0000 0010 0110 0100 3FC 0000 0000 0001 1110 3FD 0000 0010 0110 0100 3FE 0000 0000 0000 1111

Ciclo de Instruccin
Una vez que el programa se encuentra en memoria el procesador puede ejecutarlo. Para ello ejecuta cada una de las instrucciones. El proceso de ejecucin de cada instruccin sigue una secuencia de pasos bien definidos, a esta secuencia se le denomina Ciclo de Instruccin. El Ciclo de Instruccin gobierna todos los procesos del procesador, y a su vez se divide entres etapas que a continuacin se explican. Ciclo de Fetch (Carga de instruccin) Esta etapa es ejecutada cada vez que el procesador comienza la ejecucin de una instruccin. El objetivo principal de este ciclo es recuperar el cdigo de la instruccin, almacenado en memoria, y transportarlo dentro del procesador hasta el IR. Para llevar a cabo este ciclo el procesador efecta una serie de operaciones ms sencillas (llamadas microinstrucciones), recuerde que el PC contiene la direccin de la instruccin que se debe ejecutar, las microinstrucciones que el procesador ejecuta en este ciclo son: MARPC MBR(MAR) PC PC+1 IRMBR El PC es copiado al MBR El MBR recibe el contenido de la celda de memoria cuya direccin esta almacenada en el MAR El PC se incrementa en 1 para apuntar al cdigo de la instruccin siguiente El IR recibe el cdigo de la instruccin que el microprocesador debe ejecutar

Este ciclo es invariable para cualquier instruccin. Observese que al finalizar el ciclo se tienen dos resultados importantes: el IR contiene el cdigo de la instruccin que se debe ejecutar y adems el PC contiene la direccin de la siguiente instruccin que se ejecutar una vez ejecutada la instruccin almacenada en el IR.

15

Ciclo de Decode (Decodificacin) Una vez que en el IR se encuentra la instruccin el siguiente paso es el Ciclo de Decode. El Ciclo de Decodificacin permite determinar qu instruccin se deber ejecutar, este proceso se puede realizar bsicamente de manera inversa de cmo se codifica una instruccin. Como este proceso lo lleva a cabo la Unidad de Control, no existen microinstrucciones a ejecutar. Ciclo de Execute (Ejecucin) Durante el ciclo de ejecucin se ejecuta propiamente la instruccin. microinstrucciones dependen de cada instruccin. Las

El proceso de ensamblado
Para desarrollar un programa, el programador utiliza las instrucciones que el procesador es capaz de ejecutar. La mecnica de escritura ha variado con el tiempo y depende de varias cosas, entre ellas la computadora o el sistema para el cual se desarrolla el programa, el sistema operativo bajo el cual se trabaja, los dispositivos perifricos disponibles, etc., sin embargo y a grandes rasgos actualmente el proceso que se sigue de manera regular es el siguiente: El programador escribe su programa por medio de algn editor (por ejemplo edit de DOS, el notePad de Windows o el vi de UNIX), normalmente se desea que el editor no debe agregar cdigo especial (lo cual descarta a editores como Word o Tex), el programa es almacenado en un archivo. Una vez que el programa est almacenado en disco es necesario transformarlo del cdigo en Lenguaje humano al correspondiente cdigo binario. Para ello se emplea un programa denominado ensamblador, el programa ensamblador sigue una serie de reglas de ensamblado, similares a las presentadas en las pginas anteriores. Cada instruccin del programa se traduce en un solo cdigo binario equivalente. Una vez ensamblado el archivo, y si este utiliza rutinas externas (es decir no escritas en el mismo archivo fuente) escritas previamente es necesario llevar a cabo un proceso de ligado, este proceso permite que las referencias a procedimientos externos Directivas de ensamblado Una directiva es una indicacin que se le hace al programa ensamblador para que lleve a cabo alguna accin. Las directivas no generan cdigo ejecutable por el procesador. Las ms comunes son: ORG: A menos que esta directiva este presente el ensamblador efecta el proceso de ensamblado a partir de la direccin 0000H, posicin en la cual colocar el primer cdigo ensamblado. Cuando de especifica la directiva ORG el ensamblador cambia de direccin de ensamblado a la especificada por esta directiva. As por ejemplo, ORG 2300H indica al ensamblador que a partir de el punto en que aparece esta directiva, comience a ensamblar el cdigo subsecuente a partir de la direccin 2300H. EQU: Esta directiva establece un valor que ser utilizado como una constante a lo largo del programa. Esta constante no reserva espacio en memoria, simplemente es una manera ms cmoda para el programador de utilizar constantes. As por ejemplo, en el cdigo:

16

MAXIMO EQU 10 ... CMP R0,MAXIMO La segunda instruccin es equivalente a CMP R0,10. De hecho, como se ver ms adelante, el smbolo MAXIMO se agrega a la Tabla de Smbolos con un valor de 10 (ver ensamblador de dos pasadas ms adelante). DB, DW: El objetivo de estas dos directivas es instruir al programa ensamblador para que reserve en memoria espacio suficiente para almacenar informacin del tamao de un byte (8 bits) o de una palabra (16 bits). Por ejemplo en: X DW 10 Y DB 20 La primera lnea reserva una palabra de memoria, en la cual se almacenar un nmero 10 y a cuya direccin se har referencia por medio del smbolo X. La segunda lnea reserva un byte de memoria conteniendo un nmero 20 y cuya direccin se referenciar por medio del smbolo Y. Es importante hacer notar que el ensamblador deber tener capacidad para detectar inconsistencias tales como: Z DB 1200 Recurdese que en un byte el mximo nmero a almacenar es 1111 1111b, es decir 255 (28-1) y en una palabra el mximo nmero es 111 111 111 111 1111b, es decir 65535 (216-1). Por otra parte, la direccin de memoria que el ensamblador selecciona es en general arbitrara y solo esta sujeta a restricciones de unicidad del cdigo. Ensamblado de un programa sencillo Problema: Supngase que se tienen dos nmeros almacenados en memoria, en las direcciones 2000H y 2100H, se desea sumar estos nmeros y el resultado se debe colocar en la direccin 2200H. Codifique el programa para que procesador ideal que haga esto. Solucin: A continuacin se presenta el programa correpondiente. (1) (2) (3) (4) (5) (6) (7) Inicio: Mov Mov Mov Add Mov Mov End R0,2000H R1,(R0) R0,2100H R1,(R0) R0,2200H (R0),R1

A continuacin se ensamblan cada una de las instrucciones del programa anterior:


17

(1) mov R0,2000H


No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

E inmediatamente despus la constante 2000H (2) mov R1,(R0)


No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

(3) Mov R0,2100H


No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

E inmediatamente despes la constante 2100H (4) Add R1,(R0)


No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

(5) mov R0,2200H


No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

E inmediatamente despus la constante 2200H (6) mov (R0),R1


No usados Instruccin Modo Op1 Modo Op2 Operando1 Operando2

(7) end

18

No usados

Instruccin

Modo Op1

Modo Op2

Operando1

Operando2

El programa anterior al ensamblarse y cargarse en memoria, digamos a partir de la direccin 1000H se vera como:

1000 1860H 1001 2000H 1002 1874H 1003 1860H 1004 2100H 1005 0274H 1006 1860H 1007 2200H 1008 18D1H 1009 1700H El ensamblador de 2 pasadas En la seccin anterior se mostr el proceso de ensamblado de un programa sencillo, sin embargo Qu sucede cuando el programa tiene que hacer uso de variables definidas por medio de directivas tales como DW o de instrucciones como saltos (absolutos o condicionados), etc. ? Supngase que se desea hacer un programa que ordene un vector de 10 elementos almacenados en memoria. El mtodo de ordenamiento utilizado es el de intercambio. A continuacin se muestra el cdigo del programa correspondiente. (1) Vector (2) (3) (4) (5) (6) (7) Ciclo: Ciclo2: Inicio: DW Mov Mov Mov Inc 1,3,4,2,0,3,4,2,1,9 R0,Vector R1,1 R2,r1 R2

Cmp R1,10 Jz Fin

19

(8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) Fin: Continua:

Cmp (r1),(r2) Jns Mov Mov Mov Inc continua R3,(r1) (R1),(r2) (r2),r3 R2

Cmp R2,11 Jns Inc Jmp End Ciclo2 R1 Ciclo

20

You might also like