BIBLIOTECAS DE MACROS.
1. MACROS.
“En el lenguaje de programación ensamblador”, una macro es un nombre que define un conjunto de instrucciones que serán sustituidas por la macro cuando el nombre de ésta aparezca en un programa (proceso denominado expansión de macros) en el momento de ensamblar el programa. Las instrucciones de macros se pueden guardar en el programa mismo o en un archivo separado que el programa pueda identificar.
Una macroinstrucción es una instrucción compleja, formada por otras instrucciones más sencillas. Esto permite la automatización de tareas repetitivas. Además tiene que estar almacenada, el término no se aplica a una serie de instrucciones escritas en la línea de comandos enlazadas unas con otras por redirección de sus resultados o para su ejecución consecutiva.
Las macros suelen almacenarse en el ámbito del propio programa que las utiliza y se ejecutan pulsando una combinación especial de teclas o un botón especialmente creado y asignado para tal efecto. La diferencia entre una macroinstrucción y un programa es que en las macroinstrucciones la ejecución es secuencial y no existe otro concepto del flujo de programa que por tanto, no puede bifurcarse.
Un ejemplo de macro, para colocar el cursor en alguna posición determinada de la pantalla es:
Posicion MACRO Fila, Columna
PUSH AX
PUSH BX
PUSH DX
MOV AH, 02H
MOV DH, Fila
MOV DL, Columna
MOV BH, 0
INT 10H
POP DX
POP BX
POP AX
ENDM
Para utilizar una macro solo es necesario llamarla por su nombre, como si fuera una instrucción mas del ensamblador, ya no son necesarias las directivas como en el caso de los procedimientos. Ejemplo:
Posicion 8, 6
IR A MENU PRINCIPAL
1.1. Ventajas y desventajas del uso de macros.
Si bien es cierto que las macros proporcionan mayor flexibilidad a la hora de programar, también es cierto que tienen algunas desventajas.
La siguiente es una lista de las principales ventajas y desventajas del uso de las macros.
Ventajas:
• Menor posibilidad de cometer errores por repetición.
• Mayor flexibilidad en la programación al permitir el uso de parámetros.
• Código fuente más compacto.
• Al ser más pequeño el código fuente, también es más fácil de leer por otros.
Desventajas:
• El código ejecutable se vuelve más grande con cada llamada a la macro.
• Las macros deben ser bien planeadas para evitar la redundancia de código.
1.2. Bibliotecas de macros.Una de las facilidades que ofrece el uso de las macros es la creación de bibliotecas, las cuales son grupos de macros que pueden ser incluidas en un programa desde un archivo diferente. La creación de estas bibliotecas es muy sencilla, únicamente tenemos que escribir un archivo con todas las macros que se necesitarán y guardarlo como archivo de texto.
Para llamar a estas macros solo es necesario utilizar la instrucción Include NombreDelArchivo, en la parte de nuestro programa donde escribiriamos normalmente las macros, esto es, al principio de nuestro programa
Suponiendo que se guardó el archivo de las macros con el nombre de MACROS.TXT la instrucción Include se utilizaría de la siguiente forma:
;Inicio del programa
Include MACROS.TXT
.MODEL SMALL
.DATA
;Aqui van los datos
.CODE
Inicio:
;Aqui se inserta el código del programa
.STACK
;Se define la pila
End Inicio;Termina nuestro programa
IR A MENU PRINCIPAL
1.3. Macros de aplicaciones.
Las macros son grupos de instrucciones que tienen un seguimiento cronológico usadas para economizar tareas; una macro no es más que un conjunto de instrucciones tales como «borrar archivo», «añadir registro», etc., y que se almacenan en una ubicación especial por ejemplo en Microsoft Access observamos que hay una zona para crear macros, una macro en Access trabajando para una base de datos podría ser un archivo que al llamarse desde otra instrucción: borrara los registros de un cliente o accionista, luego borrara ciertos registros en otras tablas, extraerá su información de un log, entre otras cosas.
El programador escribirá el nombre de la macro en cada uno de los lugares donde se requiera la aplicación de las instrucciones por ella representadas. La declaración se realiza una sola vez, pero la utilización o invocación a la macro (macrollamada) puede hacerse cuantas veces sea necesario. La utilización de macros posibilita la reducción del tamaño del código fuente, aunque el código objeto tiende a ser mayor que cuando se utilizan funciones.
2. INTERRUPCIONES.
Una interrupción es un estado en el cual el microprocesador detiene la ejecución de un programa para atender una petición especial solicitada por el propio programa o por un dispositivo físico conectado al microprocesador externamente. Las interrupciones fueron creadas para facilitar al programador el acceso a los diferentes dispositivos de la computadora (puertos de comunicaciones, terminales, impresoras, etc.).
De no existir interrupciones, la CPU debería de ir preguntando, cada cierto tiempo, a los dispositivos para ver si necesitan de su intervención y como se puede suponer, eso significaría lentitud, mucha lentitud.
2.1. Ejecución de una interrupción
Cuando durante la ejecución de un programa se produce una interrupción, el microprocesador realiza los siguientes pasos:
1.- Detiene la ejecución del programa
2.- Almacena los registros CS, IP y Banderas en la pila
3.- Modifica el CS y el IP para que apunten a la dirección donde se encuentra la rutina de interrupción.
4.- Ejecuta las instrucciones de la rutina de interrupción.
5.- Restablece usando la instrucción RETI los valores originales de los registros CS, IP y Banderas.
6.- Continua con la ejecución del programa en el punto donde fue interrumpido.
Las rutinas se almacenan en la memoria de la computadora cada vez que ésta es inicializada, a esto se le conoce como vector de interrupciones.
IR A MENU PRINCIPAL
2.2. Tipos de interrupciones.
El microprocesador puede atender dos tipos de interrupciones: interrupciones por software e interrupciones por hardware.
2.2.1. Interrupciones por software.
Las interrupciones por software son llamadas desde los programas y son proporcionadas por el sistema operativo (MS-DOS). Existen dos tipos de estas: las interrupciones del DOS y las interrupciones del BIOS (Basic Input Output System o Sistema Básico de Entrada/Salida). Estas interrupciones son invocadas con la instrucción INT del ensamblador. También son conocidas como “falsas interrupciones” ya que se producen como consecuencia de la ejecución de otra instrucción al no ser el hardware las que las produce.
Interrupciones del BIOS
Manejo de dispositivos periféricos
• INT 10H Manejo de la pantalla.
• INT 13H Manejo de unidades de disco.
• INT 14H Manejo de los puertos de comunicaciones(RS232).
• INT 15H Manejo de cinta magnética.
• INT 16H Manejo del teclado.
• INT 17H Manejo de la impresora.
Manejo del estado del equipo
• INT 11H Servicios de la lista de elementos de la computadora.
• INT 12H Servicios para el cálculo del tamaño de la memoria.
Servicios de fecha y hora
• INT 1AH Manejo del reloj.
Impresión de pantalla
• INT 5H Impresión de la información contenida en la pantalla.
Servicios especiales
• INT 18H Activación del lenguaje Interprete Basic de la ROM.
• INT 19H Activación de la rutina de arranque de la computadora.
IR A MENU PRINCIPAL
Interrupciones del DOS
• INT 20H Termina la ejecución de un programa.
• INT 22H Dirección de terminación. Guarda la dirección donde se transfiere el control cuando termina la ejecución del programa.
• INT 23H Dirección de la interrupción que se ejecuta cuando se presiona Ctrl-Break.
• INT 24H Manejo de errores críticos.
• INT 25H Lectura directa de sectores del disco.
• INT 26H Escritura directa de sectores del disco.
• INT 27H Terminar un programa y devolver el control al DOS sin borrar el programa de la memoria.
• INT 21H .
La mayoría de servicios ó funciones del sistema operativo MS-DOS se obtienen a través de la interrupción software 21H. Es por esto que se le denomina DOS-API: DOS-APPLICATION-PROGRAM-INTERFACE La INT 21H está compuesta por un grupo de funciones. Cuando se accede a la INT 21H, hay que indicar el número de función que queremos ejecutar. La llamada a la INT 21H se realizará como sigue:
- Introducimos en (AH) el número de función a la que deseamos acceder.
- En caso de que deseemos acceder a una sub-función dentro de una función, debemos indicarlo introduciendo en (AL) el número de esa sub-función.
- Llamar a la INT 21H.
Esta interrupción proporciona una gran cantidad de funciones, las cuales deben ser invocadas en conjunto con el registro AH.
1. Terminación de un programa.
2. Entrada de carácter con eco.
3. Salida a pantalla.
4. Entrada por el puerto serie.
5. Salida por el puerto serie.
6. Salida a la impresora.
7. E/S directa por pantalla.
8. Entrada directa de carácter sin eco.
9. Entrada de carácter sin eco.
10. Visualizar cadenas de caracteres.
11. Entrada desde el teclado.
12. Comprobación del estado de entrada.
13. Borrar registro de entrada.
14. Inicializar unidad de disco.
IR A MENU PRINCIPAL
2.2.2. Interrupciones por hardware.
Por otro lado, las interrupciones por Hardware son proporcionadas por el propio microprocesador y también existen dos tipos: interrupciones por hardware internas y las interrupciones por hardware externas.
Interrupciones internas de hardware .
Las interrupciones internas son invocadas por el microprocesador cuando se produce alguna operación incorrecta, como por ejemplo, un intento de dividir por cero o una transferencia de datos entre registros de diferentes longitudes. Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa. Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.
Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.
Aunque no podemos manejar directamente esta interrupción (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un “reloj virtual” actualizado continuamente gracias al contador del reloj interno. Unicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.
Interrupciones externas de hardware.
Las interrupciones externas son provocadas por los dispositivos periféricos conectados al microprocesador. Para lograr esto, a cada dispositivo periférico se le asigna una línea física de interrupción que lo comunica con el microprocesador por medio de un circuito integrado auxiliar, el cual se conoce como controlador programable de interrupciones (PIC).
Las interrupciones externas las generan los dispositivos periféricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores. No es posible desactivar a las interrupciones externas. Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vías de comunicación llamadas puertos.
IR A MENU PRINCIPAL
3. PROCEDIMIENTOS.
Un procedimiento es un conjunto de instrucciones a los que podemos dirigir el flujo de nuestro programa, y una vez terminada la ejecución de dichas instrucciones se devuelve el control a la siguiente linea a procesar del código que mando llamar al procedimiento. Los procedimientos nos ayudan a crear programas legibles y fáciles de modificar. Al momento de invocar a un procedimiento se guarda en la pila la dirección de la siguiente instrucción del programa para que, una vez transferido el flujo del programa y terminado el procedimiento, se pueda regresar a la linea siguiente del programa original (el que llam— al procedimiento).
Sintaxis de un procedimiento
Existen dos tipos de procedimientos, los intrasegmentos, que se encuentran en el mismo segmento de instrucciones y los intersegmentos que pueden ser almacenados en diferentes segmentos de memoria. Cuando se utilizan los procedimientos intrasegmentos se almacena en la pila el valor de IP y cuando se utilizan los intersegmentos se almacena el valor CS:IP.
Para desviar el flujo a un procedimiento (llamarlo) se utiliza la directiva:
CALL NombreDelProcedimiento
Las partes que componen a un procedimiento son:
• Declaración del procedimiento
• Código del procedimiento
• Directiva de regreso
• Terminación del procedimiento
Por ejemplo, si queremos una rutina que nos sume dos bytes, almacenados en AH y AL cada uno y guardar la suma en el registro BX:
Suma Proc Near ;Declaración del procedimiento
Mov Bx, 0 ;Contenido del procedimiento
Mov Bl, Ah
Mov Ah, 00
Add Bx, Ax
Ret ;Directiva de regreso
Suma Endp ;Declaración de final del procedimiento
En la declaración la primera palabra, Suma, corresponde al nombre de nuestro procedimiento, Proc lo declara como tal y la palabra Near le indica al MASM que el procedimiento es intrasegmento. La directiva Ret carga la dirección IP almacenada en la pila para regresar al programa original, por último, la directiva Suma Endp indica el final del procedimiento.
Para declarar un procedimiento intersegmento sustituimos la palabra Near por la palabra FAR.
El llamado de este procedimiento se realiza de la siguiente forma:
Call Suma
Las macros ofrecen una mayor flexibilidad en la Programación comparadas con los procedimientos, pero no por ello se dejarán de utilizar estos últimos.
8. Conclusión
Tal vez no sea el lenguaje de programación más sencillo de aprender, pero el lenguaje ensamblador es y seguirá siendo una de las herramientas de programación más utilizadas por todas aquellas personas que desean tener un mayor grado de comprensión sobre el funcionamiento a nivel de dispositivo de una computadora personal.
El lenguaje ensamblador no está relegado únicamente a computadoras antiguas con sistemas operativos en modo texto como el MS-DOS. Existe en la actualidad una gran cantidad de programas ensambladores que nos permiten programar en ambientes operativos gráficos como Windows y Linux.
A lo largo del presente trabajo se estudiaron tres conceptos que son fundamentales para realizar una buena programación en lenguaje ensamblador:
Podemos concluir que las macros nos proporcionan la posibilidad de simplificar mucho el código de los programas, pues basta sencillamente con mandar llamar la macro a determinada sección del código para realizar una tarea específica.
Las interrupciones son absolutamente necesarias pues como se mencionó anteriormente, de no existir las interrupciones, la CPU debería de ir preguntando, cada cierto tiempo, a los dispositivos para ver si necesitan de su intervención y como consecuencia, eso significaría muchisima lentitud. Hay diferentes tipos de interrupciones, y mereció una especial atención la interrupción 21H, por las numerosas aplicaciones que tiene para realizar diferentes cosas.
Y los procedimientos nos ayudan a crear programas legibles y fáciles de modificar.
“En el lenguaje de programación ensamblador”, una macro es un nombre que define un conjunto de instrucciones que serán sustituidas por la macro cuando el nombre de ésta aparezca en un programa (proceso denominado expansión de macros) en el momento de ensamblar el programa. Las instrucciones de macros se pueden guardar en el programa mismo o en un archivo separado que el programa pueda identificar.
Una macroinstrucción es una instrucción compleja, formada por otras instrucciones más sencillas. Esto permite la automatización de tareas repetitivas. Además tiene que estar almacenada, el término no se aplica a una serie de instrucciones escritas en la línea de comandos enlazadas unas con otras por redirección de sus resultados o para su ejecución consecutiva.
Las macros suelen almacenarse en el ámbito del propio programa que las utiliza y se ejecutan pulsando una combinación especial de teclas o un botón especialmente creado y asignado para tal efecto. La diferencia entre una macroinstrucción y un programa es que en las macroinstrucciones la ejecución es secuencial y no existe otro concepto del flujo de programa que por tanto, no puede bifurcarse.
Un ejemplo de macro, para colocar el cursor en alguna posición determinada de la pantalla es:
Posicion MACRO Fila, Columna
PUSH AX
PUSH BX
PUSH DX
MOV AH, 02H
MOV DH, Fila
MOV DL, Columna
MOV BH, 0
INT 10H
POP DX
POP BX
POP AX
ENDM
Para utilizar una macro solo es necesario llamarla por su nombre, como si fuera una instrucción mas del ensamblador, ya no son necesarias las directivas como en el caso de los procedimientos. Ejemplo:
Posicion 8, 6
IR A MENU PRINCIPAL
1.1. Ventajas y desventajas del uso de macros.
Si bien es cierto que las macros proporcionan mayor flexibilidad a la hora de programar, también es cierto que tienen algunas desventajas.
La siguiente es una lista de las principales ventajas y desventajas del uso de las macros.
Ventajas:
• Menor posibilidad de cometer errores por repetición.
• Mayor flexibilidad en la programación al permitir el uso de parámetros.
• Código fuente más compacto.
• Al ser más pequeño el código fuente, también es más fácil de leer por otros.
Desventajas:
• El código ejecutable se vuelve más grande con cada llamada a la macro.
• Las macros deben ser bien planeadas para evitar la redundancia de código.
1.2. Bibliotecas de macros.Una de las facilidades que ofrece el uso de las macros es la creación de bibliotecas, las cuales son grupos de macros que pueden ser incluidas en un programa desde un archivo diferente. La creación de estas bibliotecas es muy sencilla, únicamente tenemos que escribir un archivo con todas las macros que se necesitarán y guardarlo como archivo de texto.
Para llamar a estas macros solo es necesario utilizar la instrucción Include NombreDelArchivo, en la parte de nuestro programa donde escribiriamos normalmente las macros, esto es, al principio de nuestro programa
Suponiendo que se guardó el archivo de las macros con el nombre de MACROS.TXT la instrucción Include se utilizaría de la siguiente forma:
;Inicio del programa
Include MACROS.TXT
.MODEL SMALL
.DATA
;Aqui van los datos
.CODE
Inicio:
;Aqui se inserta el código del programa
.STACK
;Se define la pila
End Inicio;Termina nuestro programa
IR A MENU PRINCIPAL
1.3. Macros de aplicaciones.
Las macros son grupos de instrucciones que tienen un seguimiento cronológico usadas para economizar tareas; una macro no es más que un conjunto de instrucciones tales como «borrar archivo», «añadir registro», etc., y que se almacenan en una ubicación especial por ejemplo en Microsoft Access observamos que hay una zona para crear macros, una macro en Access trabajando para una base de datos podría ser un archivo que al llamarse desde otra instrucción: borrara los registros de un cliente o accionista, luego borrara ciertos registros en otras tablas, extraerá su información de un log, entre otras cosas.
El programador escribirá el nombre de la macro en cada uno de los lugares donde se requiera la aplicación de las instrucciones por ella representadas. La declaración se realiza una sola vez, pero la utilización o invocación a la macro (macrollamada) puede hacerse cuantas veces sea necesario. La utilización de macros posibilita la reducción del tamaño del código fuente, aunque el código objeto tiende a ser mayor que cuando se utilizan funciones.
2. INTERRUPCIONES.
Una interrupción es un estado en el cual el microprocesador detiene la ejecución de un programa para atender una petición especial solicitada por el propio programa o por un dispositivo físico conectado al microprocesador externamente. Las interrupciones fueron creadas para facilitar al programador el acceso a los diferentes dispositivos de la computadora (puertos de comunicaciones, terminales, impresoras, etc.).
De no existir interrupciones, la CPU debería de ir preguntando, cada cierto tiempo, a los dispositivos para ver si necesitan de su intervención y como se puede suponer, eso significaría lentitud, mucha lentitud.
2.1. Ejecución de una interrupción
Cuando durante la ejecución de un programa se produce una interrupción, el microprocesador realiza los siguientes pasos:
1.- Detiene la ejecución del programa
2.- Almacena los registros CS, IP y Banderas en la pila
3.- Modifica el CS y el IP para que apunten a la dirección donde se encuentra la rutina de interrupción.
4.- Ejecuta las instrucciones de la rutina de interrupción.
5.- Restablece usando la instrucción RETI los valores originales de los registros CS, IP y Banderas.
6.- Continua con la ejecución del programa en el punto donde fue interrumpido.
Las rutinas se almacenan en la memoria de la computadora cada vez que ésta es inicializada, a esto se le conoce como vector de interrupciones.
IR A MENU PRINCIPAL
2.2. Tipos de interrupciones.
El microprocesador puede atender dos tipos de interrupciones: interrupciones por software e interrupciones por hardware.
2.2.1. Interrupciones por software.
Las interrupciones por software son llamadas desde los programas y son proporcionadas por el sistema operativo (MS-DOS). Existen dos tipos de estas: las interrupciones del DOS y las interrupciones del BIOS (Basic Input Output System o Sistema Básico de Entrada/Salida). Estas interrupciones son invocadas con la instrucción INT del ensamblador. También son conocidas como “falsas interrupciones” ya que se producen como consecuencia de la ejecución de otra instrucción al no ser el hardware las que las produce.
Interrupciones del BIOS
Manejo de dispositivos periféricos
• INT 10H Manejo de la pantalla.
• INT 13H Manejo de unidades de disco.
• INT 14H Manejo de los puertos de comunicaciones(RS232).
• INT 15H Manejo de cinta magnética.
• INT 16H Manejo del teclado.
• INT 17H Manejo de la impresora.
Manejo del estado del equipo
• INT 11H Servicios de la lista de elementos de la computadora.
• INT 12H Servicios para el cálculo del tamaño de la memoria.
Servicios de fecha y hora
• INT 1AH Manejo del reloj.
Impresión de pantalla
• INT 5H Impresión de la información contenida en la pantalla.
Servicios especiales
• INT 18H Activación del lenguaje Interprete Basic de la ROM.
• INT 19H Activación de la rutina de arranque de la computadora.
IR A MENU PRINCIPAL
Interrupciones del DOS
• INT 20H Termina la ejecución de un programa.
• INT 22H Dirección de terminación. Guarda la dirección donde se transfiere el control cuando termina la ejecución del programa.
• INT 23H Dirección de la interrupción que se ejecuta cuando se presiona Ctrl-Break.
• INT 24H Manejo de errores críticos.
• INT 25H Lectura directa de sectores del disco.
• INT 26H Escritura directa de sectores del disco.
• INT 27H Terminar un programa y devolver el control al DOS sin borrar el programa de la memoria.
• INT 21H .
La mayoría de servicios ó funciones del sistema operativo MS-DOS se obtienen a través de la interrupción software 21H. Es por esto que se le denomina DOS-API: DOS-APPLICATION-PROGRAM-INTERFACE La INT 21H está compuesta por un grupo de funciones. Cuando se accede a la INT 21H, hay que indicar el número de función que queremos ejecutar. La llamada a la INT 21H se realizará como sigue:
- Introducimos en (AH) el número de función a la que deseamos acceder.
- En caso de que deseemos acceder a una sub-función dentro de una función, debemos indicarlo introduciendo en (AL) el número de esa sub-función.
- Llamar a la INT 21H.
Esta interrupción proporciona una gran cantidad de funciones, las cuales deben ser invocadas en conjunto con el registro AH.
1. Terminación de un programa.
2. Entrada de carácter con eco.
3. Salida a pantalla.
4. Entrada por el puerto serie.
5. Salida por el puerto serie.
6. Salida a la impresora.
7. E/S directa por pantalla.
8. Entrada directa de carácter sin eco.
9. Entrada de carácter sin eco.
10. Visualizar cadenas de caracteres.
11. Entrada desde el teclado.
12. Comprobación del estado de entrada.
13. Borrar registro de entrada.
14. Inicializar unidad de disco.
IR A MENU PRINCIPAL
2.2.2. Interrupciones por hardware.
Por otro lado, las interrupciones por Hardware son proporcionadas por el propio microprocesador y también existen dos tipos: interrupciones por hardware internas y las interrupciones por hardware externas.
Interrupciones internas de hardware .
Las interrupciones internas son invocadas por el microprocesador cuando se produce alguna operación incorrecta, como por ejemplo, un intento de dividir por cero o una transferencia de datos entre registros de diferentes longitudes. Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa. Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.
Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.
Aunque no podemos manejar directamente esta interrupción (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un “reloj virtual” actualizado continuamente gracias al contador del reloj interno. Unicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.
Interrupciones externas de hardware.
Las interrupciones externas son provocadas por los dispositivos periféricos conectados al microprocesador. Para lograr esto, a cada dispositivo periférico se le asigna una línea física de interrupción que lo comunica con el microprocesador por medio de un circuito integrado auxiliar, el cual se conoce como controlador programable de interrupciones (PIC).
Las interrupciones externas las generan los dispositivos periféricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores. No es posible desactivar a las interrupciones externas. Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vías de comunicación llamadas puertos.
IR A MENU PRINCIPAL
3. PROCEDIMIENTOS.
Un procedimiento es un conjunto de instrucciones a los que podemos dirigir el flujo de nuestro programa, y una vez terminada la ejecución de dichas instrucciones se devuelve el control a la siguiente linea a procesar del código que mando llamar al procedimiento. Los procedimientos nos ayudan a crear programas legibles y fáciles de modificar. Al momento de invocar a un procedimiento se guarda en la pila la dirección de la siguiente instrucción del programa para que, una vez transferido el flujo del programa y terminado el procedimiento, se pueda regresar a la linea siguiente del programa original (el que llam— al procedimiento).
Sintaxis de un procedimiento
Existen dos tipos de procedimientos, los intrasegmentos, que se encuentran en el mismo segmento de instrucciones y los intersegmentos que pueden ser almacenados en diferentes segmentos de memoria. Cuando se utilizan los procedimientos intrasegmentos se almacena en la pila el valor de IP y cuando se utilizan los intersegmentos se almacena el valor CS:IP.
Para desviar el flujo a un procedimiento (llamarlo) se utiliza la directiva:
CALL NombreDelProcedimiento
Las partes que componen a un procedimiento son:
• Declaración del procedimiento
• Código del procedimiento
• Directiva de regreso
• Terminación del procedimiento
Por ejemplo, si queremos una rutina que nos sume dos bytes, almacenados en AH y AL cada uno y guardar la suma en el registro BX:
Suma Proc Near ;Declaración del procedimiento
Mov Bx, 0 ;Contenido del procedimiento
Mov Bl, Ah
Mov Ah, 00
Add Bx, Ax
Ret ;Directiva de regreso
Suma Endp ;Declaración de final del procedimiento
En la declaración la primera palabra, Suma, corresponde al nombre de nuestro procedimiento, Proc lo declara como tal y la palabra Near le indica al MASM que el procedimiento es intrasegmento. La directiva Ret carga la dirección IP almacenada en la pila para regresar al programa original, por último, la directiva Suma Endp indica el final del procedimiento.
Para declarar un procedimiento intersegmento sustituimos la palabra Near por la palabra FAR.
El llamado de este procedimiento se realiza de la siguiente forma:
Call Suma
Las macros ofrecen una mayor flexibilidad en la Programación comparadas con los procedimientos, pero no por ello se dejarán de utilizar estos últimos.
8. Conclusión
Tal vez no sea el lenguaje de programación más sencillo de aprender, pero el lenguaje ensamblador es y seguirá siendo una de las herramientas de programación más utilizadas por todas aquellas personas que desean tener un mayor grado de comprensión sobre el funcionamiento a nivel de dispositivo de una computadora personal.
El lenguaje ensamblador no está relegado únicamente a computadoras antiguas con sistemas operativos en modo texto como el MS-DOS. Existe en la actualidad una gran cantidad de programas ensambladores que nos permiten programar en ambientes operativos gráficos como Windows y Linux.
A lo largo del presente trabajo se estudiaron tres conceptos que son fundamentales para realizar una buena programación en lenguaje ensamblador:
Podemos concluir que las macros nos proporcionan la posibilidad de simplificar mucho el código de los programas, pues basta sencillamente con mandar llamar la macro a determinada sección del código para realizar una tarea específica.
Las interrupciones son absolutamente necesarias pues como se mencionó anteriormente, de no existir las interrupciones, la CPU debería de ir preguntando, cada cierto tiempo, a los dispositivos para ver si necesitan de su intervención y como consecuencia, eso significaría muchisima lentitud. Hay diferentes tipos de interrupciones, y mereció una especial atención la interrupción 21H, por las numerosas aplicaciones que tiene para realizar diferentes cosas.
Y los procedimientos nos ayudan a crear programas legibles y fáciles de modificar.
No hay comentarios:
Publicar un comentario