Código:
;De : Ambrocio Isaias
org 100h
.model small
.stack
.data
include "emu8086.inc"
num1 db 0; variable para la edad
.code
inicio proc far
;poner el primer letrero
print " Ingrese su edad: ";macro print
;lectura del valor
call scan_num ;llamada al proc de la libreria para pedir un valor
mov num1,cl
;lectura segundo valor
xor ax,ax ;limpiar el registro ax
mov al,num1
cmp al,18d ;Si lo que se encuentra en al>18
JGE mayor ;salta a mayor
JMP menor ;sino ve a menor
mayor:
printn " "
print "Eres mayor de edad"
jmp final
menor:
printn " "
print "Eres menor de edad"
jmp final
final:
print " "
printn " "
print "Presiona enter para salir..."
mov ah,0 ;servicios de lectura de una pulsación de teclado
int 16h ;Invoca a servicios de teclado
mov ah,4ch
int 21h
ret
define_print_string
define_print_num
define_print_num_uns ;para recibir numeros decimales
define_scan_num ;del procedimiento scan_num
endp inicio
end
Resultado:Programa 2: Nos permitirá mostrar si hemos aprobado o reprobado alguna asignatura en base a una calificación.
Código:
;De : Ambrocio Isaias
.MODEL SMALL
.STACK 64
.DATA
include "emu8086.inc"
nota db 0
.CODE
OPERACIONES PROC FAR ;DECLARACION DE PROCEDIMIENTO
;MUESTRO EL MENSAJE
print " " ;usa macro print para un espacio
print "Ingrese la calificacion: " ;macro imprime
call scan_num ;Leo el numero
mov nota,cl ;lo guardo en nota
xor ax,ax ;borro el contenido de ax
mov al,nota ;muevo nota a al
CMP AL,70d ;comparo al con 70
JGE MAYOR ;si es mayor o igual pasa a mayor
JMP MENOR ;si no a menor
MAYOR:
printn " "
print "Aprobado"
JMP SALIR
MENOR:
printn " "
print "Reprobado"
JMP SALIR
SALIR:
print " "
printn " "
gotoxy 10,10 ;coloco el cursor en las coordenadas 10x,10y
print "Presiona enter para salir..." ;imprimo despues este mensaje
mov ah,0 ;servicio de lectura de pulsacion de tecla
int 16h ;invoca servicios de teclado
mov ah,4ch
int 21h
ret
OPERACIONES ENDP
define_print_string
define_print_num
define_print_num_uns
define_scan_num
END
Resultado:
Programa 3: Suma de dos números, uso de la libreria emu8086.inc.
Código:
;De: Isaias Ambrocio
org 100h
name "suma de dos numeros"
include "emu8086.inc"
org 100h
.data
suma db 2 dup (?) ;manera de declarar un arreglo de 2 lugares
.code
sumas proc
print " Introduce el primer numero: " ;macro de la lib
call scan_num ;llamada a un procedimiento para pedir un num
mov suma[0],cl ;mueve el valor de cl a la posicion 0 del array
printn " " ;macro que imprime un espacio
print " Introduce el segundo numero: " ;macro que imprime un letrero
call scan_num ;llamada a un procedimiento para pedir num
mov suma[1],cl ;;mueve el valor de cl a la posicion 1 del array
xor ax,ax ;xor nemonico que limpia registros
add al,suma[0] ;valor de suma pos 0 []
add al,suma[1] ;valor de suma pos 1
printn " " ;macro de la libreria pone un espacio y retorno
print " La suma es: " ;macro que imprime un letrero
call print_num ;llamada a un procedimiento para imprimir un num del reg ax
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 ;no se uso
define_print_num ;es del print_num
define_print_num_uns ;conversion a decimal del scan_num
define_scan_num ;procedimiento del scan_num(macro)
end
ret
Resultado:
