Está en la página 1de 34

En este apartado veremos dos temas importantes a tratar los

cuales son Métodos de direccionamiento del procesador y


conjunto de instrucciones y el tema de Técnicas de
sincronización de datos.
Para entender un poco mas de estos temas a continuación se
habla de cada uno a detalle.
Unidad 2.
Las computadoras utilizan técnicas de modo de
direccionamiento con el fin de acomodar una o ambas de las
siguientes provisiones:

1. Dar versatilidad de programación al usuario proporcionando


facilidades tales como indicadores, contadores, índices y
relocalizadores de programa.
2. Reducir el número de bits en el campo de dirección de la
instrucción.
Los modos de direccionamiento se pueden
dividir en siete grandes grupos que son:

1. Direccionamiento a registro.
2. Direccionamiento inmediato.
3. Direccionamiento directo.
4. Direccionamiento indirecto a registro.
5. Direccionamiento relativo a base.
6. Direccionamiento indexado directo.
7. Direccionamiento indexado a base.

El procesador determina cual de los siete modos de direccionamiento se


usara mediante la examinación del contenido del campo de modo dentro
de la instrucción.
MODO IMPLICITO.

En este modo se especifican los operandos en forma implícita en


la definición de la instrucción.
Por ejemplo, la instrucción "complementar acumulador" es una
instrucción de modo implícito porque el operando en el registro
de acumulador esta implícito en la definición de la instrucción.
De hecho todas las instrucciones de referencia a registro que
utilizan un acumulador son instrucciones de modo implícito.
Las instrucciones de dirección cero en una computadora
organizada con pila son instrucciones de modo implícito porque
esta implícito que los operandos están en la parte superior de la
pila.
MODO INMEDIATO.
En este modo se especifica el operando en la instrucción misma.
En otras palabras, una instrucción de modo inmediato tiene un
campo operando, en lugar de una campo de dirección. Un
campo de operando contiene el operando real que se va a usar
junto con la operación especificada en la instrucción. Las
instrucciones de modo inmediato son útiles para inicializar
registros en un valor constante.
El campo de dirección de una instrucción puede especificar una
palabra de memoria o un registro de procesador. Cuando el
campo de dirección especifica un registro de procesador se dice
que la instrucción esta en modo de registro.
MODO DE REGISTRO.

En este modo, los operandos están en registros que residen


dentro de la CPU. Se selecciona el registro particular de un
campo de registro en la instrucción. Un campo k bits puede
especificar cualquiera de 2 a la k registros.
MODO INDIRECTO POR REGISTRO.
En este modo la instrucción especifica un registro en la CPU
cuyo contenido proporciona la dirección del operando en la
memoria. En otras palabras, el registro seleccionado contiene
la dirección del operando en lugar del operando mismo.
Antes de utilizar una instrucción de modo indirecto por
registro, el programador debe asegurarse de que la dirección
de memoria del operando esta colocada en el registro del
procesador con una instrucción previa. Entonces una
referencia al registro es equivalente a especificar una
dirección de memoria. La ventaja de una instrucción de modo
de registro indirecto es que el campo de dirección de la
instrucción utiliza menos bits para seleccionar un registro de
los que necesitaría para especificar una dirección de memoria
en forma directa.
MODO DE DIRECCIONAMIENTO DIRECTO.

En este modo la dirección efectiva es igual a la parte de dirección


