Sie sind auf Seite 1von 9

palabras:

.MODEL small
.CODE
org 100H
begin: jmp main
Msg DB 'INGRESA 4 NUMEROS',0AH,0DH,'$'
main proc near
mov dx,OFFSET Msg
mov ah,9
int 21h

mov cx,05h
meter:
mov ah,01h
int 21h
push ax
loop meter
mov cx,05h

imprimir:
pop ax
mov ah,02h
mov dl,al
int 21h
loop imprimir
salir:
mov ah,04ch
int 21h
end

---------------------------------------------------
org 100h ; indicamos en que area de memoria se va a iniciar el programa
regularmente se inicia en 100h
Menu: ;esta es una etiqueta se llama menu que sera donde mostraremos las opciones
al usuario
mov ah,0
mov al,3h ;modo texto
int 10h ; interrupcion de video

mov ax,0600h ;limpiar pantalla


mov bh,0fh ;0 color de fondo negro, f color de letra blanco
mov cx,0000h
mov dx,184Fh
int 10h

mov ah,02h
mov bh,00
mov dh,00
mov dl,00
int 10h
mov dx, OFFSET mostrarMenu ;nombre del mensaje
mov ah,09 ; mov ah,09 sirve para presentar el msj en pantalla
int 21h ;interrupcion de video

mov ah,08 ;pausa y captura de datos 08 espera que el usuario presione una
tecla
int 21h

cmp al,49 ; ascii 49 = numero 1 compara lo que tiene el registro ah con el


ascii 49 en el reg al
je op1 ; salto condicional jump equals opcion 1 saltar si es igual a la opcion
1

cmp al,50 ;compara con opcion 2 apellido


je op2

cmp al,51 ;compara con opcion 3 carne


je op3

cmp al,52 ;compara con opcion 4 salir


je op4

mostrarMenu db 'Universidad San Carlos de Guatemala',13,10 ; 13 es un 'enter'


10 un espacio
db 'Facultad de Ingenieria',13,10
db 'Escuela de Ciencias y Sistemas',13,10
db 'Arquitectura de Computadoras y Ensambladores 1',13,10,13,10
db '-.-.MENU.-.-',13,10,13,10
db '1. Ver Nombre',13,10
db '2. Ver Apellido',13,10
db '3. Ver Carne',13,10
db '4. Salir',13,10,13,10
db 'Seleccione una Opcion$',13,10

-----------------------------------------------------------------------------------
-----------
name: " PROTOTIPO FINAL"
org 100h ; inicio de programa

include 'emu8086.inc' ;Incluye funciones de libreria emu8086


DEFINE_SCAN_NUM
DEFINE_PRINT_STRING
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS

jmp inicio

menu1 db 13,10,'JHON JARLIN JARLIN PALACIOS',13,10,


db 13,10,'Codigo 1010141445',13,10,
db 13,10,'Universidad Nacional Abierta y a Distancia',13,10,
db 13,10,'Cead Quibdo',13,10
db 13,10,'Fecha:Diciembre 10 de 2016',13,10,
db 13,10, '******MENU******',13,10,
db 13,10,'1 Suma de dos numeros ',13,10,
db 13,10,'2 Resta de dos numeros ' ,13,10,
db 13,10,'3 Multiplicacion de dos numeros ',13,10,
db 13,10,'4 Division de dos numero',13,10,
db 13,10,'5 Validar numeros negativos y positivos',13,10,
db 13,10,'6 Salir ' ,13,10,

db 13,10,13,10,'Digite el Primer Numero: $'


texto2 db 13,10,13,10,'Digite el Segundo Numero: $'
texto3 db 13,10,13,10, 'La Suma Es: $'
texto4 db 13,10,'La Resta Es: $'
texto5 db 13,10,'La Multiplicacion Es: $'
texto6 db 13,10,'La Divison es: $'
texto7 db 13,10,'positivo: $'
texto8 db 13,10,'negativo: $'
texto9 db 13,10,'cero: $'

num1 dw ? ;defino variables de 2 bytes


num2 dw ? ; el simbolo ? es para indicar q no se inicilizan con valor algunp

inicio:

mov ah,09 ;instruccion para imprimir en pantalla


lea dx,menu1 ;carga cadena de texto 1 en dx
int 21h ;interrupcion pantalla

call SCAN_NUM ;Llama Funcion SCAN_NUM que toma numero de teclado; el valor se
guarda en ax
mov num1,cx ;mueve numero a variable num1

mov ah,09 ;interrupcion para imprimir en pantalla


