Referencias externas al módulo
Sirve para poder particionar un programa en varios archivos fuentes o módulos. Son imprescindibles si se hace un programa en alto nivel con procedimientos en assembler. Hay tres: PUBLIC, EXTRN e INCLUDE.- PUBLIC nombre[, nombre...]: Estos nombres simbólicos se escriben en el archivo objeto. Durante una sesión con el linker, los símbolos en diferentes módulos pero con los mismos nombres tendrán la misma dirección.
- EXTRN nombre:tipo [,nombre:tipo...]: Define una variable externa con el nombre y tipo (NEAR, FAR, BYTE, WORD, DWORD o ABS (número constante especificado con la directiva EQU o =)) especificado. El tipo debe ser el mismo que el del ítem indicado con la directiva PUBLIC en otro módulo.
- INCLUDE nombre_de_archivo: Ensambla las sentencias indicadas en dicho archivo.
Para facilitar la programación, hay algunas funciones comunes que pueden incluirse en un programa. Para hacer que nuestros programas usen funciones definidas en otro archivo, debe usar INCLUDE seguido de un nombre de archivo. El compilador busca automáticamente el archivo en la misma carpeta donde se encuentra el archivo de origen, y si no puede encontrar el archivo allí, busca en la carpeta Inc.
Para usar cualquiera de las funciones en emu8086.inc, debe tener la siguiente línea al comienzo de su archivo fuente: include 'emu8086.inc'
emu8086.inc define las siguientes macros:
- PUTC char: imprime un solo caracter
- GOTOXY col, row: coloca el cursor en las coordenadas solicitadas
- PRINT string: Imprime una cadena
- PRINTN string: Imprime una cadena y tras imprimirla hace un salto de linea.
Muestra de ejemplo:
Código:
name "suma de dos numeros" include "emu8086.inc" org 100h .data suma db 2 dup (?) .code sumas proc print " Introduce el primer numero: " call scan_num mov suma[0],cl printn " " print " Introduce el segundo numero: " call scan_num mov suma[1],cl xor ax,ax add al,suma[0] add al,suma[1] printn " " print " La suma es: " call print_num sumas endp exit: print " " printn " " print "Presiona enter para salir..." mov ah,0 ;servicio de pulsación de teclado int 16h ;invoca a servicios de taclado ret define_print_string define_print_num define_print_num_uns define_scan_num end
Captura de resultado:
Comentarios
Publicar un comentario