de la instrucción. El operando reside en memoria y su dirección
la proporciona en forma directa el campo de dirección de la
instrucción. En una instrucción de tipo brinco el campo de
dirección especifica la dirección de transferencia de control del
programa real.
MODO DE DIRECCIONAMIENTO INDIRECTO.
En este modo, el campo de dirección de la instrucción
proporciona la dirección en que se almacena la dirección efectiva
en la memoria. El control recupera la instrucción de la memoria y
utiliza su parte de dirección para accesar la memoria una vez mas
con el fin de leer la dirección efectiva.
Unos cuantos modos de direccionamiento requieren que el campo
de dirección de la instrucción se sume al contenido de un registro
especifico en la CPU. En estos modos la dirección efectiva se
obtiene del calculo siguiente:
Dirección efectiva = Parte de la instrucción + El contenido de
registro CPU.
EL registro de CPU utilizado en el calculo puede ser el contador de
programa, un registro de índice o un registro base. En cualquier
caso tenemos un modo de direccionamiento diferente que se
utiliza para una aplicación distinta.
MODO DE DIRECCIONAMIENTO INDEXADO.
En este modo el contenido de un registro índice se suma a la parte
de dirección de la instrucción para obtener la dirección efectiva. El
registro índice es un registro CPU especial que contiene un valor
índice. Un campo de dirección de la instrucción define
la dirección inicial del arreglo de datos en la memoria. Cada
operando del arreglo se almacena en la memoria en relación con la
dirección inicial.
La distancia entre la dirección inicial y la dirección del operando es
el valor del índice almacenado en el registro de índice. Cualquier
operando en el arreglo puede accesarse con la misma instrucción
siempre y cuando el registro índice contenga el valor de índice
correcto.
El registro índice puede incrementarse para facilitar el acceso a
operandos consecutivos. Nótese que si una instrucción de tipo
índice no incluye un campo de dirección en su formato, la
instrucción se convierte al modo de operación de indirecto por
registro.
Algunas computadoras dedican un registro de CPU para que
funcione exclusivamente como un registro índice. De manera
implícita este registro participa cuando se utiliza una instrucción
de modo índice. En las computadoras con muchos registros de
procesador, cualquiera de los registros de la CPU pueden
contener el numero de índice. En tal caso, el registro debe estar
especificado en forma explícita en una campo de registro dentro
del formato de instrucción.
MODO DE DIRECCIONAMIENTO DE
REGISTRO BASE.
En este modo, el contenido de un registro base se suma a la parte
de dirección de la instrucción para obtener la dirección efectiva.
Esto es similar al modo de direccionamiento indexado, excepto en
que el registro se denomina ahora registro base, en lugar de
registro índice. La diferencia entre los dos modos esta en la manera
en que se usan mas que en la manera en que se calculan. Se
considera que un registro base contiene una dirección base y que
el campo de dirección de la instrucción proporciona un
desplazamiento en relación con esta dirección base. El modo de
direccionamiento de registro base se utiliza en las computadoras
para facilitar la localización de los programas en memoria.
INSTRUCCIONES DEL PROCESADOR.

Las instrucciones de un procesador se pueden agrupar en tres


tipos:
Instrucciones de Transferencia
Instrucciones de Operación
Instrucciones de Control

Instrucciones de Transferencia:

Como su nombre lo indica, este grupo de instrucciones se utiliza


para efectuar transferencia de datos entre los registros de la
CPU, la memoria y los puertos de E/S.
Instrucciones de Operación:

Estas instrucciones se emplean para realizar operaciones aritméticas


y lógicas entre los registros del procesador y la memoria.
Estas operaciones incluyen suma, resta, incremento decremento,
complemento, comparación y corrimiento.

Instrucciones de Control

En el lenguaje Ensamblador y en general en cualquier lenguaje de


programación las instrucciones de control juegan un papel muy
importante en el flujo de un programa.
Su función consiste en alterar el flujo normal del programa, según
el estado de ciertos registros del sistema que indican alguna
condición después de ejecutar una instrucción. Con este tipo de
instrucciones es posible tomar el control del flujo del programa.
TEMPORIZACIÓN DEL SISTEMA.
El elemento fundamental del temporizador es un contador binario,
encargado de contar los pulsos suministrados por algún circuito
oscilador, con una base de tiempo estable y conocida. El simple
hecho de contar pulsos de una duración fija nos permite medir el
tiempo con precisiones asombrosas, determinadas
fundamentalmente por la estabilidad del generador de pulsos y por
los circuitos electrónicos del contador binario. Sin embargo, un
contador útil debe tener más elementos que permitan sacar
provecho a ése circuito básico, es por ello que los
microcontroladores utilizan un conjunto de circuitos auxiliares
para poder manejar, con cierto nivel de libertad, las características
básicas del contador binario y convertir el conjunto en un
temporizador/contador programable.
Los temporizadores se utilizan en hacer una lista completa es
prácticamente imposible, pero algunos ejemplos de su aplicación,
nos ayudarán a adentrarnos en los entresijos de su diseño y sacarle
provecho a sus potencialidades.

