Está en la página 1de 13

Curso: Sistemas Digitales

Especialidad: Ing. Electrnica


Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

CAPTULO 1 PARTE II
Instrucciones
Introduccin
En un computador el componente encargado del control del mismo es el CPU. El CPU lo hace
mediante la ejecucin de un programa, el cual lee de la memoria (por tanto, el programa debe
haberse grabado previamente en la memoria). Una memoria est constituida por registros, y se
ha visto que los registros son un conjunto de celdas de memorias, cada una de las cuales
almacena un valor binario. En resumen, podramos decir que en la memoria slo pueden estar
almacenados nmeros. Si el CPU lee instrucciones de la memoria., entonces necesariamente
estas instrucciones tienen que estar codificadas como nmeros, pues es lo nico que se podr
leer, y como la memoria se lee registro por registro, dichas instrucciones necesariamente
ocuparn un nmero entero de registros. La codificacin mencionada debe ser tal y como la
espera el CPU. Dicha codificacin ha sido creada por el equipo diseador del CPU, y hay
tantas codificaciones de instrucciones como procesadores y microcontroladores hay en el
mercado. Sin embargo todas ellas tienen algo en comn: se representan con nmeros, que
sern grabados en la memoria al formar parte de un programa. As como las instrucciones
estn codificadas como nmeros, tambin tiene que estarlo cualquier tipo de dato que se desee
sea procesado por el computador. Un ejemplo es el cdigo ASCII que permite representar
como nmeros de 7 u 8 bits las letras y signos de puntuacin del alfabeto (todos estos
denominados caracteres). Otro ejemplo lo son los nmeros con signo (sino, cmo
representaran el signo menos?).
En el presente captulo se define a una instruccin, se describe cmo se codifican como
nmeros, y cmo se almacenan stos en la memoria. Se ver que algunas instrucciones ocupan
ms espacio de memoria que otras, pero siempre la cantidad de bits que ocupan ser un
mltiplo de la longitud de palabra de los registros de la memoria.
Ejercicio:
Indicar qu representa el siguiente nmero binario: 01100001
Si:
a) Es un cdigo ASCII
b) Representa a un nmero sin signo
c) Representa a un nmero decimal en formato BCD empaquetado.
d) Representa a un nmero en formato de signo y magnitud.

Instruccin (instruction)
Una instruccin es un conjunto de bits que le indican al CPU qu operacin debe realizar,
cmo acceder a los datos que se van a utilizar en la operacin (operandos) y dnde almacenar
los resultados.
Dependiendo del CPU, este conjunto de bits puede estar agrupado en bytes, como en el caso
de los CPUs de 8 bits como el del microcontrolador 68HC11 de Motorola, o en palabras
CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

como en el caso del CPU del LM3S6965 (ncleo Cortex-M3) de la compaa Texas
Instruments, en el que la mayora de instrucciones son de una palabra de 16 bits, y algunas de
32 bits.
En general toda instruccin consta de dos partes: cdigo de operacin y campos de referencia
de operando.

Cdigo de operacin (OpCode, Operation Code)


Indica la operacin a ejecutar, la longitud de la instruccin (cuntos bytes o palabras tiene la
instruccin), y cmo interpretar lo campos de referencia de operando (denominados modos de
direccionamiento), si es que la instruccin los tiene.
En el ATmega88A, los cdigos de operacin son de 4 a 12 bits. En el ncleo Cortex-M3 son
de 5 a 13 bits.

Campo de referencia de operando:


En este campo est la informacin requerida por el CPU para acceder al dato, o datos a utilizar
en la operacin.
Algunas instrucciones no tienen un campo de referencia de operando pues, por ejemplo, los
operando y el resultado estn en registros internos del CPU.
Los operandos pueden estar en registros del CPU, en la memoria, o en algn dispositivo de
entrada/salida.

Por qu se requieren cdigos de operacin?


