PAGE 66,132 TITLE** PROGRAMMA di GESTIONE di programmi ASSEMBLER tipo COM (aprile 2009) SUBTTL** EsA009.ASM - Esercizi PALESTRA ASSEMBLY APPRENDISTI - by ing. G.OBER ;/---------------------------------------------------------------------------\ ;| NOME : EsA009.ASM | ;| AUTORE : Giorgio OBER | ;| VERSIONE : aprile 2009 | ;| DESCRIZIONE : Esercizio nř 0009 | ;| Pulisce lo schermo e stampa stringa di caratteri a colori. | ;| ***** Prima Versione senza procedura specializzata ******** | ;\---------------------------------------------------------------------------/ ; 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 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 EsA009 ;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 Testo01 DB " Benvenuto tra i programmatori del Club ~Arch-Lab~ ",00H ;***************************************************************************** ; ---------------------------------------------- EsA009 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,15 ; Fissa la posizione di stampa a riga12,coln15 CALL SET_cur ; LEA SI,Testo01 ; Fissa il puntatore (nel nostro caso il registro ; SI) alla stringa da stampare xxx00: MOV AL,CS:[SI] ; Preleva il carattere Ascii corrente CMP AL,00H ; Controlla se si tratta del terminatore JZ xxx01 ; Se Š cosŤ la stampa della stringa Š finita... CALL BIOchr1 ; Altrimenti stampa il carattere corrente INC SI ; Aggiorna il puntatore SI per puntare il prossimo JMP SHORT xxx00 ; carattere e rientra nel loop per analizzarlo xxx01: 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 EsA009 ENDP ; Chiusura Standard della Procedura "MainProgram" _prog ENDS ; Chiusura Standard del Segmento di CODICE END INIZIO ; Indirizzo dell'ultima istruzione da compilare