lea dx,texto2 ;carga cadena de texto 2 en dx
int 21h

call SCAN_NUM ;Llama Funcion SCAN_NUM que toma numero de teclado; el valor se
guarda en ax
mov num2,cx ;mueve numero a variable num2

mov ah,09
lea dx,texto3
int 21h
mov ax,num1 ;mueve primer numero digitado a ax
add ax,num2 ;suma los numeros digitado, queda almacenaddo en ax
call PRINT_NUM

mov ah,09
lea dx,texto4
int 21h
mov ax,num1 ;mueve primer numero digitado a ax
sub ax,num2 ;resta el 2do del 1er numero, queda almacenaddo en ax
call PRINT_NUM

mov ah,09
lea dx,texto5
int 21h
mov ax,num1 ;mueve primer numero digitado a ax
mov bx,num2 ;mueve segundo numero digitado a bx
mul bx ;ax = ax*bx
call PRINT_NUM

mov ah,09
lea dx,texto6
int 21h
xor dx,dx ;deja en cero dx; si no lo hago se desborda la division
;DX ALMACENA EL modulo de la division, por eso hay q dejarlo en cero
mov ax,num1 ;mueve primer numero digitado a ax
mov bx,num2 ;mueve segundo numero digitado a bx
div bx ;ax = ax*bx
call PRINT_NUM

cmp bl,0

mov ah,09h
lea dx,texto7
int 21h

mov ah,09h
lea dx,texto8
int 21h

mov ah,09h
lea dx,texto9
int 21h
-----------------------------------------------------------------------------------
----------------------

name: " PROTOTIPO FINAL"


org 100h ; inicio de programa

include 'emu8086.inc' ;Incluye funciones de libreria emu8086


DEFINE_SCAN_NUM
DEFINE_PRINT_STRING
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
jmp inicio

menu1 db 13,10,'Manuel Melchor , Daniel Suarez',13,10,


db 13,10,'Universidad Autonoma Del Estado De Mexico',13,10,
db 13,10,'Fecha:Diciembre 29 de 2019',13,10,
db 13,10, '******MENU******',13,10,
db 13,10,'1 Registrar ',13,10,
db 13,10,'2 Mostrar ' ,13,10,
db 13,10,'3 Pila llena ',13,10,
db 13,10,'4 Pila vacia',13,10,
db 13,10,'5 Salir ' ,13,10,

;
***********************************TEXTOS******************************************
****************************
db 13,10,13,10,'INGRESE 4 NUMEROS:$'
texto2 db 13,10,13,10,'Digite el Segundo Numero: $'
texto3 db 13,10,13,10, 'La Suma Es: $'
texto4 db 13,10,'La Resta Es: $'
texto5 db 13,10,'La Multiplicacion Es: $'
texto6 db 13,10,'La Divison es: $'
texto7 db 13,10,'positivo: $'
texto8 db 13,10,'negativo: $'
texto9 db 13,10,'cero: $'

num1 dw ?;defino variables de 2 bytes


num2 dw ?; el simbolo ? es para indicar q no se inicilizan con valor algunp

inicio:

mov ah,09 ;instruccion para imprimir en pantalla


lea dx,menu1 ;carga cadena de texto 1 en dx
int 21h ;interrupcion pantalla

call SCAN_NUM ;Llama Funcion SCAN_NUM que toma numero de teclado; el valor se
guarda en ax
mov num1,cx ;mueve numero a variable num1

mov ah,09 ;interrupcion para imprimir en pantalla


lea dx,texto2 ;carga cadena de texto 2 en dx
int 21h

call SCAN_NUM ;Llama Funcion SCAN_NUM que toma numero de teclado; el valor se
guarda en ax
mov num2,cx ;mueve numero a variable num2

mov ah,09
lea dx,texto3
int 21h

mov ax,num1 ;mueve primer numero digitado a ax


add ax,num2 ;suma los numeros digitado, queda almacenaddo en ax
call PRINT_NUM

mov ah,09
lea dx,texto4
int 21h
mov ax,num1 ;mueve primer numero digitado a ax
sub ax,num2 ;resta el 2do del 1er numero, queda almacenaddo en ax
call PRINT_NUM

mov ah,09
lea dx,texto5
int 21h
mov ax,num1 ;mueve primer numero digitado a ax
mov bx,num2 ;mueve segundo numero digitado a bx
mul bx ;ax = ax*bx
call PRINT_NUM