El CPU es un circuito digital, y como tal lo nico que reconoce son valores binarios. Para ser
ms exactos, lo que realmente reconoce son dos rangos de voltaje, que por facilidad les
asignamos los nmeros 0 y 1.
Como se ha visto en secciones anteriores, el CPU espera encontrar las instrucciones en una
memoria, y por lo tanto lo nico que puede leer de la memoria es lo que le llega por las lneas
de datos.
Como lo nico que reconoce son valores binarios, las instrucciones tienen que representarse
con nmeros (patrones de bits). Y para poder distinguir una operacin de otra, a cada una se le
debe asignar un patrn de bits diferente.
Pero no basta con distinguir las operaciones, sino tambin la manera como se accede al
operando. Se ver en el prximo captulo, que hay varias maneras diferentes de indicar al
CPU cmo acceder al operando, y cada una de esas maneras se denomina modo de
direccionamiento.

Formatos de instrucciones
Cada instruccin es representada por un patrn de bits. Cada patrn consta de cdigo de
operacin y campos de referencia a operando. Al momento de disear el CPU, el diseador
tiene que definir cmo se representarn las instrucciones:
- Cuntos bits para los cdigos de operacin y qu bits
- Cuntos bits para referenciar a cada operando, y cuntos operandos.

CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

A cada manera diferente en que pueden representarse las instrucciones del CPU se le
denomina formato de instruccin, y toda instruccin del CPU corresponder a uno de dichos
formatos.
Por ejemplo, en los microcontroladores basados en ncleo Cortex-M3 se tienen los
siguientes formatos de instrucciones (slo se muestran algunos de ellos). En gris oscuro se
muestra el cdigo de operacin.

Fig. 1 Algunos formatos de instrucciones de microcontroladores basados en ncleos


Cortex-M3
No todas las instrucciones tienen el mismo tamao ni tampoco sus cdigos de operacin son
de la misma cantidad de bits. Puede apreciarse en la Fig. 1 que los primeros formatos son de
instrucciones de 16 bits y el ltimo de 32 bits. Adems, puede apreciarse que el cdigo de
operacin est separado en dos partes en el ltimo formato. En el primer formato, el cdigo de
operacin es de 5 de bits, y tiene dos campos de referencia de operando, uno de 3 bits y el otro
de 8 bits. En todos los casos, en los campos de referencia de operando el bit ms significativo
es el de ms a la izquierda, y el menos significativo el de la derecha.

CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

Nomenclatura de las operaciones de una instruccin


Para representar en forma abreviada las operaciones que se efectan con las instrucciones, se
emplea la nomenclatura que se explica a continuacin.

Representacin de nmeros: Bases numricas


Para diferenciar las bases numricas se emplean prefijos, como se indica en la tabla. sta es la
manera como tendrn que escribir los nmeros en sus programas.
Nmero a
representar
binario
octal
hexadecimal
decimal

Base

Prefijo

Observaciones

Ejemplos

2
8
16
10

0b
0
0x
ninguno

es el dgito 0, no la letra o
es el dgito 0
dgito 0, como en lenguaje C
no debe comenzar con cero

0b1100, es el nmero 12
010, es el nmero 81
0xC es el nmero 12
27

Por ejemplo, 0b1001, 0011 y 0x9 representan al nmero 9.

Registros
Los registros del CPU tienen un nombre con el cual se identifican. Es el fabricante del
microcontrolador el que define los nombres para dichos registros, aunque algunos de ellos,
por su funcin particular, tienen un nombre comn, como PC, e IR (Ver seccin: ejecucin de
instrucciones, para una explicacin de la finalidad de estos registros).
PC es el contador de programa
IR es el registro de instrucciones
SP es el puntero de pila (stack pointer)
En los microcontroladores con ncleo Cortex-M3 hay 13 registros de 32 bits denominados
de propsito general (general purpose), con los nombres R0, R1, hasta R12.

Numeracin de bits en los registros


Siempre la numeracin de los bits en un registro comienza a partir de 0. Por ejemplo, un
registro de 32 bits, tendr los bits del 0 al 31, siendo el bit 0 el menos significativo y el bit 31
el ms significativo.

Transferencia de datos
Para indicar que el contenido de un registro se copia en otro registro se emplea el smbolo
o el signo :=. Si se usa la flecha, sta apunta al registro en el cual se copiar el dato. Si
se usa :=, siempre al lado izquierdo del signo es donde se copiar el dato.
Ejemplo: Copiar el contenido del registro R3 en el registro R7
Se representara as:
R7 R3
o tambin as:
R7 := R3
1

Uno de los errores ms comunes y, al ser tan simple, ms difcil de encontrar, es el error al escribir los nmeros.
Por ejemplo, si al escribir un nmero binario se escribe 01001011 en vez de 0b01001011, el ensamblador
interpreta el primer nmero como correcto, pero asume que est en base 8.
CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

En general, equivale al smbolo de asignacin del lenguaje C y Pascal (en lenguaje C es =,


en lenguaje Pascal es :=)
Ejemplo: Incrementar en una unidad el registro R9
Se representara as:
R9 R9 + 1
o tambin
R9 := R9 + 1
Ejemplo: Copiar en el registro R4 el nmero 0x23
R4 0x23
o tambin
R4 := 0x23

Transferencia de contenidos de una direcciones de memoria


Cuando el registro cuyo dato se quiere transferir es un registro de memoria, se especifica la
direccin del mismo dentro de corchetes [ ] o corchetes. Cualquier expresin dentro de
corchetes representa una direccin de memoria.
Ejemplo: Copiar en el registro R12 el contenido de la direccin 120.
Se representara as:
R12 [120]
o as
R2 := [120]
La direccin tambin podra estar almacenada en un registro.
Ejemplo: Copiar en el registro IR el contenido de la direccin de memoria almacenada en
registro PC.
IR [PC]
Interpretacin:
Si por ejemplo, el registro PC tuviese almacenado el valor 0x60, lo que se grabara en el
registro IR es el contenido de la direccin 0x60 de la memoria. En cambio, si el valor
contenido en PC fuese 0x100, se grabara en IR el contenido de la direccin 0x100 de la
memoria.
Ejemplo: Escribir en la direccin de memoria 0x60 el contenido del registro R1
Se representara as:
[0x60] R1
o tambin as
[0x60] := R1

Seleccin de un bit
Hay dos maneras de especificar un bit en particular de un registro: se coloca primero el
nombre del registro seguido del nmero de bit entre los signos < y > o se coloca entre
corchetes [ ].
Ejemplo: Para especificar el bit 4 del registro R3:
Se representara as:
R3<4>
o as R3[4]
Ejemplo: Poner a 1 el bit 3 del registro R9.
Se representara as:
R9<3> := 1
o as R9[3] := 1

CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

Copia de un rango de bits


El rango de bits se especifica con el nombre del registro seguido del rango entre < y > o
entre corchetes [ ]. El rango se especifica con dos nmeros separados con :.
Ejemplo: Copiar los bits 0, 1 y 2 del registro de nombre R1, a los bits 5, 6 y 7 de otro registro
de nombre R2.
Se representara as:
R2<7:5> := R1<2:0>
o as
R2[7:5] := R1[2:0]
Esto significa que el bit 0 de R1 se copia en el bit 5 de R2, el bit 1 de R1 se copia en el bit 6
de R2 y el bit 2 de R1 se copia en el bit 7 de R2.
Ejemplo: Copiar 0x4759 en los 16 bits ms significativos del registro R11 que es de 32 bits.
Se representara as:
R11<31:16> := 0x4759

R11[31:16] := 0x4759

Registros concatenados
A veces hay instrucciones que hacen uso de dos registros para formar un nmero de mayor
longitud, y lo utilizan as en las operaciones. Para representarlos se coloca primero el nombre
del registro que representar a los bits ms significativos, luego el carcter : y a
continuacin el nombre del registro que representar a los bits menos significativos.
Ejemplo: Si R0 y R1 son registros de 32 bits. Representarlos como un registro de 64 bits
donde el byte ms significativo ser el contenido de R1.
Se representara as:
R1:R0

CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

Lenguajes y herramientas de desarrollo (ensamblador,


compiladores cruzados)
Lenguaje Mquina (machine language)
Un lenguaje escrito es un conjunto de smbolos y reglas cuyo objetivo es lograr la
comunicacin entre dos o ms personas que conocen dichas reglas y smbolos.
En el caso de un CPU, se denomina lenguaje mquina al conjunto de instrucciones que
reconoce el CPU. En este caso, haciendo analoga con un lenguaje escrito, los smbolos seran
los valores ledos de la memoria (nmeros binarios) y las reglas: los formatos de las
instrucciones, y que las instrucciones son ledas en secuencia. Es decir, en la instruccin
misma ya estn de manera implcita las reglas, por la definicin de instruccin dada
anteriormente. Las instrucciones en este lenguaje, estn codificadas como nmeros.
Dado que cada fabricante disea sus CPUs de forma diferente, en general los lenguajes
mquina para CPUs diferentes sern diferentes.

