miércoles, 20 de febrero de 2019

Video de suma de dos numeros con libreria. Explicacion de libreria emu8086.inc

En esta ocasión voy a explicar un vídeo que fue compartido por la maestra para ver el uso de librerías en emu8086. En si, eso nos permite el poder utilizar unas instrucciones mas fáciles de comprender por su traducción al español

Para hacer el trabajo de programación mas sencillo existen varias funciones comunes que se pueden incluir a un programa. Para hacer que el programa implemente funciones definidas en otro archivo debes usar la directiva INCLUDE seguida del nombre del archivo. El compilador automáticamente busca el archivo en la misma carpeta donde esta localizado el archivo de código fuente, y si no lo encuentra ahí, lo buscara en la carpeta Inc.

Para usar cualquiera de las funciones de Emu8086.inc se debe colocar la siguiente linea al inicio del programa en donde se vaya a implementar:
include 'emu8086.inc'
Emu8086.inc define los 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.


Sintaxis

;Creador por Cuevas Villafranco ivan enrique
name "Suma dos numeros"
include "emu8086.inc"
org 100h

.data
suma db 2 dup (?)  ;Creamos un arreglo llamado suma de 2 espacios de tipo byte

.code
Sumas proc      ;Se crea un proceso de sumas y se piden los numeros
    printn " "
    print "Introduce el primer numero ==>"
    call scan_num
    mov suma[0],cl   ;guarda el valor en cl,y lo manda al arreglo
    printn " "
    print "Introduce el segundo numero ==>"
    call scan_num   ;
    mov suma[1],cl
    printn " "
    xor ax,ax     ;se limpia el registro ax
    add al,suma[0] ;se manda la suma al registro al
    add al,suma[1] ;se manda para poder imprimir
    printn " "
    print "La suma es: "
    call print_num
Sumas endp
exit:
    printn " "
    printn " "
    print "Presiona enter para salir..";etiqueta con instruccion para salir del programa
    mov ah,0
    int 16h
    ret
   define_print_string   ;apartado de definicion de comandos emu8086.inc
   define_print_num
   define_print_num_uns
   define_scan_num           
   end

Como en otras entradas, he dejado varios comentarios en toda la sintaxis para que sea mas facil el entender lo que hace el programa.

Al iniciar le asignamos un nombre al programa, en esta ocasion sera "Suma dos numeros"
Posteriormente, colocamos la libreria utilizada en esta ocasion que sera la emu8086.inc, despues de ello se inicia el programa como regularmente se hace con org 100h


En la seccion de datos, se va a declarar un arreglo llamado suma de dos espacios de tipo byte,despues de ello iniciamos con el codigo de nuestro programa.
Iniciamos creando un procedimiento llamado suma y comenzamos a pedir los numeros.
Mandamos a imprimir mensajes por medio de la instruccion print, posteriormente por medio de una llamada, usamos la funcion scan_num que funciona para la obtencion de datos ingresados por el usuario.
Guardamos el valor en la parte alta del registro cx, y posteriormente lo mandamos al arreglo que habiamos creado en un inicio. (Hacemos lo mismo con el segundo numero a ingresar).
Una vez que tenemos nuestros dos valores en el arreglo, limpiamos el registro ax que utilizaremos para poder realizar la suma. Mandamos lo que hay en la posicion 0 de nuestro arreglo suma a la parte alta de ax para que se sume con lo que hay en el(como se limpio, por ende no debe haber nada), y posteriormente hacemos lo mismo con la posicion 1 de nuestro arreglo.
Finalmente mandamos a imprimir el resultado de nuestra suma con la funcion print_num que nos imprime en pantalla el contenido del registro ax.(se termina el procedimiento).


Iniciamos la funcion exit, que nos servira unicamente para darle fin a nuestro programa.
Utilizando la interrupcion 16h(invoca los servicios estandar del teclado), y el servicio 0(leer caracter de teclado) en el registro ah.(al momento de dar enter, se finaliza el programa)
Finalmente tenemos el apartado de definicion de comandos que se estan utilizando en este programa,para escanear e imprimir numeros.

Corrida del programa.






Apartado del arreglo

No hay comentarios.:

Publicar un comentario