PAGE 66,132 TITLE** PROGRAMMA di GESTIONE di programmi ASSEMBLER tipo COM (maggio 2012) SUBTTL ** TUTORIAL ASSEMBLY -- www.giobe2000.it -- by ing. Giorgio OBER ;/---------------------------------------------------------------------------\ ;| NOME : OutMatrx.ASM | ;| AUTORE : Giorgio OBER | ;| VERSIONE : novembre 2012 | ;| DESCRIZIONE : Gestione di una PORTA PARALLELA a basso livello, al fine di| ;| controllare due display a Matrice di punti posti sulla porta| ;| 0378H con interfaccia a decoder binario 74LS154. | ;| /----------\ -------------------------------------------------------------| ;| | | Se si lavora con i Sistemi Operativi Win2000, Win NT o WinXP | ;| | NB !! | bisogna prima installare il Driver Configura_LPT1; scaricalo | ;| | | a: http://www.giobe2000.it/consigli/Scarica_VediLPT_XP.htm | ;| *----------* -------------------------------------------------------------| ;| | | Se si lavora con i Sistemi Operativi Win2000, Win NT o WinXP | ;| | NB !! | la SHELL DOS deve essere a "Pieno Schermo" (l'esecuzione in | ;| | | "finestra DOS" non produce effetto sulla Stampante) | ;| *----------* -------------------------------------------------------------| ;| | | In ogni caso PRIMA DI OGNI SESSIONE DOS Š necessario eseguire| ;| | NB !! | il programma Config_LPT1.EXE in ambiente Windows per attivare| ;| | | la visibilit… dei driver installati con Configura_LPT1 !!!!! | ;| \----------/ -------------------------------------------------------------| ;\---------------------------------------------------------------------------/ ; COSTANTI DEFINITE PER IL PROGRAMMA: PRNdato EQU 378H ;Registro dei DATI ( USCITA ) PRNcomd EQU 37AH ;Registro di CONTROLLO ( USCITA ) ; MACRO UTILIZZATE DAL PROGRAMMA: include c:\arch-lab\bin\GIOBE.MAC ; LIBRERIA UTILIZZATA DAL PROGRAMMA [opzione WinASM altrimenti non necessaria] includelib c:\arch-lab\bin\GIOBE.LIB ;PROCEDURE ESTERNE UTILIZZATE dal PROGRAMMA [NEAR, dalla LIBRERIA ~GIOBE.LIB~] ;----------------------------------------------------------------------------- EXTRN CambiaCol:NEAR EXTRN SET_cur:NEAR EXTRN VIA_cur:NEAR EXTRN RIP_cur:NEAR EXTRN STASP:NEAR EXTRN KEYwait:NEAR EXTRN BIOSmsg:NEAR EXTRN Byt2Asc:NEAR EXTRN RAMcls:NEAR EXTRN RAMchr:NEAR EXTRN RAMcur:NEAR EXTRN RAMmes:NEAR EXTRN RIEMPI:NEAR EXTRN RAMpiu:NEAR EXTRN Del_1:NEAR ; DICHIARAZIONI PER I PROGRAMMI ESTERNI: PUBLIC ATTRIB PUBLIC OutMatrx ;DEFINIZIONE DEL SEGMENTO DEL CODICE ;----------------------------------------------------------------------------- _prog SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:_prog,DS:_prog ORG 0100H INIZIO: JMP OutMatrx ;AREA DESTINATA AI DATI DEL PROGRAMMA ;\---------------------------------------------------------------------------/ ATTRIB DB 1FH TESTO1 DB "Controllo di due Dot LED Matrix via LPT1",00H TESTO2 DB "--[ www.Giobe2000.it ]--",00H TESTO3 DB "Immagine Fissa",00H TESTO4 DB "Immagine scorrevole",00H TESTO5 DB "Quit",00H TAB_Tot DB 01111110B ; "°ÛÛÛÛÛÛ°" <------------------------ DB 10000001B ; "Û°°°°°°Û" DB 10010101B ; "Û°°Û°Û°Û" DB 10110001B ; "Û°ÛÛ°°°Û" DB 10110001B ; "Û°ÛÛ°°°Û" DB 10010101B ; "Û°°Û°Û°Û" DB 10000001B ; "Û°°°°°°Û" DB 01111110B ; "°ÛÛÛÛÛÛ°" <------------------------ TAB_FE DB 00000000B ; "°°°°°°°°" <------------------------ DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 00001001B ; "°°°°Û°°Û" DB 00001001B ; "°°°°Û°°Û" DB 00000001B ; "°°°°°°°Û" DB 00000001B ; "°°°°°°°Û" DB 00000000B ; "°°°°°°°°" <------------------------ DB 00000000B ; "°°°°°°°°" <------------------------ DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 10001001B ; "Û°°°Û°°Û" DB 10001001B ; "Û°°°Û°°Û" DB 10000001B ; "Û°°°°°°Û" DB 10000001B ; "Û°°°°°°Û" DB 00000000B ; "°°°°°°°°" <------------------------ DB 01111110B ; "°ÛÛÛÛÛÛ°" <------------------------ DB 10000001B ; "Û°°°°°°Û" DB 10010101B ; "Û°°Û°Û°Û" DB 10110001B ; "Û°ÛÛ°°°Û" DB 10110001B ; "Û°ÛÛ°°°Û" DB 10010101B ; "Û°°Û°Û°Û" DB 10000001B ; "Û°°°°°°Û" DB 01111110B ; "°ÛÛÛÛÛÛ°" <------------------------ ;AREA DESTINATA ALLE PROCEDURE DEL PROGRAMMA ;/---------------------------------------------------------------------------\ ;|PROCEDURA : DeskTop | ;|DESCRIZIONE: Procedura che inizializza completamente il piano di lavoro.| ;\---------------------------------------------------------------------------/ DeskTop:CALL RAMcls ;Pulisce lo schermo e inizializza il segmento ;dedicato alla RamVideo (ES=0B800H) CALL VIA_cur ; Rende il cursore invisibile M_COLOR 71H ; MOV AL,"°" ; CALL RIEMPI ; RAMrepC 80," ", 0, 0,30H; RAMrepC 80," ",24, 0,30H; RAMcol TESTO1, 0,20,3FH; Organizza il piano di presentazione RAMcol TESTO2,24, 2,3FH; "www.Giobe2000.it --- " RAMcol TESTO3,24,28,30H; "Immagine Fissa" RAMcol TESTO4,24,46,30H; "Immagine scorrevole" RAMcol TESTO5,24,73,30H; "Quit" M_COLOR 3FH ; RAM_cur 24,37 ; MOV AL,"F" ; "Immagine Fissa" CALL RAMchr ; RAM_cur 24,55 ; MOV AL,"S" ; "Immagine scorrevole" CALL RAMchr ; RAM_cur 24,73 ; MOV AL,"Q" ; "Quit" CALL RAMchr ; RET ;/---------------------------------------------------------------------------\ ;|PROCEDURA : Colonna | ;|DESCRIZIONE: Procedura che provvede a gestire completamente l'accensione| ;| degli 8 Led di una Colonna di display a Matrice di punti| ;| pilotati dalla porta 0378H della parallela e da una delle 16| ;| linee d'uscita di un decoder 74LS154 posto sulla porta 037AH. | ;| | ;| Il byte da scrivere sulla Colonna è atteso, in ingresso, in AL| ;| e il numero d'ordine della Colonna da servire è atteso in AH e| ;| lasciato inalterato in uscita, per consentirne la gestione. | ;| | ;| /-[037AH/027AH - PORTA d'USCITA dei COMANDI]---------------\ | ;| | | * | * | * | * |Out|Out|Out|Out| | | ;| |non \---*---*---*---*---*---*---*---/ | | ;| |disponib.*---*---*---/ | | | | | | ;| |pin 17 Negato------------/ | | | <<< bit3 | | ;| |pin 16 ----------------------/ | | <<< bit2 | | ;| |pin 14 Negato--------------------/ | <<< bit1 | | ;| |pin 1 Negato------------------------/ <<< bit0 | | ;| \----------------------------------------------------------/ | ;| | ;| AH=00H >>>> 0000 0000 >>> 0000 1011 >>>> 0BH | ;| AH=01H >>>> 0000 0001 >>> 0000 1010 >>>> 0AH | ;| AH=02H >>>> 0000 0010 >>> 0000 1001 >>>> 09H | ;| AH=03H >>>> 0000 0011 >>> 0000 1000 >>>> 08H | ;| AH=04H >>>> 0000 0100 >>> 0000 1111 >>>> 0FH | ;| AH=05H >>>> 0000 0101 >>> 0000 1110 >>>> 0EH | ;| AH=06H >>>> 0000 0110 >>> 0000 1101 >>>> 0DH | ;| AH=07H >>>> 0000 0111 >>> 0000 1100 >>>> 0CH | ;| AH=08H >>>> 0000 1000 >>> 0000 0011 >>>> 03H | ;| AH=09H >>>> 0000 1001 >>> 0000 0010 >>>> 02H | ;| AH=0AH >>>> 0000 1010 >>> 0000 0001 >>>> 01H | ;| AH=0BH >>>> 0000 1011 >>> 0000 0000 >>>> 00H | ;| AH=0CH >>>> 0000 1100 >>> 0000 0111 >>>> 07H | ;| AH=0DH >>>> 0000 1101 >>> 0000 0110 >>>> 06H | ;| AH=0EH >>>> 0000 1110 >>> 0000 0101 >>>> 05H | ;| AH=0FH >>>> 0000 1111 >>> 0000 0100 >>>> 04H | ;| disponib.---//// |||| | ;| pin 17 Negato--[bit3]----------/||| | ;| pin 16 --------[bit2]-----------/|| | ;| pin 14 Negato--[bit1]------------/| | ;| pin 1 Negato--[bit0]-------------/ | ;| | ;\---------------------------------------------------------------------------/ Colonna:PUSH AX MOV DX,0378H ; Punta il Registro DATI 0378H della parallela OUT DX,AL ; Eroga il byte desiderato per Colonna corrente MOV DX,037AH ; Punta la Colonna corrente passando al decoder MOV AL,AH ; 74LS154 il suo codice binario fornito in ; ingresso in AH XOR AL,000001011B ; Poichè i 3 dei 4 bit del Registro di CONTROLLO ; 037AH sono inveriti i ntenamente è necessario ; provvedere alla ricostruzione del valore da ; fornire realmente al decoder 74LS154, cosa ; facilmente ottenibile con una logica OREX con ; il valore 00001011, che "rovescia" in valore ; dei soli bit3, bit1 e bit0, come richiesto. OUT DX,AL ; Accende gli 8 Led della colonna corrente con ; l'aiuto del Registro di CONTROLLO 037AH CALL Del_1 ; Genera un ritardo fisso di 1 millisecondo POP AX RET ;/---------------------------------------------------------------------------\ ;|PROCEDURA : Matrice | ;|DESCRIZIONE: Procedura che provvede a gestire completamente l'accensione| ;| dei 64 Led di un display a Matrice di punti pilotato dalla| ;| porta 0378H della parallela e dalle 16 linee d'uscita di un| ;| decoder binario 74LS154 controllato della porta 037AH. | ;| | ;| Il primo degli 8 bytes da scrivere sulle 8 Colonne è puntato,| ;| in ingresso, da SI (il cui valore dovrà essere predisposto| ;| dalla procedura chiamante); i rimanenti 7 bytes sono attesi| ;| nelle locazioni successive a quella puntata in ingresso da SI.| ;| | ;| Il valore di AH fornito in ingresso indica la posizione del| ;| display a Matrice di punti che deve essere coinvolto;se AH=00H| ;| ci si riferisce a quello più significativo (quello a sinistra)| ;| se AH=08H ci si riferisce a quello meno significativo (quello| ;| a destra. | ;\---------------------------------------------------------------------------/ Matrice:MOV CX,8 ; Prepara il contatore di Colonne 8x8 da servire Mat00: MOV AL,[SI] ; Assume il valore a 8bit della Colonna corrente INC SI ; Aggiorna il puntatore alla Tab delle Colonne CALL Colonna ; Accende gli 8 Led della Colonna corrente, ; identificandola a partire dal valore corrente ; di AH, fornito al decoder 74LS154 tramite la ; porta 037AH della parallela, spedendo gli 8bit ; ad essa corrispondenti alla porta 0378H della ; parallela INC AH ; Punta la Colonna successiva e ... LOOP Mat00 ; ... ripete l'operazione RET ;/---------------------------------------------------------------------------\ ;|PROCEDURA : Display | ;|DESCRIZIONE: Procedura che provvede a gestire completamente l'accensione| ;| dei 64+64 Led di due display a Matrice di punti pilotati dalla| ;| porta 0378H della parallela e dalle 16 linee d'uscita di un| ;| decoder binario 74LS154 controllato della porta 037AH. | ;| | ;| L'informazione, visualizzata in modo fisso,viene assunta dagli| ;| 8+8 bytes raccolti nella tabella puntata in ingresso da SI. | ;\---------------------------------------------------------------------------/ Display:MOV AH,00 ; Attiva il servizio per la Matrice di punti ; associata al display più significativo (quello ; a sinistra) CALL Matrice ; Provvede a gestire completamente l'accensione ; dei 64 Led del display a Matrice di punti più ; significativa ; Poichè la procedura "Matrice" provvede da sola ; all'incremento del puntatore di colanna AH, ; esso è già pronto, in uscita, con il valore ; AH=08H necessario per puntare il display meno ; significativo (quello a destra) CALL Matrice ; Provvede a gestire completamente l'accensione ; dei 64 Led del display a Matrice di punti meno ; significativa MOV AH,01H ; Provvede a verificare la eventuale pressione INT 16H ; di tasti della tastiera del PC senza fermarsi; ; se ffZ="1" (JZ) non è stata rilevata nessuna JZ Display ; pressione di tasti, ed è così possibile ; ripetere la scansione completa dei due display ; senza interruzioni. RET ; Non appena viene rilevata la pressione di un ; tasto qualunque (ffZ="0" = tasto premuto , NZ) ; si rientra nella procedura chiamante ;/---------------------------------------------------------------------------\ ;|PROCEDURA : Scroll | ;|DESCRIZIONE: Procedura che provvede a gestire completamente l'accensione| ;| dei 64+64 Led di due display a Matrice di punti pilotati dalla| ;| porta 0378H della parallela e dalle 16 linee d'uscita di un| ;| decoder binario 74LS154 controllato della porta 037AH. | ;| | ;| L'informazione, visualizzata in modo scorrevole, viene assunta| ;| dagli 8+8 bytes inclusi (presumibilmente assieme ad altre| ;| ottuple di bytes in una tabella puntata in ingresso da SI. | ;\---------------------------------------------------------------------------/ Scroll: MOV DI,SI ; Copia il puntatore alla prima Colonna della ; Tabella dei caratteri da visualizzare MOV DX,CX ; Copia il numero di Colonne da visualizzare per ; ripristinarne il valore, all'occorrenza, in CX Scr_00: PUSH SI ; Salva il puntatore alla Tabella delle Colonne MOV AH,00 ; Attiva il servizio a partire dalla prima ; Colonna (quella più a sinistra) della Matrice ; di punti più significativa CALL Display ; Provvede a gestire completamente l'accensione ; dei 64+64 Led dei 2 display a Matrice di punti ; pilotati dalla porta 0378H della parallela e ; dalle 16 linee d'uscita del decoder binario ; 74LS154 controllato della porta 037AH; essa è ; visualizzata in modo fisso e l'informazione ; viene assunta dagli 8+8 bytes raccolti nella ; tabella puntata in ingresso da SI DEC CX ; Decrementa il numero di bytes ancora da servire POP SI ; Recupera il puntatore alla Tab delle Colonne e INC SI ;lo aggiorna per puntare la locazione successiva ; al fine di ottenere, nella ripetizione del ; processo, un effetto spostamento da destra ; verso sinistra CMP CX,0000H ; Se tutte le Colonne sono state servite si JNZ Scr_01 ; reinizializza il puntatore all'inizio della ; Tabella della stringa da visualizzare, si MOV SI,DI ;ripristina il numero di Colonne da visualizzare MOV CX,DX ; e si ripete lo scorrimento con lo stesso testo Scr_01: MOV AH,01H ; Provvede a verificare la eventuale pressione INT 16H ; di tasti della tastiera del PC senza fermarsi; ; se ffZ="1" (JZ) non è stata rilevata nessuna JZ Scr_00 ; pressione di tasti, ed è così possibile ; ripetere la scansione completa dei due display ; senza interruzioni. RET ; Non appena viene rilevata la pressione di un ; tasto qualunque (ffZ="0" = tasto premuto , NZ) ; si rientra nella procedura chiamante ;***************************************************************************** ; ---------------------------------------------- OutMatrx proc NEAR ; AREA DEDICATA AL MAIN PROGRAM ; ---------------------------------------------- ;----------------------------------------------------------------------------- CALL DeskTop ; Organizza il piano di presentazione xxx00: CALL KEYwait ; Si ferma in attesa della pressione di un tasto AND AL,11011111B ; rende maiuscolo il codice Ascii del tasto CMP AL,"F" ; Se si tratta del tasto "F" si prosegue con il JZ xxx01 ; servizio di visualizzazione "Immagine Fissa" CMP AL,"S" ; Se si tratta del tasto "S" si prosegue con il JZ xxx02 ; servizio di visualizzazione "Imm. scorrevole" CMP AL,"Q" ; Se si tratta del tasto "Q" impone il ritorno JNZ xxx00 ; immediato al sistema operativo _OUT: PUSH AX CALL RIP_cur ; Torna al DOS con la memoria liberata e con la MOV DH,23 ; chiusura di tutti i file; cede il controllo MOV DL,0 ; al processo padre (generalmente COMMAND.COM); CALL SET_cur ; il valore posto eventualmente in AL prima di POP AX ; uscire pu• essere testato in uscita con la MOV AH,4CH ; funzione 4DH o mediante la lettura della INT 21H ; variabile DOS "ERRORLEVEL" xxx01: LEA SI,Tab_FE ; Prepara il puntatore alla tabella di caratteri ; della stringa da spedire alle matrici di punti CALL Display ; Provvede a gestire completamente l'accensione ; dei 64+64 Led dei 2 display a Matrice di punti ; pilotati dalla porta 0378H della parallela e ; dalle 16 linee d'uscita del decoder binario ; 74LS154 controllato della porta 037AH ; L'informazione viene gestita in modo fisso JMP xxx00 ; Su richiesta della procedura "Display" si ; rientra nel Main Loop, in attesa di comandi xxx02: LEA SI,Tab_Tot ; Prepara il puntatore alla tabella di caratteri ; della stringa da spedire alle matrici di punti MOV CX,24 ; E' previsto il servizio di 24 Colonne (3 Chr) CALL Scroll ; Provvede a gestire completamente l'accensione ; dei 64+64 Led dei 2 display a Matrice di punti ; pilotati dalla porta 0378H della parallela e ; dalle 16 linee d'uscita del decoder binario ; 74LS154 controllato della porta 037AH ; L'informazione viene gestita in modo scorrevole JMP xxx00 ; Su richiesta della procedura "Display" si ; rientra nel Main Loop, in attesa di comandi OutMatrx ENDP ; Chiusura della Procedura "Main Program" _prog ENDS ; Chiusura del Segmento di CODICE END INIZIO ; Indirizzo dell'ultima istruzione da compilare ;----------------------------------------------------------------------------- TAB_A DB 01111100B ; "°ÛÛÛÛÛ°°" DB 10000010B ; "Û°°°°°Û°" DB 10000010B ; "Û°°°°°Û°" DB 10000010B ; "Û°°°°°Û°" DB 11111110B ; "ÛÛÛÛÛÛÛ " DB 10000010B ; "Û°°°°°Û°" DB 10000010B ; "Û°°°°°Û°" ;----------------------------------------------------------------------------- TabChr DB 01111110B ; "°ÛÛÛÛÛÛ°" DB 10000001B ; "Û°°°°°°Û" DB 10010101B ; "Û°°Û°Û°Û" DB 10110001B ; "Û°ÛÛ°°°Û" DB 10110001B ; "Û°ÛÛ°°°Û" DB 10010101B ; "Û°°Û°Û°Û" DB 10000001B ; "Û°°°°°°Û" DB 01111110B ; "°ÛÛÛÛÛÛ°" DB 01111110B ; "°ÛÛÛÛÛÛ°" DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 11101011B ; "ÛÛÛ°Û°ÛÛ" DB 11001111B ; "ÛÛ°°ÛÛÛÛ" DB 11001111B ; "ÛÛ°°ÛÛÛÛ" DB 11101011B ; "ÛÛÛ°Û°ÛÛ" DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 01111110B ; "°ÛÛÛÛÛÛ°" DB 00001110B ; "°°°°ÛÛÛ°" DB 00011111B ; "°°°ÛÛÛÛÛ" DB 00111111B ; "°°ÛÛÛÛÛÛ" DB 01111110B ; "°ÛÛÛÛÛÛ°" DB 00111111B ; "°°ÛÛÛÛÛÛ" DB 00011111B ; "°°°ÛÛÛÛÛ" DB 00001110B ; "°°°°ÛÛÛ°" DB 00000000B ; "°°°°°°°°" DB 00001000B ; "°°°°Û°°°" DB 00011100B ; "°°°ÛÛÛ°°" DB 00111110B ; "°°ÛÛÛÛÛ°" DB 01111111B ; "°ÛÛÛÛÛÛÛ" DB 00111110B ; "°°ÛÛÛÛÛ°" DB 00011100B ; "°°°ÛÛÛ°°" DB 00001000B ; "°°°°Û°°°" DB 00000000B ; "°°°°°°°°" DB 00000000B ; "°°°°°°°°" DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 10001001B ; "Û°°°Û°°Û" DB 10001001B ; "Û°°°Û°°Û" DB 10000001B ; "Û°°°°°°Û" DB 10000001B ; "Û°°°°°°Û" DB 00000000B ; "°°°°°°°°" DB 00000000B ; "°°°°°°°°" DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 11111111B ; "ÛÛÛÛÛÛÛÛ" DB 00001001B ; "°°°°Û°°Û" DB 00001001B ; "°°°°Û°°Û" DB 00000001B ; "°°°°°°°Û" DB 00000001B ; "°°°°°°°Û" DB 00000000B ; "°°°°°°°°" ;----------------------------------------------------------------------------- DB 01111110B ; "°ÛÛÛÛÛÛ°" ; 7EH DB 10000001B ; "Û°°°°°°Û" ; 81H DB 10100101B ; "Û°Û°°Û°Û" ; A5H DB 10000001B ; "Û°°°°°°Û" ; 81H DB 10111101B ; "Û°ÛÛÛÛ°Û" ; BDH DB 10011001B ; "Û°°ÛÛ°°Û" ; 99H DB 10000001B ; "Û°°°°°°Û" ; 81H DB 01111110B ; "°ÛÛÛÛÛÛ°" ; 7EH DB 01111110B ; "°ÛÛÛÛÛÛ°" ; 7EH DB 11111111B ; "ÛÛÛÛÛÛÛÛ" ; FFH DB 11011011B ; "ÛÛ°ÛÛ°ÛÛ" ; DBH DB 11111111B ; "ÛÛÛÛÛÛÛÛ" ; FFH DB 11000011B ; "ÛÛ°°°°ÛÛ" ; C3H DB 11100111B ; "ÛÛÛ°°ÛÛÛ" ; E7H DB 11111111B ; "ÛÛÛÛÛÛÛÛ" ; FFH DB 01111110B ; "°ÛÛÛÛÛÛ°" ; 7EH DB 01101100B ; "°ÛÛ°ÛÛ°°" ; 6CH DB 11111110B ; "ÛÛÛÛÛÛÛ°" ; FEH DB 11111110B ; "ÛÛÛÛÛÛÛ°" ; FEH DB 11111110B ; "ÛÛÛÛÛÛÛ°" ; FEH DB 01111100B ; "°ÛÛÛÛÛ°°" ; 7CH DB 00111000B ; "°°ÛÛÛ°°°" ; 38H DB 00010000B ; "°°°Û°°°°" ; 10H DB 00000000B ; "°°°°°°°°" ; 00H DB 00010000B ; "°°°Û°°°°" ; 10H DB 00111000B ; "°°ÛÛÛ°°°" ; 38H DB 01111100B ; "°ÛÛÛÛÛ°°" ; 7CH DB 11111110B ; "ÛÛÛÛÛÛÛ°" ; FEH DB 01111100B ; "°ÛÛÛÛÛ°°" ; 7CH DB 00111000B ; "°°ÛÛÛ°°°" ; 38H DB 00010000B ; "°°°Û°°°°" ; 10H DB 00000000B ; "°°°°°°°°" ; 00H DB 01111110B ; "°ÛÛÛÛÛÛ°" ; 7EH DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 01111000B ; "°ÛÛÛÛ°°°" ; 78H DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 01111110B ; "°ÛÛÛÛÛÛ°" ; 7EH DB 00000000B ; "°°°°°°°°" ; 00H DB 01111110B ; "°ÛÛÛÛÛÛ°" ; 7EH DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 01111000B ; "°ÛÛÛÛ°°°" ; 78H DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 01100000B ; "°ÛÛ°°°°°" ; 60H DB 00000000B ; "°°°°°°°°" ; 00H ;-----------------------------------------------------------------------------