Cdigo Mquina (machine code)


Es el conjunto de instrucciones (en lenguaje mquina) que conforman un programa.
Cdigo mquina de una instruccin
Es la representacin binaria, o en general numrica, de una instruccin, es decir, la
instruccin tal y como est almacenada en la memoria del computador.
Ejemplo:
Se muestra la codificacin mquina de una instruccin de la arquitectura ARMv7-M,
empleada en el ncleo Cortex-M3

Donde los bits 6..3 (Rm) representa uno de los registros R0...R15, y los bits 7, 2..0 (D:Rd)
representa a otro de los registros R0..R15.
La operacin de la instruccin es:
Rd := Rm ; copia en registro Rd el contenido de Rm
Por ejemplo, si se quiere copiar el contenido de R7 en R12 tendramos:
7 = 0b0111 (campo Rm en instruccin valdra 0b0111)
12 = 0b1100 (campo D valdra 1, y campo Rd 0b100)

CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

El cdigo mquina de la instruccin sera:


15
0

14
1

13
0

12
0

11
0

10
1

9
1

8
0

7
1

6
0

5
1

4
1

3
1

2
1

1
0

0
0

El cdigo mquina de la instruccin est en negrita, y el campo de referencia para Rd est en


fondo gris.

Lenguaje ensamblador (Assembly language)


Debido a la dificultad que desde los inicios de las computadoras tuvieron los programadores
para desarrollar programas directamente en lenguaje mquina, stos comenzaron a ponerles
nombres cortos a las instrucciones del computador, que reflejaran la operacin que efectuaba
la instruccin. Estos nombres cortos eran abreviaturas en ingls (pues eran de habla inglesa
los programadores), y cada programador creaba sus propios nombres nemotcnicos y sus
propias reglas de cmo indicar los datos en cada instruccin. Los programadores escriban sus
programas en papel usando estas abreviaturas o ayudas nemotcnicas, y luego los traducan
manualmente al lenguaje mquina, es decir, los convertan a nmeros que escriban en papel.
Eran estos nmeros los que luego introducan en la memoria del computador. De esa manera
les era ms fcil visualizar un programa, revisarlo, y depurarlo. No pas mucho tiempo hasta
que se decidi crear un lenguaje que unificara esos nemotcnicos y la manera de representar
en papel los datos de las instrucciones, de manera que los programadores no tuviesen
necesidad de inventar sus propias abreviaturas, y al mismo tiempo permitir que otros pudiesen
leer los programas escritos por alguien. A este lenguaje se le llam lenguaje ensamblador.
Al mismo tiempo se cre un programa que se encargara de traducir el programa escrito en
lenguaje de ensamblaje a lenguaje mquina. A este programa se le llam ensamblador.
El lenguaje ensamblador es un lenguaje que representa las instrucciones en lenguaje mquina
del CPU de una manera simblica, que se supone es ms fcil de manejar por parte de un
programador (lo cual es cierto, pero si sabe ingls).
Siempre es el fabricante del microprocesador o microcontrolador el que define el lenguaje
ensamblador, a excepcin de las directivas, que pueden variar, y cuya definicin se da en esta
parte. Por eso, hay tantos lenguajes ensamblador como CPUs hay en el mercado (sea como
parte de un microcontrolador o microprocesador).
Sus principales caractersticas son:
Existe una correspondencia biunvoca (para la mayor parte de las instrucciones) entre una
instruccin escrita en lenguaje ensamblador y una instruccin en lenguaje mquina. Es
decir, una instruccin en lenguaje ensamblador representa a una nica instruccin en
lenguaje mquina.
Al igual que en los lenguajes de alto nivel (como PASCAL o C) los programas estn
formados por lneas de texto (lneas de instrucciones).
En una lnea de texto se representa una nica instruccin del CPU.
Cada lnea de instruccin est formada por uno o ms de los siguientes campos:
campo de etiqueta (label field)
CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

