PAGE 66,132 TITLE** PROGRAMMA di GESTIONE di programmi ASSEMBLER tipo COM (aprile 2009) SUBTTL** EsA008.ASM - Esercizi PALESTRA ASSEMBLY APPRENDISTI - by ing. G.OBER ;/---------------------------------------------------------------------------\ ;| NOME : EsA008.ASM | ;| AUTORE : Giorgio OBER | ;| VERSIONE : aprile 2009 | ;| DESCRIZIONE : Esercizio nø 0008 | ;| Pulisce lo schermo e stampa 10 caratteri a colori a partire | ;| da un punto preciso dello schermo. | ;| (usa in TUTTO le procedure della Libreria Giobe.LIB). | ;\---------------------------------------------------------------------------/ ; 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 BIOScls:NEAR EXTRN KEYwait:NEAR EXTRN BIOchr1:NEAR EXTRN SET_cur:NEAR ;Dichiarazione di VARIABILI interne utili alle PROCEDURE ESTERNE ; (da assumere dalla LIBRERIA GIOBE.LIB) PUBLIC ATTRIB ;Attributo di colore ;DEFINIZIONE DEL SEGMENTO DEL CODICE ;----------------------------------------------------------------------------- _prog SEGMENT BYTE PUBLIC 'CODE' ;Inizio Standard del Segmento di CODICE ASSUME CS:_prog,DS:_prog ;Associazione Standard per i Segmenti ORG 0100H ;Indirizzo d'Inizio standard dell'eseguibile COM INIZIO: ;Indirizzo della prima istruzione da compilare JMP EsA008 ;Istruzione Standard che salta le (eventuali) ;variabili del programma e punta il Main Program ;AREA DESTINATA AI DATI DEL PROGRAMMA ;----------------------------------------------------------------------------- ATTRIB DB 1FH ;Attributo di colore: Bianco brillante su Blu ;***************************************************************************** ; ---------------------------------------------- EsA008 proc NEAR ; AREA DEDICATA AL MAIN PROGRAM ; ---------------------------------------------- ;----------------------------------------------------------------------------- ; Provvede alla cancellazione del video, CALL BIOScls ; posizionando il cursore alla riga0, colonna0, ; in alto a sinistra MOV DH,12 ; MOV DL,39 ; Fissa la posizione di stampa a riga12, coln39 CALL SET_cur ; MOV CX,10 ; Carica il contatore a 10 xxx00: PUSH CX ; Mette al sicuro il valore corrente del Contatore ; Provvede alla stampa del carattere Ascii "A" MOV AL,'A' ; con il codice di attributo di colore predispo- CALL BIOchr1 ; sto nella variabile locale di nome ATTRIB, ; nella posizione di stampa corrente POP CX ; Recupera il valore corrente del Contatore LOOP xxx00 ; Aggiorna il contatore e ripete finch‚ serve... CALL KeyWait ; Rimane in attesa della pressione di un tasto ; qualunque (lasciando il suo valore in AL) MOV AH,4CH ; Pone fine al processo (eseguibile) in atto INT 21H ; tornando al prompt del DOS nel modo migliore EsA008 ENDP ; Chiusura Standard della Procedura "MainProgram" _prog ENDS ; Chiusura Standard del Segmento di CODICE END INIZIO ; Indirizzo dell'ultima istruzione da compilare