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 1

Home » Programma il Computer » Tutorial Assembly

Capitolo 1 - Il processore - Il Debugger

  Il Processore e il Debugger

ISTRUZIONI 80x86 2/3 [27 di 60] 

    

    Formato delle Istruzioni - Tipi di Operandi
     
bulletQuando si parla di istruzione di solito si fa riferimento ad una struttura articolata su 3 campi: il codice Mnemonico, il campo Destinazione e il campo Sorgente (questi ultimi separati da una virgola):

      

  Mnemonico     Destinazione     Sorgente  
 MOV AX, BX

      

bulletLa sintassi delle istruzioni del linguaggio assembly per 80x86 è sempre quella sopra indicata, ed è bene fissarla bene in mente; l'esempio proposto è quello classico, e si legge: metti (MOV) il contenuto del registro BX (sorgente) in AX (destinazione).

      

bulletNella stesura dei programmi sorgente è buona norma educarsi a mantenere un certo ordine; sebbene al lato pratico questo fatto non dia valore aggiunto, se non estetico, conviene far uso del tasto tabulato, al fine di mettere eventuali etichette sulla prima colonna, tutti gli mnemonici sulla seconda, e gli eventuali operandi sulla terza; opzionalmente è possibile aggiungere un quarto tab per scrivere un commento, di regola preceduto da un ; (punto e virgola).
bulletL'esempio seguente cerca di far luce su questo suggerimento, comunque utilizzato dall'Autore in tutti gli esempi di questo sito:

      

Esempio     di    Codice    Assembly
--------------------------------------------------
Etichetta Mnemon  Operandi     ;Commento                

Depo01 
Depo02
DB      55H          ;variabile a 8 bit
DW      55AAH        ;variabile a 16 bit
---------- ----------------------------------------------
Inizio: MOV     AX,ES        ;Preparo il puntatore
MOV     ES,BX        ;alla prima locazione
MOV     DI,0000H     ;della Ram del Video
MOV     AL,ES:[DI]   ;Estrazione carattere

      

bullet

Lo stralcio di codice proposto mette in evidenza che le parole in esso contenute possono essere scritte indifferentemente in Maiuscolo o in minuscolo; è una questione di gusto... , di leggibilità e di personalità: l'Autore preferisce (ma può essere paranoia...) dare dignità alle etichette e al commento, scrivendo entrambi i campi in minuscolo ma con iniziale maiuscola, mentre predilige lo stampatello maiuscolo per i campi mnemonico e operandi, al fine di evidenziare la parte principale del programma.

      

bullet

Il campo etichetta :
bullet

è molto importante perchè consente di associare un nome di fantasia alla locazione corrispondente alla variabile (DB, o DW, o altro) o all'istruzione desiderata.

bullet

il nome dell'etichetta è usato come operando per consentire al processore di localizzare la variabile in operazioni di scrittura e/o lettura, e l'istruzione per saltarci (con JMP) o per chiamarla (con CALL) al fine di eseguirla eseguirla.

bullet

può contenere tutte le lettere (a-z,A-Z), tutti i numeri (0-9) ma non come primo carattere, e i simboli "_" (underscore), "$" (dollaro) e "?" (punto di domanda).

bullet

non deve essere uguale alle parole riservate dell'ambiente di programmazione, come gli mnemonici delle istruzioni e delle PseudoOperazioni o il nome dei registri (sono corrette Inizio _prima ma non DX o ESC).

      

bullet

Il campo mnemonico contiene parole da 2 a 7 lettere (di solito da 3...) che descrivono sinteticamente il tipo di operazione da eseguire sugli operandi, oppure l'eventuale PseudoOperazione, o direttiva, da passare all'assemblatore; si definiscono mnemoniche perchè sono studiate per dare subito l'idea del loro compito, come MOVe (Muovi, sposta) JuMP (salta) CALL (chiama) e così via.

      

bullet

Il campo Operando è quello che assume le forme più svariate possibili:
bullet

può anche rimanere vuoto, se l'istruzione non prevede interlocutori espliciti (in questo caso gli operandi sono fissati automaticamente dalla sintassi).

bullet

quando sono presenti sono di solito uno o 2, e la loro tipologia è spesso del tipo: 
bullettra registro e registro, o tra registro e memoria, o tra memoria e registro.
bullettra registro e costante, o tra memoria e costante.
bullettra accumulatore e costante.

bulletl'operando costante è detto anche immediato, non per dare l'immagine di una cosa istantanea, ma nel senso di non mediato, cioè in grado di esprimere se stesso senza bisogno di altri:
bulletse si tratta di un numero decimale è sufficiente digitarlo normalmente (1200); tutti i numeri normali si intendono decimali.
bulletse deve esprimere un numero esadecimale deve avere una "H" dietro (2AH) e, se comincia per lettera deve avere anche uno "0" davanti (0B800H): se non si mettesse questo 0 l'assemblatore segnalerebbe errore, scambiando il numero per etichetta, ovviamente non definita.
bulletse, infine, il numero è binario deve avere una "B" dietro (01001100B), per le ragioni esposte negli altri casi; la scrittura di un numero binario può sembrare strana, ma in certe occasioni può aiutare a capire meglio il contesto del programma, per esempio per evidenziare un sensore in una batteria di otto, o un certo bit di un registro...
bulletattenti a non scrivere per errore la "O" (vocale maiuscola) al posto dello "0" (numero zero).
bulletl'operando registro e l'operando memoria sono da intendere come il valore contenuto in essi.

      

bulletIl campo del commento è ininfluente dal punto di vista del prodotto dell'assemblatore, ma per questo non deve essere sottovalutato: un buon programmatore cerca sempre di annotare il suo pensiero presente per sé e per i posteri...

    

Pagina Precedente Capitolo 1 Pagina Successiva ISTRUZIONI 80x86 2/3   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
27 di 60
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

    

CAP. 1 » 1. Processore 80x86 2. Istruzioni 80x86  3. Debug  4. La Grande Libreria
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