campo de nemnico (mnemonic field)


campo de operandos (operand field)
campo de comentarios (comment field)
Antes de explicar el contenido de estos campos, hay que definir dos trminos:
Etiqueta (label): Es una secuencia de caracteres (smbolo) al cual se le asocia un nmero.
Cuando est en el campo de etiqueta representa la direccin de inicio (nmero asociado a la
etiqueta) de la instruccin que est en dicha lnea, en caso de haber una instruccin en sta.
Nemnico (mnemonic): es una palabra que representa la operacin que realiza una
instruccin del CPU. Es el fabricante del microcontrolador (o del ncleo, en caso de haberse
licenciado) el que define los nemnicos para las instrucciones del CPU.
El campo de etiqueta est al comienzo de una lnea de texto y en ella va una etiqueta.
En el campo de nemnico, que sigue al campo de etiquetas, se escriben los nemnicos de las
instrucciones.
En el campo de operandos, que va luego del campo de nemnicos, se escriben los operandos,
que son los valores utilizados por la instruccin del CPU. Se utilizan ciertas reglas para
indicar el modo de direccionamiento involucrado.
En el campo de comentarios puede haber cualquier texto que permita entender la funcin del
programa, tanto por parte del programador como de cualquier otra persona que lea el
programa.
Los comentarios deben ser breves e indicar lo que hace cada porcin de programa en relacin
con el algoritmo implementado. Es una mala prctica de programacin colocar como
comentario lo que el CPU hace en una instruccin, pues eso lo indica claramente el nemnico
y operandos de la instruccin.
Adems de lo antes mencionado, para facilitar la programacin, y en algunos casos para poder
especificar sin ambigedades un programa, este lenguaje cuenta con una serie de palabras
(smbolos) llamados directivas (directives), las cuales no representan instrucciones del
CPU, y que permiten especificar cosas como: direccin de inicio de un programa, si se desea
generar un listado del programa, definir tablas de datos, etc. Estas directivas son procesadas
por el ensamblador al momento que convierte el programa a cdigo mquina.
Los lenguajes ensambladores son diferentes para CPUs diferentes pues, en general, tendrn
registros a los que los fabricantes les ponen nombres diferentes y nemnicos diferentes.
Incluso para un mismo CPU, pueden haber lenguajes ensambladores diferentes, pero lo sern
slo en las directivas, mas no en los nemnicos.
En la primera figura se muestra un programa escrito en el lenguaje ensamblador del ncleo
Cortex-M3, el segundo del Atmega88A, y en la tercera figura un programa escrito en el
lenguaje ensamblador del 68HC11. En las tres figuras se indican sus diferentes partes.

CAPITULO1Parte2rev21.doc

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

Como se puede apreciar, casi todo es diferente. Ese es un inconveniente de la programacin


en lenguaje ensamblador: hay que aprender uno por cada familia de microcontroladores que se
desee utilizar.

CAPITULO1Parte2rev21.doc

10

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

CAPITULO1Parte2rev21.doc

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

11

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

Compilador (compiler)
Es un programa que recibe como entrada un archivo que tiene un programa escrito en un
lenguaje, y genera como resultado un archivo con el mismo programa pero escrito en otro
lenguaje. En el caso de los compiladores de C, generan el archivo en lenguaje ensamblador.

Ensamblador (assembler)
Es un compilador (programa) que acepta como entrada un archivo que tiene un programa
escrito en lenguaje ensamblador, y genera como salida un archivo con el cdigo mquina del
programa. El cdigo ,mquina est en un lenguaje intermedio, denominado lenguaje objeto.

Enlazador (linker)
Es un programa que recibe como entrada uno o ms archivos en lenguaje objeto, ms otros
archivos (bibliotecas) y genera un archivo con el cdigo mquina de todos los archivos de
entrada.

Ensamblador cruzado (cross-assembler)


