Programa con menú de opciones

pila segment stack 'stack'
db 100h dup (?)
pila ends
datos segment ;---------esta parte es el texto que se mostrara y las instrucciones para el usuario
titulo db 13,10,' CAMBIAR FONDO DE PANTALLA',13,10,'$'
mensaje1 db 'Presione ENTER si quiere la pantalla azul. ',13,10,'$'
mensaje2 db 'Presione la tecla 2 si quiere morado',13,10,'$'
mensaje3 db 'Presione la tecla 3 si quiere azul bajito',13,10,'$'
datos ends

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

inicio:
;-------------------------------------------- para preparar pantalla
mov ah,0
 mov al,3h  ;modo texto
 int 10h    ;interrupcion de video

 mov ax,0600h  ;limpiar la pantalla
 mov bh,0fh  ; pone el color de fonodo negro
 mov cx,0000h  ; esto es para las esquinas
 mov dx,184Fh
 int 10h
 mov ah,02h
 mov bh,00
 mov dh,00
 mov dl,00
 int 10h

;------------------------------------------------- mostrar mensajes
mov ax,datos  ;esto es la parametrizacion
mov ds,ax

lea dx,titulo   ;en estas lineas mostramos el titulo
mov ah,9h
int 21h

lea dx,mensaje1 ; mostramos el mensaje
mov ah,9h
int 21h

lea dx,mensaje2 ; mostramos el mensaje
mov ah,9h
int 21h

lea dx,mensaje3 ; mostramos el mensaje
mov ah,9h
int 21h


;--------------------------------------------------- capturaci]on de teclas
mov ah,08  ; pausa y capyuta la tecla que presione el usuario
 int 21h   ; esta interrupcion es para capturar

 cmp al,13    ; verifica si se presiono enter
 je llamarAzul  ;manda llamar a la etiqueta correspondiente

cmp al,50   ;aqui verifica si se ingreso el numero 2 (el numero dos es el numero 50 en ascii)
je llamarMorado ;manda llamar la etiqueta correspondiente

cmp al,51   ;aqui verifica si se ingreso el numero 2 (el numero dos es el numero 50 en ascii)
je llamar ;manda llamar la etiqueta correspondiente

jmp fin  ;si no se realiza nada, manda llamar a la etiqueta "fin"

;------------------------Etiquetas:
; las eiquetas contienen procedimientos almacenados que se mandan llamar con la instruccion call

fin:
mov ax,4c00h
int 21h

llamarAzul:  ; manda llamar rl procedimiento Azulproc
CALL AZULPROC

llamarMorado:  ; manda llamar el procedimiento Moracoproc
CALL MORADOPROC

llamar:  ; manda llamar el procedimiento Moracoproc
CALL llamarcolor


;----------------------------------------------Proceso AZULPROC
AZULPROC PROC NEAR

;el procedimiento para ajustar la pantalla es casi igual
mov ah,0
 mov al,3h
 int 10h
 mov ax,0600h
 mov bh,0fh
 mov cx,0000h
 mov dx,184Fh
 int 10h
 mov ah,02h
 mov bh,00
 mov dh,00
 mov dl,00
 int 10h
;-------------------------- en esta parte se ajusta el color
mov ah,06h
mov bh,1fh  ; esto es para el color de fondo y las letras
mov cx,0000h
mov dx,184fh
int 10h

mov ax,4c00h ; esto lo que hace es que una vez que haya cambiado la pantalla a color azul, se termina el programa
int 21h
RET

AZULPROC ENDP ;--------Termina el proceso

;-------------------------------------------------Proceso MORADOPROC
MORADOPROC PROC NEAR
mov ah,06h
mov bh,5eh    ;esto es lo que cambia al procedimiento anterior
mov cx,0000h
mov dx,184fh
int 10h
mov ax,4c00h
int 21h
RET
MORADOPROC ENDP  ;--------Termina el proceso

llamarcolor PROC NEAR
mov ah,06h
mov bh,3fh    ;esto es lo que cambia al procedimiento anterior
mov cx,0000h
mov dx,184fh
int 10h
mov ax,4c00h
int 21h
RET
llamarcolor ENDP

codigo ends ;termina el segmento codigo
end inicio;termina la etiqueta Inicio

Comentarios

Entradas más populares de este blog

EMU8086 - Registro de banderas

Juego del Gato en Python