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