El día de hoy les traigo unos cuantos programas hechos por ciertos compañeros de clase:
Programa 9: colores en letras y fondo por Torres.
Libreria:
Resultado:
Cuadros de colores por Alex Gutierrez:
Resultado:
Programa 9: colores en letras y fondo por Torres.
CR EQU 13 ;Declaro retorno de carro
LF EQU 10 ;Declaro salto de linea
BIOS EQU 10H ;Declaro interrupcion 10h
DOS EQU 21H ;Declaro interrupcion 21h
TEXTO EQU 3 ;Declaro el servicio 03 para la impresion de texto desde BIOS
FIN EQU 4C00H ;Declaro interrupcion de exit
VARIABLES SEGMENT ;Declaro las variables
include "emu8086.inc"
TITULO DB "Colores_UwU" ;Un texto
M1 DB "A",'$'
COLORES DB 01001110B ;Una agrupacion de colores
DB 01101111B
DB 01110011B
DB 01011100B
DB 00110001B
DB 01011111B
DB 01101011B
DB 01011100B
DB 01101111B
DB 01001110B
DB 01101111B
VARIABLES ENDS
VPILA SEGMENT;STACK ;Declaro la pila
DB 64 DUP("PILA")
VPILA ENDS
CODIGO SEGMENT
COLO PROC FAR ;Declaro un procedimiento
ASSUME CS:CODIGO, DS:VARIABLES, SS:VPILA
MOV AX,VARIABLES
MOV DS,AX
MOV AX,TEXTO ;Invoco el servicio de impresion de texto
INT BIOS ;Ejecuto el servicio con 10h
MOV CX,11 ;Declaro el iterador en 11
XOR SI,SI ;Borro SI
BUCLE: ;Llamo al bucle
PUSH CX
MOV DX,SI ;Indico la posicion de la letra a imprimir con SI
ADD DX,35 ;Indico la coordenada en x, la coordenada inicial es x=35
MOV DH,12 ;Indico la coordenada en y
CALL COLOCA ;Llamo al sistema para que coloque el cursor donde yo quiero
MOV AL,[SI+OFFSET TITULO] ;Le indico la letra a imprimir pasandole SI y el texto como parametros
MOV BL,[SI+OFFSET COLORES] ;Le indico los colores a imprimir pasandole SI y el conjunto de colores como parametros
CALL COLOR ;Llamo a la impresion del texto
POP CX
INC SI ;Incremento a SI para modificar la letra a imprimir y la coordenada en x
LOOPNZ BUCLE
MOV AH,8 ;08:Lee un caracter sin imprimir nada en pantalla
INT DOS ;Ejecuto el servicio
XOR DX,DX ;Limpio DX
CALL COLOCA ;Coloco el cursor en las coordenadas x=0 y=0
PUT_CURSOR 2,32
print "Colores modificado"
PUT_CURSOR 20,20
print "El programa a sido ejecutado correctamente"
TERMINA ;MACRO TERMINA
COLO ENDP
include "libtorres.inc"
CODIGO ENDS
END COLO
Libreria:
COLOR PROC
MOV AH,9 ;Invoco al servicio 09 para imprimir texto con formato
XOR BH,BH ;Limpio bh para indicarle que imprima en la misma pagina
INT BIOS ;Hago la impresion pidiendo la interrupcion 10h
RET ;retorno al programa principal
COLOR ENDP
COLOCA PROC
MOV AH,2 ;Invoco al servicio 02 de 10h para posicionar el cursor
XOR BX,BX ;Limpio bx para decirle que debe ser en la misma pagina
INT BIOS ;Coloco el cursor con 10h en funcion del servicio 02
RET ;retorno al programa principal
COLOCA ENDP
PUT_CURSOR MACRO X,Y
MOV AH,02H ;Para posicionar el cursor
MOV BH,00H ;Coloco en la pagina 0
MOV DH,X ;Establesco las coordenadas, x=dh=renglon
MOV DL,Y ; Establesco las coordenadas y=dl=columna
INT 10H ;ejecuto la interrupción
endm
TERMINA MACRO
MOV AX,4C00H ;Termino el programa
INT 21H ;llamando a la interrupcion 21h
ENDM
Resultado:
Cuadros de colores por Alex Gutierrez:
include 'emu8086.inc' CUADRO MACRO XI,YI,XF,YF,COLOR MOV AX, 0600H ; MOV BH, COLOR ; COLOR DE FONDO Y LETRA MOV BL, 00H MOV CH, YI ; Y INICIAL MOV CL, XI ; X INICIAL MOV DH, YF ; Y FINAL MOV DL, XF ; X FINAL INT 10h endM POSICION MACRO X,Y ; **** POSICIONA EL CURSOR ******** MOV DH, Y ; POSICI[ON EN Y MOV DL, X ; POSICI[ON EN X MOV AH, 02 MOV BH, 00 INT 10H ENDM DESPLEGAR MACRO MENSAJE MOV AH,09 ;****** MUESTRA MENSAJE ******* MOV DX,OFFSET MENSAJE INT 21h ENDM DATOS SEGMENT ;SEGMENTO DE DATOS M1 DB "A",'$' M2 DB "B",'$' M3 DB "C",'$' M4 DB "",'$' datos ends cincocuadros macro cuadro 1,1,20,5,98 posicion 10,3 desplegar M1 cuadro 21,1,40,5,11011100b posicion 30,3 desplegar M2 cuadro 41,1,60,5,36 posicion 50,3 desplegar M3 endM CODIGO SEGMENT ASSUME CS: CODIGO,DS:DATOS,SS:PILA PRINCIPAL PROC MOV AX,DATOS MOV DS,AX cincocuadros PRINCIPAL ENDP ;FIN DEL PROCEDIMIENTO CODIGO ENDS ;FIN DEL SEGMENTO END PRINCIPAL
Resultado:
Comentarios
Publicar un comentario