Es un ensamblador que se ejecuta en un computador basado en cierto microprocesador o
microcontrolador, y genera cdigo mquina para un microprocesador o microcontrolador
diferente al del computador. Tambin se denomina as a los ensambladores que se ejecutan en
un computador basado en cierto microprocesador y generan cdigo para computadoras de
diferente arquitectura pero basadas en el mismo microprocesador.
Por ejemplo, el AS68 es un ensamblador cruzado, que se ejecuta en un computador
compatible IBM, pero genera cdigo mquina para el microcontrolador 68HC11. El AVR
Assembler 2.0 de Atmel, es tambin un ensamblador cruzado; se ejecuta en un computador
compatible IBM, pero genera cdigo mquina para microcontroladores de la familia AVR,
como el Atmega88A, ATmega32, AT90S8535, etc.

Compilador cruzado de C (C cross-compiler)


Es un compilador de lenguaje C que se ejecuta en un computador, y genera cdigo mquina
para un computador diferente. La diferencia puede ser en el tipo de procesador,
microcontrolador o microprocesador que emplee la computadora, o de contar con el mismo
procesador, en la arquitectura del computador.
Por ejemplo, el programa "CodeVision AVR C Compiler" es un entorno de desarrollo para la
familia de microcontroladores AVR8 de Atmel, y cuenta con un compilador cruzado de C
para dicha familia de microcontroladores (existe una versin reducida, gratuita de dicho
programa).
La gran diferencia entre un compilador cruzado y otro que no lo es, estriba en que el primero
genera cdigo independientemente de la arquitectura del computador en el que se ejecutar
dicho cdigo. Los compiladores usados en las computadoras personales (por ejemplo visual
C++ o DevC++) son compiladores que generan archivos que se ejecutan sobre un sistema
operativo determinado, por ejemplo Windows XP o Windows 7, y los programas ejecutables
que generan no pueden ser utilizados sobre cualquier otro sistema operativo que no sea
compatible con los mencionados.
CAPITULO1Parte2rev21.doc

12

02/09/2014

Curso: Sistemas Digitales


Especialidad: Ing. Electrnica
Pontificia Universidad Catlica del Per

Profesor: Ing. Hugo Pratt


rea de circuitos y sistemas

Ejecucin de instrucciones
En general, se suelen distinguir dos fases en la ejecucin de una instruccin:
Bsqueda del cdigo de operacin, tambin llamado ciclo de captacin, o Ciclo fetch (opcode fetch)
Decodificacin/ejecucin
La primera fase consiste en la lectura del cdigo de operacin y su grabacin en un registro
especial, denominado comnmente registro de instrucciones (IR, instruction register).
La segunda consiste en la lectura y procesamiento de las dems palabras de la instruccin (si
las hubiera), lectura de datos, procesamiento de stos, y grabacin del resultado.
El CPU siempre comienza la ejecucin de una instruccin con la bsqueda del cdigo de
operacin, luego realiza la decodificacin y ejecucin de sta. A continuacin, efecta un
nuevo ciclo de bsqueda de cdigo de operacin, repitindose el ciclo.

Capturar
siguiente
instruccin

INICIO

Ejecutar
Instruccin

PARADA

Fig. 1 Ejecucin de instrucciones

Ejecucin de instrucciones
El CPU para poder ejecutar las instrucciones de manera secuencial tiene que saber en todo
momento en qu registro de la memoria est la siguiente instruccin a ejecutar. Para ello
cuenta con un registro especial denominado contador de programa (program counter) y que
suele tener el nombre abreviado PC, el cual tiene almacenada la direccin del registro de la
memoria que contiene la siguiente instruccin a ejecutar. Cada vez que el CPU capta una
instruccin, incrementa dicho contador, de manera que al finalizar la ejecucin de la
instruccin actual, capte la siguiente instruccin de la direccin de memoria inmediata
superior.
Para poder ejecutar una instruccin primero tiene que leerla de la memoria de programa y
almacenarla temporalmente dentro del CPU para decodificarla, para lo cual internamente
cuenta con un registro denominado registro de instrucciones (instruction register) y que
suele tener el nombre IR.
Adems de estos registros, tiene los registros de propsito general (general purpose registers),
cuyos contenidos son utilizados como operandos en la mayora de instrucciones con que
cuenta el CPU. Antiguamente los CPUs contaban con uno o dos de estos registros, a los
cuales se les denominaba acumuladores.

CAPITULO1Parte2rev21.doc

13

02/09/2014

También podría gustarte