Medición de tiempo
División de frecuencia.
Medición de periodo y frecuencia
Conteo de eventos
Base de tiempo para otros periféricos
USART
PWM
Watch Dog
CARACTERÍSTICAS.
En el mundo del diseño digital, los temporizadores constituyen
periféricos muy útiles. Se diseñan con ciertas características que
determinan el uso que podemos darle a un temporizador, veamos
algunas:

Longitud del contador: Los más comunes son aquellos que tienen 8
ó 16 bits, determina la cantidad máxima de pulsos que se pueden
contar.
Lectura/escritura: En general, los temporizadores pueden ser
escritos o leídos por el procesador del microcontrolador. En
algunos casos, donde el temporizador está vinculado a algún
periférico muy específico, esta opción puede no existir o estar
limitada.
CARACTERÍSTICAS.
Modos de trabajo: Existen, en principio dos: contador y
temporizador. Como contador, se cuentan los pulsos desde una
fuente externa al microcontrolador. Los pulsos contados pueden
tener período variable. Como temporizador, se cuentan los pulsos
suministrados por una fuente estable y conocida, que puede ser
externa, o alguna fuente generada internamente por el
microcontrolador.
Forma de conteo: La forma típica es el conteo ascendente, sin
embargo, existen contadores con la opción de configurar el modo de
conteo, sea éste ascendente, descendente o de otro tipo específico.
Configuración de activación por frente: Permite establecer cuando se
produce el conteo, si en el frente de subida del reloj o en el frente de
caída del mismo.
CARACTERÍSTICAS.

Configuración del reloj: En la mayoría de los casos la fuente de


reloj es configurable. Incluso existen microcontroladores con
abundante variedad de formas de configurar el reloj, de modo que
se puedan obtener distintos tipos de bases de tiempo.
Interrupciones: En la mayoría de casos, los temporizadores tienen
interrupciones asociadas, con el objetivo de notificar al procesador
que ha ocurrido el cruce por cero o algún valor específico en el
registro de conteo.
Características especiales: Muchos microcontroladores tienen
temporizadores especializados para trabajar de conjunto con
algunos de sus periféricos, o para ser utilizados en aplicaciones
específicas.
La estructura básica de un temporizador/contador.

En el esquema simplificado podemos observar que el contador


está compuesto por tres bloques fundamentales:
La estructura básica de un temporizador/contador.
Contador binario: es el elemento básico del temporizador/contador y su
misión es contar los pulsos del reloj. Hay dos propiedades esenciales
a tener en cuenta, respecto a este componente: la cantidad de pulsos
que puede contar y la posibilidad de controlar el sentido del conteo,
sea ascendente o descendente.

Circuitos de configuración y control: constituyen la interfaz entre el


contador binario y los circuitos externos. Es uno de los elementos
que da valor añadido al simple contador binario.

Circuitos especializados de salida: Se utilizan para notificar, a otro


elemento del sistema, sobre el estado del temporizador o acerca de
la ocurrencia de un determinado evento.
Estado de espera
Cuando se conectan tarjetas al bus de la PC, un problema común
es igualar la velocidad de los ciclos del bus con la de las tarjetas.
Es común que una tarjeta sea más lenta que el bus. Así, el bus de
la PC esta diseñado para resolver este problema. La señal READY
del bus se puede usar para extender la longitud del ciclo del bus
para igualar una tarjeta lenta o parar el bus del sistema hasta que
se sincronice con el ciclo de la tarjeta.

