Tema 3 Modularización - SLVany/Lenguajes-de-Interfaz GitHub Wiki
La modularización en ensamblador se refiere a la técnica de dividir el código en módulos o subrutinas más pequeñas y manejables, que pueden ser reutilizadas y organizadas de manera más eficiente. La modularización ayuda a mejorar la legibilidad del código, a facilitar el mantenimiento y la depuración, y a reducir la duplicación de código.
En ensamblador, los módulos se implementan utilizando subrutinas, que son secciones de código que realizan una tarea específica y pueden ser llamadas desde otras partes del programa. Las subrutinas se definen utilizando etiquetas y se invocan mediante instrucciones de llamada y retorno. La modularización en ensamblador es especialmente importante en programas grandes y complejos, donde la organización del código puede ser crítica para su comprensión y mantenimiento.
Además, la modularización en ensamblador también puede incluir la creación de bibliotecas o módulos externos, que pueden ser compartidos entre diferentes programas o proyectos. Estos módulos externos se pueden compilar por separado y luego vincularse con el programa principal durante el proceso de compilación, lo que permite una mayor reutilización de código y una mayor flexibilidad en el desarrollo de software.
3.1 Procedimientos
En programación de lenguajes de interfaces de usuario, los procedimientos son una parte importante del código. Estos procedimientos se utilizan para realizar una tarea específica, como responder a un evento o ejecutar una función. En el lenguaje ensamblador, los procedimientos son conocidos como subrutinas, y se utilizan de manera similar en la programación de bajo nivel.
En los lenguajes de interfaces de usuario, los procedimientos se pueden implementar como eventos, subrutinas o funciones. Los eventos son procedimientos que se ejecutan en respuesta a una acción del usuario, como hacer clic en un botón o seleccionar un elemento de una lista. En el lenguaje ensamblador, estos eventos se pueden implementar utilizando interrupciones, que son una forma de detener la ejecución del programa principal para atender una solicitud específica del usuario.
Las subrutinas son procedimientos que se llaman dentro de otros procedimientos para realizar una tarea específica. En los lenguajes de interfaces de usuario, las subrutinas se utilizan para organizar el código en secciones más manejables y fáciles de entender, y para evitar la repetición de código en varias partes de una aplicación. En el lenguaje ensamblador, las subrutinas se implementan utilizando etiquetas y saltos, lo que permite al programador desviar el flujo de ejecución del programa a una sección específica del código.
Las funciones son procedimientos que devuelven un valor en respuesta a un llamado. En los lenguajes de interfaces de usuario, las funciones se utilizan para realizar cálculos o tareas específicas y devolver un resultado útil. En el lenguaje ensamblador, las funciones se implementan de manera similar a las subrutinas, pero incluyen una instrucción de retorno que devuelve el valor calculado al programa principal.
Al tu crear tu procedimiento es necesario agregar en una linea el comando ret
el cual se utiliza para indicar el final de una subrutina o función. El término es una abreviatura de "return", que significa "regresar" en inglés.
Cuando se llama a una subrutina o función desde un programa principal, la dirección de retorno se almacena en la pila antes de que se ejecute la subrutina. La instrucción "ret" se utiliza para extraer la dirección de retorno de la pila y transferir el control de vuelta al punto donde se llamó a la subrutina o función. Un ejemplo de esto lo podemos ver a continuación:
3.2 Macros
Las macros son una característica muy útil en el ensamblado que nos permiten escribir bloques de código reutilizables.
Una macro es esencialmente un conjunto de instrucciones que se han definido una sola vez y que pueden ser llamadas varias veces desde diferentes partes del código. Una vez que se ha definido una macro, se puede llamar desde cualquier parte del programa y el código dentro de la macro se insertará en el programa en el lugar donde se realizó la llamada.
La sintaxis %macro y %endmacro es una forma de definir macros en el ensamblador 8086.
La sintaxis %macro se utiliza para iniciar la definición de una macro. La sintaxis es la siguiente:
%macro nombre_macro num_parametros
; Código que conforma la macro
%endmacro
La primera línea de la sintaxis %macro incluye el nombre de la macro que se está definiendo, seguido del número de parámetros que aceptará la macro. Después de la línea inicial, se escribe el código que conforma la macro.
Los parámetros se identifican utilizando un signo de porcentaje (%) seguido de un número que indica el orden en que se especificaron los parámetros. Por ejemplo, %1 representa el primer parámetro, %2 representa el segundo parámetro y así sucesivamente. Ya en codigo se ve algo asi:
%macro sum 2
mov ax, %1
add ax, %2
%endmacro
Dentro del código que conforma la macro, se pueden utilizar los parámetros especificados para realizar las operaciones necesarias. También se pueden utilizar otras instrucciones y registros para completar el código de la macro.
Una vez que se ha definido la macro utilizando la sintaxis %macro, se puede llamar a la macro desde cualquier parte del código utilizando el nombre de la macro. Los valores de los parámetros se especifican entre paréntesis y se separan por comas.
Cuando ocupemos llamar la macro solo deberiamos de poner el nombre de la macro y luego entre parentesis mandar sus parametros. Si quisieramos llamar la macro sum que hicimos de ejemplo simplemente necesitariamos poner en nuestro codigo: sum(10,5)
y con esto nos retornaria la suma de 10 y 5.