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
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
Publicar un comentario