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

Capitolo 2

Home » Programma il Computer » Tutorial Assembly

Capitolo 2 - Gli strumenti di lavoro

  Gli strumenti di Lavoro

EDITOR 11/11 [19 di 87] 

    

  Aggiornato  31 marzo 2006
    E adesso, cosa fare?
     
bulletA questo punto abbiamo scelto l'Editor in cui scrivere il nostro codice sorgente; ma bisogna avere le idee chiare sulla strategia con cui condurre il lavoro.

      

Suggerimento Quando scriviamo il nostro codice sorgente la visione d'insieme è limitata ad una sola videata; questo limite, almeno all'inizio, può indurre insicurezza. Sviluppa la tua idea sulla carta, prima di cominciare a tradurla o copiarla a video dentro il tuo editor di fiducia!

      

bulletCreiamo Prova.ASM: dunque, apri il tuo Editor e comincia a scrivere esattamente questo testo:

      

_prog   SEGMENT BYTE PUBLIC 'CODE'
        ASSUME CS:_prog,DS:_prog

        ORG    0100H
INIZIO: MOV    AH,00H   ;Pulisci lo schermo
        MOV    AL,03H   ;(ClearScreen)
        INT    10H      ;
        MOV    AH,00H   ;Aspetta la pressione
        INT    16H      ;di un tasto
        MOV    AH,4CH   ;Torna al dos
        INT    21H      ;
_prog   ENDS
        END
INIZIO

      

bulletScrivi il tuo programma sorgente, rispettando le regole del gioco; non ti preoccupare se non conosci le direttive o le parole chiave dell'assemblatore (trattate comunque nei prossimi paragrafi); questa preoccupazione non ti deve assillare neanche per il futuro: le sole direttive consigliate sono quelle riportate negli esempi e possono essere prese per quelle che sono, senza entrare nel merito
bulletSe sei incuriosito dal codice sorgente che hai scritto posso anticiparti che mette in atto 3 eventi, uno dietro l'altro:
bulletesegue un Clearscreen (pulisce lo schermo, con MOV AH,00H, MOV AL,03H, INT 10H)
bulletaspetta la pressione di un tasto qualunque (con MOV AH,00H, INT 16H)
bullettorna al Dos (con MOV AH,4CH, INT 21H).
bulletOsserva e memorizza; il testo è scritto su 4 colonne distinte:
bulletnella prima (a partire dal primo carattere sulla sinistra) trovano posto le etichette; nel nostro esempio sono 2, _prog e INIZIO:

      

Ricorda... Le etichette sono particolari parole chiamate a:
localizzare l'indirizzo di variabili o punti importanti del programma (l'indirizzo di tali punti è difficile da predeterminare perché dipende dal numero di istruzioni inserite prima del punto stesso: per conoscerlo è necessario sommare la lunghezza (in bytes) di ogni istruzione precedente ed aggiungere 256 al totale (per via dell'ORG 100H)! Una paranoia assoluta che conviene lasciar fare all'assemblatore: uno dei suoi compiti è proprio quello di sostituire all'etichetta il numero (indirizzo) corrispondente)
sostituire costanti numeriche (di norma le costanti possono essere digitate direttamente nel testo sotto forma di numero binario espresso in esadecimale (come per altro si vede anche nel nostro esempio); è buona abitudine tuttavia sostituire le espressioni esadecimali con etichette, per rendere più leggibile il programma)

      

bulletnella seconda colonna trovano posto le stringhe mnemoniche dell'operazione che il processore è chiamato a compiere (come MOV o INT)
bulletla terza colonna contiene gli eventuali operandi dell'istruzione:

      

Ricorda... La zona degli operandi rispetta sempre la regola destinazione, sorgente; in altri termini: la parte a sinistra della virgola è l'oggetto in cui collocare il dato esadecimale o il contenuto dell'oggetto indicato dalla parte a destra della virgola (l'oggetto di cui si parla è generalmente un registro o l'etichetta che rappresenta una locazione di memoria)

      

bulletecco alcuni esempi:
bulletl'istruzione MOV AL,03H precisa di caricare in AL (registro a 8 bit) il valore 03 esadecimale
bulletl'istruzione MOV CS:[depo],BH sposta il contenuto del registro BH  (registro a 8 bit) dentro la locazione puntata da "depo", etichetta chiamata a localizzare una variabile a 8 bit
bulletl'istruzione MOV DX,CS:[depo] sposta il contenuto della locazione puntata da "depo", (etichetta chiamata a localizzare una variabile a 16 bit) in DX (registro a 16 bit).

      

bulletla quarta colonna è opzionale e serve per i commenti; ogni testo digitato dopo un ; è da ritenersi un commento e viene ignorato dal compilatore

      

Ricorda... L'aggiunta di commenti è un'abitudine eccellente; non di rado l'interpretazione del nostro sorgente a distanza di qualche giorno può risultare difficile da capire anche a noi stessi; un commento mirato ed essenziale è, dunque, un buon investimento...

      

Suggerimento Per portarti sulla colonna successiva non digitare gli spazi che mancano, usa il tabulato (tasto Tab)!

      

bulletQuando hai completato il testo, salvalo come Prova.ASM sul tuo disco fisso.
bulletSe ti va puoi fare un'altro esercizio; riapri il tuo Editor e scrivi il testo anche del secondo listato:

      

_prog   SEGMENT BYTE PUBLIC 'CODE'
        ASSUME CS:_prog,DS:_prog
        ORG    0100H

INIZIO: JMP    Main

KeyWait:MOV    AH,00H   ;Aspetta la pressione
        INT    16H      ;di un tasto
        RET             ;

BiosCls:MOV    AH,00H   ;
        MOV    AL,03H   ;Pulisci lo schermo
        INT    10H      ;(ClearScreen)
        RET             ;

Main:   CALL   BiosCls  ;
        CALL   KeyWait  ;Chiama le procedure
        MOV    AH,4CH   ;e poi torna al dos
        INT    21H      ;
_prog   ENDS
        END
INIZIO

      

bulletQuando hai completato il testo, salvalo come Prova1.ASM sul tuo disco fisso.
bulletIl codice sorgente che hai scritto mette in atto gli stessi 3 eventi di quello precedente; in questo caso, però utilizza la tecnica della chiamata di procedure. Infatti:
bulletdefinisce la procedura BiosCls, che pulisce lo schermo (con MOV AH,00H, MOV AL,03H, INT 10H, RET)
bullet definisce la procedura KeyWait, che aspetta la pressione di un tasto qualunque (con MOV AH,00H, INT 16H, RET)
bullet Chiama in sequenza le 2 procedure (con CALL KeyWait, CALL BiosCls) e poi torna al Dos (con MOV AH,4CH, INT 21H).

      

bulletEntrambi i testi che hai digitato per esercizio sono disponibili, pronti da vedere ("Apri il file dal percorso corrente") o da scaricare ("Salva il file su disco"):

      

PROVA.ASM 286 15/08/01 18.46   PROVA1.ASM 425 16/08/01 12.36

    

Pagina Precedente Capitolo 2 Pagina Successiva EDITOR 11/11   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
19 di 87
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

    

CAP 2 » 1. Catena di Compilazione 2. Editor 3. Assemblatore 4. Linker 5. Exe2Bin
6.
Ambiente di Lavoro 7. Gestore d'Ambiente Macro 8. Gestore d'Archivi OG
9. Matrici per i Programmi Sorgente 10. Gestore di Librerie Lib 
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