Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Palestra Livello Apprendisti Livello Esperti

Home » Programma il Computer » Tutorial Assembly

Palestra Assembly - Home Page

  Programmare in Assembly

INTRODUZIONE [1 di 23] 

               

Analisi del Problema · Main Loop · Tipi di Tasto · Rilievo tasti · Caps Lock · Servizio tasti · Conclusioni

Acquisizione Caratteri - Rileva la pressione di tasti autorizzati e segnala errore per gli altri
Analisi del Codice Sorgente [6 di 6] - il codice assembly per il servizio della pressione dei tasti

               

bulletIn calce alle importanti descrizioni del main loop del Main Program è utile e interessante vedere come si da Servizio alla pressione di un tasto autorizzato.

  

bulletIl nostro programma differenzia la risposta in funzione del tipo di tasto autorizzato:
bulletse si tratta di tasto Funzione (F1 o F10), di tasto Funzionale (Freccia Sinistra o Freccia Destra) o del tasto di Controllo ESC si limita a mostrare il messaggio corrispondente, puntato in ingresso da SI
bulletse si tratta di lettera (A, B o Q) o numero (1, 2 o 3) oltre a mostrare il messaggio corrispondente (sempre puntato in ingresso da SI) visualizza anche il relativo simbolo (trovato in ingresso da AL)

  

Gestione della Tastiera

Esercizio IMPEGNATIVO Esercizio
NB: se il testo nell'Area  ti sembra strano
     
installa il  font
Giobe.TTF: clicca qui!!
Mostra l'Effetto Prova l'eseguibile COM Scarica il codice Sorgente ASM

  

Suggerimento NB: Servizio e Servizio1 non sono procedure!
       Una
procedura termina sempre con RET mentre questi codici assembly terminano con un salto di rientro (JMP xxx00) al main loop;

  

bulletAnche se è opportuno collocare Servizio e Servizio1 nella zona destinata ad ospitare le procedure interne è assolutamente importante non incorrere nell'errore di ritenerle tali.

  

bulletNonostante l'apparente semplicità di queste piccole parti di codice assembly, esse nascondono alcune magie di particolare valenza.
bulletEntrambe passano alla Macro M_msgC il parametro indirizzo del testo con un'espressione del tipo: CS:[SI], che significa "il contenuto della locazione puntata da CS:[SI]"; ne possiamo dedurre:
bulletche queste espressioni sono perfettamente legali, dal punto di vista sintattico
bulletche aprono la strada per rendere dinamiche le Macro anche con il contenuto di una variabile puntata da un registro

  

bulletFaccio notare che sarebbe stata accettata anche un'espressione tipo: CS:[depo], che significa "il contenuto della locazione [depo]"; in questo caso non si sarebbe introdotto un fattore dinamico, ma la possibilità di passare dati da una variabile in vece che da un registro è piuttosto interessante..

  

  

A onor del vero la pseudoistruzione M_msgC CS:[SI],12,15,1FH non è logicamente accettabile:
il compito del parametro è quello di passare il puntatore alla stringa da stampare
il puntatore alla stringa da stampare è certamente SI
la sintassi del parametro si traduce invece in "come puntatore utilizza il contenuto della locazione puntata da SI", la qualcosa è un controsenso..
Ma il compilatore non accetta una sintassi come M_msgC SI,12,15,1FH , eseguendo invece senza errori (?!) quella proposta nel nostro programma

  

bullet

Anche il Servizio1 merita un commento:
bullet

la chiamata della Macro M_msgC ha imposto colore e posizione di stampa per la stringa puntata da SI (anche se il parametro recita CS:[SI]...)

bullet

al termine il cursore punta la posizione successiva a quella dell'ultimo carattere stampato e mantiene il colore corrente

bullet

per questo la procedura BIOchr1 stamperà il carattere presente in AL nello stesso colore e a destra della stringa

bullet

la successiva chiamata la Macro M_msgN stampa per la stringa puntata dal suo parametro, nella posizione di stampa corrente (quella successiva al carattere appena stampato) e nel colore corrente (quello di tutto il resto, fissato da M_msgC)

    

Pagina Precedente Palestra Esperti Pagina Successiva INTRODUZIONE   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
1 di 23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

    

PALESTRA » Esperti » Es.001 Es.002 Es.003 Es.004 Es.005 Es.006 Es.007 Es.008 Es.009 Es.010 Es.011

| Che serve per iniziare | Prima compilazione | Livello Apprendisti |

TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati