Está en la página 1de 5

TRABAJO No.

5
PROGRAMACIÓN CON SUBRUTINAS EN LENGUAJE ENSAMBLADOR
OBJETIVO
Realizar la programación con subrutinas utilizando las principales instrucciones de
programación en lenguaje ensamblador, así como conocer el entorno de programación de Microchip MLAB
IDE.

MARCO TEÓRICO
1. Información relacionada a las subrutinas.
En el contexto del lenguaje ensamblador se define una subrutina como una porción de código que
realiza una operación en base a un conjunto de valores dados como parámetros de forma independiente al
resto del programa y que puede ser invocado desde cualquier lugar del código, incluso desde dentro de ella
misma.
La ejecución de subrutinas tiene las siguientes ventajas:
 Evita código redundante. Durante el diseño de un programa suelen existir ciertos cálculos que deben
realizarse en diferentes lugares del código. La alternativa a replicar las instrucciones es encapsularlas
en una subrutina e invocar esta cada vez que sea necesario lo cual se traduce en código más
compacto.
 Facilita la descomposición de tareas. La descomposición de tareas complejas en secuencias de
subtareas más simples facilita enormemente el desarrollo de programas. Esta técnica se suele aplicar
de forma sucesiva en lo que se denomina “diseño descendente” de programas. Cada subtarea se
implementa como una rutina.
 Facilita el encapsulado de código. El agrupar una operación y sus datos en una subrutina y
comunicarse con el resto de un programa a través de sus parámetros y resultados, hace que, si en
algún momento se cambia su implementación interna, el resto del programa no requiera cambio
alguno.

Además de estas ventajas, el encapsulado de código también facilita la reutilización de su


funcionalidad en más de un programa mediante el uso de “bibliotecas”. Una biblioteca de funciones es un
conjunto de subrutinas que realizan cálculos muy comunes en la ejecución de programas y que pueden ser
utilizados por éstos. Java es un ejemplo de lenguaje que dispone de bibliotecas de clases que en su interior
ofrecen multitud de métodos.
Instrucciones de llamada y retorno de una subrutina
En ensamblador la llamada a una subrutina se realiza mediante la instrucción
CALL
cuyo único operando es la dirección de memoria, generalmente una etiqueta, en la que comienza su
código. Tras ejecutar esta instrucción el procesador continúa ejecutando la primera instrucción de la
subrutina hasta que encuentra la instrucción
RET
que no tiene operandos y transfiere la ejecución a la instrucción siguiente al
CALL
que inició el proceso.

2. Bancos de memoria del PIC16F887.


Toda la memoria de datos está organizada en 4 bancos numerados: 0, 1, 2 y 3. Para seleccionar un
banco, se debe hacer uso de los bits del registro STATUS denominados IRP, RP1 y RP0.
Cada banco se extiende hasta la dirección de memoria 7Fh (128 bytes). Las posiciones inferiores de
cada banco están reservadas para los registros de funciones especiales, a continuación de estos, se ubican los
registros de propósito general, implementado como RAM estática.
Figura 1. Memoria de datos
3. Instrucciones de programación en lenguaje ensamblador del PIC16F887.

REGISTROS

De propósito general De funciones especiales


Se utilizan para almacenar los datos Son también parte de la memoria RAM. A
temporales y los resultados creados durante diferencia de los registros de propósito general,
el funcionamiento. Como el su propósito es predeterminado durante el
microcontrolador no es nada creativo, es proceso de fabricación y no se pueden cambiar.
necesario especificar la dirección de un
registro de propósito general y asignarle esa
función. Como los bits están conectados a los circuitos
particulares en el chip (convertidor A/D,
Se debe crear un programa simple para módulo de comunicación serial, etc), cualquier
incrementar el valor de este registro por 1, cambio de su contenido afecta directamente al
después de que cada producto haya pasado funcionamiento del microcontrolador o de
por el sensor. Ahora el microcontrolador alguno de los circuitos.
puede ejecutar el programa ya que sabe qué
es y dónde está la suma que se va a
incrementar.

En la siguiente tabla se muestra un resumen del conjunto de instrucciones donde se pueden observar
los mnemónicos, la explicación, el número de ciclos, el código de máquina y los bits afectados del registro
STATUS para cada una de las instrucciones.
Tabla 1. Resumen de instrucciones

Como podemos observar en la tabla, las instrucciones se pueden clasificar en tres grupos: Instrucciones
orientadas a byte, Instrucciones orientadas a bit e Instrucciones orientadas a literal y control.
La memoria de programa almacena todas las instrucciones del programa en ejecución, que estará
grabado de forma permanente. La información contenida en esta memoria se graba previamente mediante un
equipo físico denominado programador o grabador.
Está organizada en palabras de 14 bits cada una. Todas las instrucciones ocupan una posición de
memoria de programa.

También podría gustarte