PAGE 66,132 TITLE** PROGRAMMA di GESTIONE di programmi ASSEMBLER tipo COM (aprile 2009) SUBTTL** EsE003.ASM - Esercizi PALESTRA ASSEMBLY ESPERTI - by ing. G.OBER ;/---------------------------------------------------------------------------\ ;| NOME : EsE003.ASM | ;| AUTORE : Giorgio OBER | ;| VERSIONE : aprile 2009 | ;| DESCRIZIONE : Esercizio nø 0003 | ;| DESCRIZIONE : Progetto di un desktop: Intestazione, menu e copyright. | ;| Il programma non gestisce i tasti. | ;\---------------------------------------------------------------------------/ ; 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 BIOScls:NEAR EXTRN SET_cur:NEAR EXTRN VIA_cur:NEAR EXTRN RIP_cur:NEAR EXTRN BIOchr1:NEAR EXTRN KEYwait:NEAR EXTRN BIOSmsg:NEAR ; DICHIARAZIONI (VARIABILI) PER I PROGRAMMI ESTERNI: PUBLIC ATTRIB ;Attributo di colore ; DICHIARAZIONI (PROCEDURE) PER I PROGRAMMI ESTERNI: PUBLIC EsE003 ;DEFINIZIONE DEL SEGMENTO DEL CODICE ;----------------------------------------------------------------------------- _prog SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:_prog,DS:_prog ORG 0100H INIZIO: JMP EsE003 ;AREA DESTINATA AI DATI DEL PROGRAMMA ;----------------------------------------------------------------------------- ATTRIB DB 0FH Testo01 DB "PROGRAMMA DI COLLAUDO DELL'ESERCIZIO Nø3",00H MENU_01 DB "About Start Incrementa Decrementa",00H MENU_02 DB "Quit",00H Testo02 DB "TUTORIAL ASSEMBLY ~ESPERTI~ --- Copyright" DB " www.Giobe2000.it --- aprile 2009",00H ;AREA DESTINATA ALLE PROCEDURE DEL PROGRAMMA ;/---------------------------------------------------------------------------\ ;| PROCEDURA : BARRA | ;| DESCRIZIONE : Stampa una intera riga di caratteri vuoti, ideale per | ;| scrivere titoli e menu!! | ;\---------------------------------------------------------------------------/ BARRA: PUSH AX PUSH CX MOV CX,80 MOV AL,' ' Barra0: CALL BIOchr1 LOOP Barra0 POP CX POP AX RET ;***************************************************************************** ; ---------------------------------------------- EsE003 proc NEAR ; AREA DEDICATA AL MAIN PROGRAM ; ---------------------------------------------- ;----------------------------------------------------------------------------- CALL BIOScls ; Pulisce lo schermo CALL VIA_cur ; Fa sparire il cursore M_CURSOR 0,0 ; Stampa l'intera riga 0 (la prima) con M_COLOR 1FH ; caratteri vuoti (spazi) CALL BARRA ; M_CURSOR 23,0 ; Stampa l'intera riga 24 (l'ultima) con M_COLOR 1FH ; caratteri vuoti (spazi) CALL BARRA ; M_msgC Testo01,0,17,1FH ;Stampa il titolo M_msgC Testo02,24,1,04H ;Stampa il copyright M_msgC MENU_01 23, 1,1FH; Testo del Menu M_msgC MENU_02 23,75,1FH; Quit M_Chr 'A',23, 1,1EH ; [A]bout M_Chr 'S',23,10,1EH ; [S]tart M_Chr 'I',23,19,1EH ; [I]ncrementa M_Chr 'D',23,33,1EH ; [D]ecrementa M_Chr 'Q',23,75,1EH ; [Q]uit CALL KEYwait ;Rimane in attesa della pressione di un tasto PUSH AX ; Torna al DOS con la memoria liberata e con la CALL RIP_cur ; chiusura di tutti i file; cede il controllo MOV DH,23 ; al processo padre (generalmente COMMAND.COM); MOV DL,0 ; il valore posto eventualmente in AL prima di CALL SET_cur ; uscire pu• essere testato in uscita con la POP AX ; funzione 4DH o mediante la lettura della MOV AH,4CH ; variabile DOS "ERRORLEVEL" INT 21H ; EsE003 ENDP ; Chiusura della Procedura "Main Program" _prog ENDS ; Chiusura del Segmento di CODICE END INIZIO ; Indirizzo dell'ultima istruzione da compilare