PAGE 66,132 TITLE** PROGRAMMA di GESTIONE di programmi ASSEMBLER tipo COM (aprile 2009) SUBTTL** EsA004.ASM - Esercizi PALESTRA ASSEMBLY APPRENDISTI - by ing. G.OBER ;/---------------------------------------------------------------------------\ ;| NOME : EsA004.ASM | ;| AUTORE : Giorgio OBER | ;| VERSIONE : aprile 2009 | ;| DESCRIZIONE : Esercizio nř 0004 | ;| Pulisce lo schermo e stampa una stringa di caratteri Ascii | ;| senza colore (usa 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 BIOSchr:NEAR EXTRN KEYwait:NEAR ;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 EsA004 ;Istruzione Standard che salta le (eventuali) ;variabili del programma e punta il Main Program ;AREA DESTINATA AI DATI DEL PROGRAMMA ;----------------------------------------------------------------------------- Testo01 DB "Benvenuto tra i programmatori del Club ~Arch-Lab~",00H ;***************************************************************************** ; ---------------------------------------------- EsA004 proc NEAR ; AREA DEDICATA AL MAIN PROGRAM ; ---------------------------------------------- ;----------------------------------------------------------------------------- ;Provvede alla cancellazione del video, CALL BIOScls ;posizionando il cursore alla riga0, colonna0, ;in alto a sinistra 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 BIOSchr ;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 EsA004 ENDP ;Chiusura Standard della Procedura "MainProgram" _prog ENDS ;Chiusura Standard del Segmento di CODICE END INIZIO ;Indirizzo dell'ultima istruzione da compilare