PAGE 66,132 TITLE** PROGRAMMA di GESTIONE di programmi ASSEMBLER tipo COM (aprile 2009) SUBTTL** EsE004_1.ASM - Esercizi PALESTRA ASSEMBLY ESPERTI - by ing. G.OBER ;/---------------------------------------------------------------------------\ ;| NOME : EsE004_1.ASM | ;| AUTORE : Giorgio OBER | ;| VERSIONE : aprile 2009 | ;| DESCRIZIONE : Variante Es.nø0004-Progetto ed uso della PROCEDURA "Cornice"| ;\---------------------------------------------------------------------------/ ; 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 KEYwait:NEAR EXTRN BIOScls:NEAR EXTRN BIOchr1:NEAR EXTRN BIObeep:NEAR EXTRN BIOSmsg:NEAR ; DICHIARAZIONI (VARIABILI) PER I PROGRAMMI ESTERNI: PUBLIC ATTRIB ;Attributo di colore ; DICHIARAZIONI (PROCEDURE) PER I PROGRAMMI ESTERNI: PUBLIC EsE004_1 ;DEFINIZIONE DEL SEGMENTO DEL CODICE ;----------------------------------------------------------------------------- _prog SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:_prog,DS:_prog ORG 0100H INIZIO: JMP EsE004_1 ;AREA DESTINATA AI DATI DEL PROGRAMMA ;----------------------------------------------------------------------------- ATTRIB DB 0FH ;AREA DESTINATA ALLE PROCEDURE DEL PROGRAMMA ;/---------------------------------------------------------------------------\ ;| PROCEDURA : Cornice | ;| DESCRIZIONE : Provvede alla stampa di una cornice di dimensioni fisse,| ;| 12x12, nella posizione di stampa corrente passata, in | ;| ingresso, nei registri DH (riga) e DL (colonna). | ;\---------------------------------------------------------------------------/ Corn00 DB "ÚÄÄÄÄÄÄÄÄÄÄ¿",00H ; Corn01 DB "³úúúúúúúúúú³",00H ; Variabili locali, proprie della procedura Corn02 DB "ÀÄÄÄÄÄÄÄÄÄÄÙ",00H ; ;---------------------------------------------------------------------------- Cornice: M_msgC Corn00,DH,DL,0EH; INC DH ; "ÚÄÄÄÄÄÄÄÄÄÄ¿" MOV CX,10 ; Provvede alla stampa xxx02: M_msgC Corn01,DH,DL,0EH; "³úúúúúúúúúú³" della cornice 12*12, INC DH ; contenente 100 puntini LOOP xxx02 ; "ÀÄÄÄÄÄÄÄÄÄÄÙ" M_msgC Corn02,DH,DL,0EH; RET ;***************************************************************************** ; ---------------------------------------------- EsE004_1 proc NEAR ; AREA DEDICATA AL MAIN PROGRAM ; ---------------------------------------------- ;----------------------------------------------------------------------------- CALL BIOScls ; Pulisce lo schermo e rende invisibile il CALL VIA_cur ; cursore MOV DL,35 ; Provvede alla stampa di una cornice di MOV DH, 6 ; dimensioni fisse, 12x12, nella posizione di CALL Cornice ; stampa (suo angolo in alto a sinistra) ; riga=6(=DH), colonna=35(=DL) CALL KEYwait ;Aspetta la pressione di un tasto qualunque ;Torna al DOS con la memoria liberata e con la ;chiusura di tutti i file; cede il controllo MOV AH,4CH ;al processo padre (generalmente COMMAND.COM); INT 21H ;il valore posto eventualmente in AL prima di ;uscire pu• essere testato in uscita con la ;funzione 4DH o mediante la lettura della ;variabile DOS "ERRORLEVEL" EsE004_1 ENDP ; Chiusura della Procedura "Main Program" _prog ENDS ; Chiusura del Segmento di CODICE END INIZIO ; Indirizzo dell'ultima istruzione da compilare