PAGE 66,132 TITLE** PROGRAMMA di GESTIONE di programmi ASSEMBLER tipo COM (aprile 2009) SUBTTL** EsE007.ASM - Esercizi PALESTRA ASSEMBLY ESPERTI - by ing. G.OBER ;/---------------------------------------------------------------------------\ ;| NOME : EsE007.ASM | ;| AUTORE : Giorgio OBER | ;| VERSIONE : aprile 2009 | ;| DESCRIZIONE : Esercizio nø 0007 | ;| Progetto del desktop per il gioco "TRIS" | ;\---------------------------------------------------------------------------/ ; MACRO UTILIZZATE DAL PROGRAMMA: include c:\arch-lab\bin\GIOBE.MAC M_tris MACRO riga,colonna ; Provvede alla stampa di una cornice di MOV DL,colonna ; dimensioni fisse, 5x10, nella posizione di MOV DH,riga ; stampa (suo angolo in alto a sinistra) CALL Quadro ; specificata dai paremetri riga,colonna ENDM ; passati alla chiamata ; 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 STAsp:NEAR EXTRN Acapo: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 EsE007 ;DEFINIZIONE DEL SEGMENTO DEL CODICE ;----------------------------------------------------------------------------- _prog SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:_prog,DS:_prog ORG 0100H INIZIO: JMP EsE007 ;AREA DESTINATA AI DATI DEL PROGRAMMA ;----------------------------------------------------------------------------- ATTRIB DB 0FH Riquadr DB "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" DB "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" DB "³ " DB " ³" DB "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" DB "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" DB 00H Testo01 DB " Giochi e passatempi --- TRIS ---" DB " by Giobe2000 ",00H MENU_01 DB " [A]bout ",00H MENU_02 DB " [S]tart ",00H MENU_03 DB " ",00H MENU_04 DB " [Q]uit ",00H Testo02 DB "TUTORIAL ASSEMBLY ~ESPERTI~ --- Copyright" DB " www.Giobe2000.it --- aprile 2009",00H ;AREA DESTINATA ALLE PROCEDURE DEL PROGRAMMA ;/---------------------------------------------------------------------------\ ;| PROCEDURA : Desktop | ;| DESCRIZIONE : Stampa tutta l'immagine del piano di presentazione del gioco| ;\---------------------------------------------------------------------------/ Desktop:CALL BIOScls ;Provvede comunque alla cancellazione del video, ;posizionando il cursore alla riga 0, colonna 0 CALL VIA_cur ;Rende il cursore invisibile M_msgC Riquadr,0,0,04H ;Stampa il primo messaggio (in realt… Š un ;"messaggio" piuttosto lungo... occupa le prime ;tre righe!!) a partire da 0,0 (riga, colonna) ;in rosso su nero (codice 04H) M_msgC Testo01,1,1,1FH ;Stampa il titolo contenuto nella cornice, a ;partire da 1,1 (riga, colonna) in bianco ;brillante sui blu (codice 1FH) M_msgC Riquadr,21,0,04H ;Stampa la seconda cornice a partire da 21,0 ;(riga, colonna) in rosso su nero (codice 04H) M_msgC Menu_01,22, 1,1FH; [A]bout M_msgC Menu_02,22,11,1FH; [S]tart Stampa il Menu M_msgC Menu_03,22,21,1FH; M_msgC Menu_04,22,71,1FH; [Q]uit M_msgC Testo02,24,1,04H ;Stampa il copyright sulla riga 24, colonna 2 ;in rosso su nero (codice 04H) RET ;/---------------------------------------------------------------------------\ ;| PROCEDURA : Quadro | ;| DESCRIZIONE : Provvede alla stampa di una cornice di dimensioni fisse,| ;| 5x10, 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 ; ;---------------------------------------------------------------------------- Quadro:M_msgC Corn00,DH,DL,0FH; INC DH ; "ÚÄÄÄÄÄÄÄÄ¿" MOV CX,3 ; "³ ³" Provvede alla stampa Quad_: M_msgC Corn01,DH,DL,0FH; "³ ³" della cornice 5*10 INC DH ; "³ ³" contenente 50 spazi LOOP Quad_ ; "ÀÄÄÄÄÄÄÄÄÙ" M_msgC Corn02,DH,DL,0FH; RET ;/---------------------------------------------------------------------------\ ;| PROCEDURA : TRIS | ;| DESCRIZIONE : Provvede alla stampa delle nove caselle di TRIS | ;\---------------------------------------------------------------------------/ TRIS: M_tris 4,24 M_tris 4,35 M_tris 4,46 M_tris 9,24 M_tris 9,35 M_tris 9,46 M_tris 14,24 M_tris 14,35 M_tris 14,46 RET ;***************************************************************************** ; ---------------------------------------------- EsE007 proc NEAR ; AREA DEDICATA AL MAIN PROGRAM ; ---------------------------------------------- ;----------------------------------------------------------------------------- CALL DeskTop ; Impostazione della pagina interattiva CALL TRIS ; Stampa le nove caselle per il gioco TRIS CALL KEYwait ; Rimane in attesa della pressione di un tasto _OUT: 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 ; EsE007 ENDP ; Chiusura della Procedura "Main Program" _prog ENDS ; Chiusura del Segmento di CODICE END INIZIO ; Indirizzo dell'ultima istruzione da compilare