top of page

En la programación de bajo nivel es preferible un programa independiente de posición a uno dependiente de posición (aun cuando el programa independiente de posición es de un 5% a 10% mas lento que el dependiente de posición). En un ?P MC6809 se cuenta con modos de direccionamiento relativo, relativo extendido e indexado relativo que facilita la elaboración de programas independientes de posición. En especial el indexado relativo del contador de programa (PCR) puede ser usado para apuntar a cualquier localidad relativa al programa no importando su posición en memoria. El PCR (indexado relativo del contador de programa) es una forma de direccionamiento indexado que permite el acceso a tablas dentro del espacio del programa en forma independiente de posición a través del uso de las instrucciones "carga dirección efectiva".

 

 Un programa que es independiente de posición tiene necesidad de utilizar localidades absolutas para dispositivos de E/S. En este caso se pueden grabar estas localidades en el stack como almacenamiento global en una rutina de inicialización antes de la ejecución del paquete independiente de posición. De esta forma en el programa se pueden llamar a los dispositivos de E/S como apuntadores como almacenamiento global, permitiendo que el hardware pueda ser fácilmente cambiado si se desea, ya que solo se necesita reescribir la pequeña rutina de inicialización para cada diferente configuración.

 

 Los datos temporales, globales y permanentes también deben estar disponibles en forma independiente de posición. Las instrucciones LEA permiten el acceso a datos, tablas o valores de texto en forma independiente de posición.

 

PROGRAMACIÓN REENTRANTE

 

 En sistemas que trabajan con interrupciones es posible que alguna interrupción utilice la subrutina que se estaba trabajando en el momento de la interrupción. En ese caso si el almacenamiento local y global se utiliza de manera arbitraria entonces en la interrupción se alterarían estas memorias y al regresar de la interrupción los resultados de la primer rutina serian erróneos. Por esto es necesario que el almacenamiento local se haga en distinto lugar cada vez que se entre en el modulo. Esto se logra usando el stack para transferir parámetros globales, resultados y para hacer el almacenamiento local.

 

PROGRAMACIÓN RECURSIVA

 

 La misma técnica que permite la programación reentrante, permite también la programación recursiva. Una subrutina recursiva se define como aquella que se llama así misma. Estas subrutinas son diseñadas para simplificar la solución de ciertos tipos de problemas que tienen una escritura de datos cuyos elementos pueden ser a su vez otra escritura o problema por resolver. En estos casos los parámetros pueden ser transferidos a través del stack como en el caso de los programas reentrantes. Un ejemplo muy simple de este tipo de programa se da en la solución de un modulo de transmisión serie por medio del adaptador interface de comunicaciones asinconas.

 

3.6 PROGRAMACIÓN DEL MICROPROCESADOR

bottom of page