mov ah,09
lea dx,texto6
int 21h
xor dx,dx ;deja en cero dx; si no lo hago se desborda la division
;DX ALMACENA EL modulo de la division, por eso hay q dejarlo en cero
mov ax,num1 ;mueve primer numero digitado a ax
mov bx,num2 ;mueve segundo numero digitado a bx
div bx ;ax = ax*bx
call PRINT_NUM

cmp bl,0

mov ah,09h
lea dx,texto7
int 21h

mov ah,09h
lea dx,texto8
int 21h

mov ah,09h
lea dx,texto9
int 21h

///////////////////////////////////////////////ya quedo menu y case


1://///////////////////////////////////////////////////////////////////////
org 100h

Menu:
mov ah,0
mov al,3h ;modo texto
int 10h

mov ax,0600h ;limpiar pantalla


mov bh,0fh ;0 color de fondo negro, f color de letra blanco
mov cx,0000h
mov dx,184Fh
int 10h

mov ah,02h
mov bh,00
mov dh,00
mov dl,00
int 10h

mov dx, OFFSET menu1 ;nombre del mensaje


mov ah,09
int 21h

mov ah,08 ;pausa y captura de datos


int 21h

cmp al,49 ; ascii 49 =1 compara con opcion 2 apellido


je op1

cmp al,50 ;compara con opcion 2 apellido


je op2

cmp al,51 ;compara con opcion 3 carne


je op3

cmp al,52 ;compara con opcion 4 salir


je op4

menu1 db 13,10,'Manuel Melchor , Daniel Suarez',13,10,


db 13,10,'Universidad Autonoma Del Estado De Mexico',13,10,
db 13,10,'Fecha:Diciembre 29 de 2019',13,10,
db 13,10, '******MENU******',13,10,
db 13,10,'1 Registrar ',13,10,
db 13,10,'2 Mostrar ' ,13,10,
db 13,10,'3 Pila llena ',13,10,
db 13,10,'4 Pila vacia',13,10,
db 13,10,'5 Salir ' ,13,10,

texto3 db 13,10,13,10, 'teclea el numero de la opcion: $'


texto4 db 13,10,'La Resta Es: $'
texto5 db 13,10,'La Multiplicacion Es: $'
texto6 db 13,10,'La Divison es: $'
texto7 db 13,10,'positivo: $'
texto8 db 13,10,'negativo: $'
texto9 db 13,10,'cero: $'
op1:
palabras:
.MODEL small
.CODE
org 100H
begin: jmp main
Msg DB 'INGRESA 4 NUMEROS',0AH,0DH,'$'
main proc near
mov dx,OFFSET Msg
mov ah,9
int 21h

mov cx,05h
meter:
mov ah,01h
int 21h
push ax
loop meter
mov cx,05h

volver db ' ',13,10,13,10


db 'presione "Esc" para volver a menu$'

op2:
mov ax,0600h ;limpiar pantalla
mov bh,1eh ;1 fondo azul, e color de letra amarillo
mov cx,0000h
mov dx,184Fh
int 10h

mov ah,02h
mov bh,00
mov dh,00
mov dl,00
int 10h

mov dx, OFFSET miNombre


mov ah,09
int 21h

mov ah,08 ;pausa y captura de datos


int 21h
cmp al,27 ;ascii de esc
je Menu

miNombre db 'Amezquita',13,10,13,10
db 'presione "Esc" para volver a menu$'

op3: ;carne

mov ax,0600h ;limpiar pantalla


mov bh,0Fh ;0 fondo negro, f letra blanca
mov cx,0000h
mov dx,184Fh
int 10h

mov ah,02h
mov bh,00
mov dh,00
mov dl,00
int 10h

mov ah,0
mov al,13h ;modo de video
int 10h

mov ah,0eh
mov al,"2" ;texto a mostrar
mov bl,0fh ;color
int 10h

mov al,"0"
mov bl,0eh
int 10h

mov al,"0"
mov bl,0dh
int 10h

mov al,"6"
mov bl,0ch
int 10h

mov al,"3"
mov bl,0bh
int 10h

mov al,"0"
mov bl,0ah
int 10h

mov al,"5"
mov bl,9
int 10h

mov al,"3"
mov bl,8
int 10h

mov al,"4"
mov bl,7
int 10h

mov dx, OFFSET esc


mov ah,09
int 21h

mov ah,08 ;pausa y captura de datos


int 21h
cmp al,27
je Menu

esc db ' ',13,10,13,10


db 'presione "Esc" para volver a menu$'

mov ax,4c00h
int 21h

op4: ;salida
mov ax,4c00h
int 21h

Das könnte Ihnen auch gefallen