jueves, 28 de febrero de 2019

Unidad No.1- Programas utilizando la documentacion emu8086.inc

Programa No.1: Hola Mundo con print string
Ejecución del programa:


 

Código del programa:
include 'emu8086.inc'
org 100h

.code
printn " " 
printn "hola mundo"


ret

Programa No.2: Hola mundo con gotoxy 
Ejecución del programa:




Código del programa:

include 'emu8086.inc'
org 100h

.code
gotoxy 5,5
printn "hola mundo"


ret

Programa No.3: Hola mundo con putc
Ejecución del programa:




Código del programa:

include 'emu8086.inc'
org 100h

.code
gotoxy 5,5
printn "hola mundo" 
putc 'A'


ret

Unidad No.1-Programas del video "registro de banderas en ensamblador 8086"

Programa No.1: 
Ejecución del programa:




Código:

org 100h

.model small
.stack
.data

.code
     mov al,255
     mov bl,1
     add al,bl
     


.exit
end

Nota: La extension maxima del registro al es 255 y al intentar sumarle uno se acciona la bandera indicando que existe un acarreo de 1


Programa No.2:


Ejecución del programa:




Código:

org 100h


.model small
.stack
.data

.code
    
     
     mov al,2
     mov bl,2
     sub al,bl

.exit
end

Programa No.3 

Ejecución del programa:




Código:

org 100h

org 100h

.model small
.stack
.data

.code
     
     
     mov al,1
     mov bl,4
     sub al,bl

.exit
end

ret


Programa No.4:
Ejecución del programa:




Código:

org 100h



.model small
.stack
.data

.code
    
     
     mov al,100
     mov bl,50
     add al,bl

.exit
end

ret

Unidad No.1-Documentación de emu8086 inc

emu8086.inc define las siguientes macros :

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.

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.

CURSOROFF - apaga el cursor de texto.

CURSORON - enciende el cursor de texto.

Para usar cualquiera de las macros anteriores, simplemente escriba su nombre en algún lugar de su código y, si es necesario, los parámetros


emu8086.inc también define los siguientes procedimientos :

PRINT_STRING : procedimiento para imprimir una cadena terminada en nulo en la posición actual del cursor, recibe la dirección de la cadena en el registro DS: SI . Para usarlo declare: DEFINE_PRINT_STRING antes de la directiva END .

PTHIS : procedimiento para imprimir una cadena terminada en nulo en la posición actual del cursor (igual que PRINT_STRING), pero recibe la dirección de la cadena desde la Pila. La cadena TERMINADA A CERO debe definirse justo después de la instrucción CALL. Por ejemplo: 

CALL PTHIS 
db 'Hello World!', 0

Para usarlo declare: DEFINE_PTHIS antes de la directiva END .

GET_STRING : procedimiento para obtener una cadena terminada en nulo de un usuario, la cadena recibida se escribe en el búfer en DS: DI , el tamaño del búfer debe estar en DX . El procedimiento detiene la entrada cuando se presiona 'Enter'. Para usarlo declare: DEFINE_GET_STRING antes de la directiva END .

CLEAR_SCREEN : procedimiento para borrar la pantalla (que se realiza al desplazar la ventana completa de la pantalla) y establecer la posición del cursor en la parte superior. Para usarlo declare: DEFINE_CLEAR_SCREEN antes de la directiva END .

SCAN_NUM : procedimiento que obtiene el número FIRMADO de varios dígitos del teclado y almacena el resultado en el registro CX . Para usarlo declare: DEFINE_SCAN_NUM antes de la directiva END .

PRINT_NUM : procedimiento que imprime un número firmado en el registro AX . Para usarlo declare: DEFINE_PRINT_NUM y DEFINE_PRINT_NUM_UNS antes de la directiva END .

PRINT_NUM_UNS : procedimiento que imprime un número sin firma en el registro AX . Para usarlo declare: DEFINE_PRINT_NUM_UNS antes de la directiva END .

Unidad No.-1 Hola mundo utilizando libreria emu8086.inc

Ejecución del programa:


Código:

name 'hola mundo'
include 'emu8086.inc'

org 100h

   
.code  
print " "
print "hola mundo" 


ret

Unidad No.1-Programa que suma dos numeros utilizando la libreria emu8086.inc

Link del video de referencia: https://www.youtube.com/watch?v=EftgPsQXTXs

Ejecución del programa:




Código:

;creado por Ivan Alejandro Gutierrez
name 'suma dos numeros'
include 'emu8086.inc'
org 100h        

.data
suma db 2 dup (?)

