sábado, 14 de abril de 2018

menu



pila segment stack "stack" ;segmento de pila
    db 100h dup (?) ;a partir de la direccion de 100 de la pila
pila ends

datos segment
    titulo db 13,10," Menu de opciones ",13,10 ,"$"
    mensaje db 13,10,"Presionar 1 color Cyan,letras negras",13,10, "$"
    mensaje2 db 13,10,"Presionar 2 color rojo,letras azules",13,10,"$"
    mensaje3 db 13,10,"presionar cualquier tecla para salir",13,10,"$"
    mensaje4 db 13,10,"Hola mundo en Negro",13,10,"$"
    mensaje5 db 13,10,"Hola mundo en azul",13,10,"$"
   
datos ends

codigo segment ;segmento de codigo
assume cs:codigo, ss:pila, ds:datos

  inicio:
           ;...........................................preparar pantalla
           mov ah,0
               mov al,3h ;modo texto
               int 10h ;interrupcion de video 
             
               mov ax,0600h ;limpiar pantalla
               mov bh,5fh ;0 color de fondo negro, f color de letra blanco
               mov cx,0000h
               mov dx,784fh
               int 10h
             
               mov ah,02h       
               mov bh,00       
               mov dh,00       
               mov dl,00
               int 10h
             
               ;..............................................mostrar mensajes
           mov ax,datos
           mov ds,ax
             
           lea dx,titulo
           mov ah,9h
           int 21h
             
           lea dx,mensaje
           mov ah,9h
           int 21h
         
           lea dx,mensaje2
           mov ah,9h
           int 21h
         
           lea dx,mensaje3
           mov ah,9h
           int 21h
         
            ;.........................................captura de teclas
                mov ah,08 ;pausa y captura de datos 05 espera que el usuario presione una tecla
                int 21h
               
                cmp al,49 ;ascii 49= numero1
                je llamarAzul ;salto condicional jump equals opcion 1 saltar si es igual ala opcion 1
               
                cmp al,50 ;ascii 50= numero 2 compara lo que tiene el registro ah con el ascii 50 en el reg ah
                je llamarMorado
               
                jmp fin  ;si no escoge ni enter ni 2, sale del programa
               
         fin:  ;saca el mensaje por pantalla
       
              mov ax,4c00h
              int 21h
             
              llamarAzul:
    CALL AZULPROC
llamarMorado:
    CALL MORADOPROC
;........................................................................
AZULPROC PROC NEAR
   
mov ah,0
              mov al,3h ;modo texto
              int 10h  ;interrupcion de video
             
              mov ax,0600h ;limpiar pantalla
              mov bh,30h ;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 ah,06h   
              mov bh,1fh     
              mov cx,0000h
              mov dx,184fh   
              int 10h 
             
               ;mensaje
           mov ax,datos
           mov ds,ax
             
           lea dx,mensaje4
           mov ah,9h
           int 21h
 
 
 
              mov ax,4c00h
              int 21h
             
RET

AZULPROC ENDP

;----------------------------------
MORADOPROC PROC NEAR
           mov ah,06h   
           mov bh,41h     
           mov cx,0000h   
           mov dx,184fh   
           int 10h
         
           ;mensaje
           mov ax,datos
           mov ds,ax
             
           lea dx,mensaje5
           mov ah,9h
           int 21h   
         
           mov ax,4c00h   
           int 21h
         
           
RET

MORADOPROC ENDP

codigo ends
end inicio

No hay comentarios.:

Publicar un comentario

Macro Potencia de un numero

name "potencia" include "emu8086.inc" include "macroos.txt" .model small data segment     base  dw ? ...