Los ciclos del bus del 8088 normalmente son de cuatro pulsos y se
describen por T1 hasta T4. En algunos ciclos el hardware de la
PC, automáticamente inserta un pulso ocioso extra llamado TW.
La señal READY se usa para insertar estados nuevos o adicionales
de espera. Debido a que los diferentes ciclos del bus requieren
distintos tiempos, la señal READY se debe controlar de manera
diferente
Generación de estados de espera en ciclos de
bus de memoria
El hardware de la PC no inserta estados de espera en los ciclos de
lectura o escritura a memoria, sino que esto lo hace la tarjeta
usando la señal READY. La figura ilustra las señales de tiempo
necesarias para generar un estado de espera para un ciclo de
lectura o escritura a memoria.
Tiempos de un estado de espera para ciclos de lectura o escritura a memoria.
Los circuitos de la tarjeta madre muestran la señal READY en el
flanco de subida del tiempo T2. Esta señal debe ser valida (activo
alto) 75 nanosegundos antes del flanco de subida de T2 para que
no se genere un estado de espera. Si se requiere un estado de
espera, la señal READY debe ser valida (activo bajo) 60
nanosegundos antes del flanco de subida de T2. Si la señal
READY se mantiene en bajo hasta el flanco de subida del
siguiente pulso, se inserta un estado de espera adicional.

Para las operaciones de lectura y escritura de E/S también se usa


la señal READY, y los tiempos son los mismos que para acceso a
memoria, excepto que la señal READY se muestrea en T3.
Generación de estados de espera en ciclos de
bus de DMA

La PC automáticamente inserta un estado de espera en todos los


ciclos de DMA en los canales 1, 2 y 3. No se insertan estados de
espera en el canal 0; sólo se usa para soportar el refresco de
memoria y no esta disponible para funciones normales de DMA.
Para asegurar que un estado de espera adicional se inserta en el
ciclo de DMA, la señal READY debe estar en bajo 135
nanosegundos antes del flanco de bajada del estado SW1. Para
asegurar que no se inserta un estado de espera adicional, la señal
READY debe estar en alto 115 nanosegundos antes del flanco de
bajada del siguiente pulso S.
Interrupciones hardware
Ocurren cuando un dispositivo necesita atención del
procesador y genera una señal eléctrica en la línea IRQ que
tiene asignada. Esta señal es recogida y procesada por el
controlador de excepciones PIC antes de ser enviada al
procesador, lo que puede realizarse de dos formas, según el tipo
de interrupción sea enmascarable o no enmascarable.

Interrupción enmascarable significa que, bajo control del


software, el procesador puede aceptar o ignorar (enmascarar)
la señal de interrupción.

Interrupción no enmascarable significa que la interrupción no


puede ser deshabilitada por software. Este tipo de
interrupciones ocurren cuando se recibe una señal en la patilla
NMI del procesador.
Interrupciones por software
También se denomina interrupción a las llamadas al sistema
operativo mediante una instrucción, normalmente de
Entrada/Salida.

Una interrupción por software, se prevé en qué momento de la


ejecución de un programa sucederá. En general actúa de la
siguiente manera:

. Un programa que se venía ejecutando luego de su instrucción I5,


llama al Sistema Operativo, por ejemplo para leer un archivo de
disco.
. A tal efecto, luego de I5 existe en el programa, la instrucción de
código máquina CD21, simbolizada INT 21 en Asembler, que
realiza el requerimiento del paso 1. Puesto que no puede seguir le
ejecución de la instrucción I6 y siguientes del programa hasta que
no se haya leído el disco y esté en memoria principal dicho archivo,
virtualmente el programa se ha interrumpido, siendo, además, que
luego de INT 21, las instrucciones que se ejecutarán no serán del
programa, sino del Sistema Operativo.
. La ejecución de INT 21 permite hallar la subrutina del SO.
. Se ejecuta la subrutina del SO que prepara la lectura del disco.
. Luego de ejecutarse la subrutina del SO, y una vez que se haya
leído el disco y verificado que la lectura es correcta, el SO ordenará
reanudar la ejecución del programa auto interrumpido en espera.
. La ejecución del programa se reanuda.
Con todo lo visto anterior se llega a la conclusión que
los temas que se han tratado son importantes para el
estudio de las personas y conozcan un poco mas de
los temas.
Con esta investigación se espera que sirva para
investigaciones futuras.
http://akimpech.izt.uam.mx/Web_jr/ami211.htm
http://es.wikipedia.org/wiki/Interrupci%C3%B3n
http://sopa.dis.ulpgc.es/ii-
dso/leclinux/interrupciones/int_hard/LEC3_INT_HARD.pdf
http://sopa.dis.ulpgc.es/ii-
dso/leclinux/interrupciones/system_call/LEC2_INT_SOFT.pdf

También podría gustarte