.code
sumas proc
    print " "
    print "Introduce el primer numero: "
    call scan_num
    mov suma[0],cl
    print " "
    print "Introduce el segundo numero: "
    call scan_num
    mov suma[1],cl
    print " "
    xor ax,ax
    add al,suma[0]
    add al, suma[1]
    print " "
    print "La suma es: "
    call print_num
sumas endp

exit:
  print " "
  print " "
  print "Presiona enter para salir..."
  mov ah,0
  int 16h
  ret
define_print_string
define_print_num
define_print_num_uns
define_scan_num
end
                        
                        

ret

Unidad No.1- Programa que divide dos numeros

Ejecución del programa:


Código:

org 100h

mov ax,9
mov bx,9
div bx

ret

Unidad No.-1 Programa que verifica si una persona es mayor de edad o no

Ejecución del programa:



Código:

org 100h

.model samll
.stack 64 ;segmento de pila

.data   
diez db 10;variable para poder imprimir dos caracteres(se multiplica por el primer valor para sacar decimales)
num1 db 0 ;variable para edad
mens db 'Ingrese la edad: $'
mens1 db 'Eres mayor de edad $'
mens2 db 'Eres menor de edad $'

.code
  inicio proc Far
    mov ax, @data ;direccionamiento del segmento datos
    mov ds, ax ;los datos se mueven al registro ax
    ;poner el primer letrero
    mov ah,09
    lea dx, mens
    int 21h   
    
    mov ah,01
    int 21h
    sub al,30h;convertir a valor 
    mul diez;se multiplica el numero ingresado
    mov num1,al
    
    mov ah,01
    int 21h
    sub al,30h
    add num1,al;se suma a las decenas obtenidas
    mov al,num1
    
    cmp al,18
    jge mayor ;je seria en caso de que sea mayor
    jmp menor
    
    mayor:
     mov ah,09
     lea dx,mens1
     int 21h 
     jmp fin  
     
    menor:
     mov ah,09
     lea dx,mens2
     int 21h
     jmp fin 
     
    fin:
     mov ax, 4c00h  
    
    inicio endp
    
   


ret

Unidad No.1-Tabla de registros de proposito general

Unidad No.1-Programa que hace una multiplicación en lenguaje ensamblador

Ejecución del programa:






Nota: Se hace la multiplicación de 80 x 100 esto es 8,000 en decimal y 1F40 en hexadecimal

Código:


org 100h

  
mov ax,80
mov bx,100  
mul bx
ret 

lunes, 18 de febrero de 2019

Unidad No.1-Programa que te evalua si aprobaste o reprobaste dependiendo su calificación

Ejecución del programa:



Código:

org 100h

.model small
.stack 64

.data ;seccion de variables
  msg1 db "Dame una calificacion (seguida de un enter):$"
  aprobado db 13,10, "Aprobado$" ;13 es salto de linea y 10 es salto de carro
  reprobado db 13,10, "Reprobado$"
  var1 dw ?,"$" ;variable data write
  var2 dw ?,"$"
  var3 dw ?,"$"
  
.code ;inicia el segmento de codigo

resultado proc far ;declaracion de funcion
    mov ax, @data ;como inicio
    mov ds, ax
;------------desplegar primer mensaje 

    mov ah,09 ;inicio de mensaje
    lea dx,msg1
    int 21h
    
;------------pedir un caracter
    mov ah,01
    int 21h ;parpadea el cursor      
    mov var1,ax 
    
;------------pedir segundo caracter
    mov ah,01
    int 21h ;parpadea el cursor      
    mov var2,ax
    
;------------pedir un caracter
    mov ah,01
    int 21h ;parpadea el cursor      
    mov var3,ax        
    
;------------momento de evaluar
    cmp al,13 ;compara con el enter
    je continue ;salto si se cumple la condicion igual a 13
    jmp mayor 
    
;inicia funcion
continue:
    mov ax, var1 ;valor de var1 se va a reg ax
    cmp al,037h
    jge mayor ;salta si es mayor o igual
    jmp menor ;si no se cumplio se va a funcion menor
    
mayor:
    mov ah,09
    lea dx, aprobado
    int 21h
    jmp salir
    
menor:
    mov ah,09
    lea dx, reprobado
    int 21h
    jmp salir
    
salir:
    mov ax, 4ch
    int 21h
    
resultado endp
end

Unidad No.3: Mejora programa # 9: Letras de colores(Versión Ingrid Sauceda)

Ejecución del programa: Código: include 'emu8086.inc' Mostrar Macro Mensaje     LEA DX,Mensaje ;mandamos el mensaje a leer     MO...