miércoles, 20 de febrero de 2019

1. Uso de libreria emu8086 (parte 1)



Programas con Uso de librerías en Ensamblador 


Para facilitar la programación, hay algunas funciones comunes que pueden incluirse en su programa. Para hacer que su programa utilice funciones definidas en otro archivo, debe usar la directiva INCLUDE seguida 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' 

Referencias externas al módulo: 


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. 

emu8086.inc define las siguientes macros : 

PRINT string - macro con 1 parámetro, imprime una cadena. 
PRINTN string - macro con 1 parámetro, imprime una cadena. Lo mismo que PRINT pero agrega automáticamente "retorno de carro" al final de la cadena. 
PUTC char - macro con 1 parámetro, imprime un carácter ASCII en la posición actual del cursor. 
GOTOXY col, fila - macro con 2 parámetros, establece la posición del cursor. 
CURSOROFF - apaga el cursor de texto. 
CURSORON - enciende el cursor de texto.


Ensamblador: Suma de dos números


Este código fue tomado del siguiente vídeo:


Código:


;include para añadir librerias http://jbwyatt.com/253/emu/asm_tutorial_05.html
;gmo
name 'Suma de dos numeros'
include 'emu8086.inc' ;nombre del programa 
org 100h              ;agregamos libreria emu8086.inc

.data     ;se abre el bloque de datos
suma db 2 dup (?) ;arreglo suma de 2 espacios(byte)

.code    ;directiva indica la continuacion del prog
Sumas proc     ;proceso Sumas
    printn " "
    print "Introduce el primer numero ==>"
    call scan_num  ;recibe los valores
    mov suma[0], cl;recibe de scan_num cl y se mandan a las posiciones del arreglo
    printn " "
    print "Introduce el segundo numero ==>"
    call scan_num
    mov suma[1], cl
    printn " "
    xor ax, ax  ;limpia el registro ax
    add al, suma[0]   ;manda la suma al registro al para poder imprimir con print_num
    add al, suma[1]
    printn " "
    print "La suma es: "
    call print_num
Sumas endp

exit:       ;etiqueta salir
    print ""
    printn ""
    print "Presiona enter para salir...  "
    mov ah, 0  ;termina el programa
    int 16h
    ret
    
define_print_string ;comando definido emu8086.inc  
define_print_num
define_print_num_uns
define_scan_num     
end


Resultado:


La suma de los valores 12 y 7 decimal da 19. Como se puede ver se guarda en el registro "ax" como 13 equivalente en hexadecimal.



Referencia:


No hay comentarios:

Publicar un comentario

3. Colores Modificado 9

Modificación del programa # 9 " Colores " Por mi compañero Ambrocio isaias Laureano CR EQU 13 ;Declaro retorno de carro LF...