codigo de hola mundo de cambio de color en la pantalla y cambio de color por tecla

CR EQU 13
LF EQU 0AH

DATOS SEGMENT
    MENSAJE DB CR, LF, 'HOLA MUNDO POR EDUARDO SILVA', CR, LF, '$'
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP ('PILA')
PILA ENDS

CODIGO SEGMENT
    HM PROC FAR
    ASSUME CS: CODIGO, DS:DATOS, SS:PILA
 
    MOV AX, DATOS
    MOV DS, AX
    LEA DX, MENSAJE
 
    MOV AH,9
    INT 21H
 
    MOV AX, 4C00H
    INT 21H
 
    HM ENDP

CODIGO ENDS
END HM
------------------------------------------------------------------------------------
;PILA SEGMENT STACK 'STACK'
;DB 100H DUP (?)
;PILA ENDS

DATOS SEGMENT
 
    MENSAJE DB 10, 13, 'Se ha cambiado el color de la pantalla$',10,13,'$'
DATOS ENDS


CODIGO SEGMENT
    ASSUME CS:CODIGO, SS:PILA, DS:DATOS
    INICIO: MOV AH,06H
            MOV BH,2FH
            MOV CX,0000H
            MOV DX,184FH
            INT 10H
         
            MOV AH,02H
            MOV BH,00H
            MOV DX,0000H
            INT 10H


            MOV AX,DATOS
            MOV DS,AX
            LEA DX,MENSAJE
            MOV AH,9H
            INT 21H

            MOV AX,4C00H
            INT 21H

CODIGO ENDS
END INICIO
  ------------------------------------------------------------------------------------
pila segment stack 'stack'
    db 100h dup (?)
pila ends


datos segment             ;texto e instrucciones.
    titulo db 13,10,' CAMBIAR FONDO DE PANTALLA',13,10,'$'
    mensaje db 'Presione ENTER si quiere la pantalla azul. Si quiere morado, presione 2',13,10,'Para salir, presione cualquier tecla',13,10,'$'
datos ends

codigo segment ;segmento de codigo
    assume cs:codigo, ss:pila, ds:datos
 
    ;prepara pantalla
 
    inicio:
        mov ah,0   
        mov al,3h     ;modo texto   
        int 10h       ;interrupcion de video

        mov ax,0600h  ;limpia pantalla
        mov bh,0fh     ;0 color de fondo negro, f letra en blanco
        mov cx,0000h
        mov dx,184Fh
        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
     
     
     ;captura de teclas
     
        mov ah,08   ;pausa y captura datos 08 espera que el usuario presione una tecla
        int 21h
     
        cmp al,13      ;verifica si presiono ENTER
        je llamarAzul   ;salto condicional, jump equals opcion 1 saltar si es igual a la opcion 1
     
     
        cmp al,50        ;compara si el registro al tiene 50 que en ascii es el digito "2"
        je llamarMorado
     
        jmp fin           ;finaliza en caso de no recibir respuesta de enter o 2
                       
                       
    fin:                   ;saca el mensaje por pantalla
 
        mov ax,4c00h
        int 21h
     
    llamarAzul:
        CALL AZULPROC
     
    llamarMorado:
        CALL MORADOPROC
                   
                   
    ;stored procedure azul
                   
     
    AZULPROC PROC NEAR
     
        mov ah,0   
        mov al,3h    ;modo texto
        int 10h      ;interrupcion de video
     
     
        mov ax,0600h  ;limpia pantalla
        mov bh,0fh     ;0 color de fondo negro, f letra en blanco
        mov cx,0000h
        mov dx,184Fh
        int 10h
     
     
        mov ah,02h
        mov bh,00
        mov dh,00
        mov dl,00
        int 10h
     
        ;aqui es donde se hace el cambio de color a azul
     
        mov ah,06h
        mov bh,1fh         ;1 en vez de 0, el 1 es para el azul
        mov cx,0000h

        mov dx,184fh
        int 10h
     
        mov ax,4c00h       ;terminacion de programa
        int 21h
    RET
    AZULPROC ENDP   
 
 
    ;stored procedure morado
 
 
    MORADOPROC PROC NEAR
     
        mov ah,06h
        mov bh,5fh       ; el 5 es para el color morado
        mov cx,0000h
        mov dx,184fh
        int 10h
     
        mov ax,4c00h
        int 21h
    RET
    MORADOPROC ENDP
 
 
codigo ends
end inicio                  ;podemos asignar donde se inicia  PC

Comentarios

Entradas populares de este blog

Uso de INT 21h en ej. Limpiar Pantalla.

programa turbo assembler