VARIABILI SCALARI
Le variabili sono nomi assegnati a celle di memoria. Una variabile ha un nome, un indirizzo e un contenuto:
Esistono 3 tipi di variabili scalari:
- DB: Byte (8 bit);
- DW: Word (16 bit);
- DD: Double Word (32 bit).
La sintassi di dichiarazione di una variabile scalare è la seguente:
<identificatore> <tipo> <valore_iniziale>
Dove <valore_iniziale> può assumere:
- Un valore numerico;
- Una stringa di caratteri tra apici
- Il carattere ? (indica nessun valore)
- Una espressione (operatori aritmetici, logici, relazionali: +, -, AND, OR, …)
ESEMPI DI DICHIARAZIONI DI VARIABILI SCALARI:
- VALORE DW ? ;una word non inizializzata
- NUMERO1 DB 6 ;un byte inizializzato a 6
- Numero2 DW 3 ;una word inizializzata a 3
- F DB 110 ;un byte inizializzato a 110
- max DW FFFFh ;una word inizializzata a 65535
- CONFERMA DB ‘Y’ ;un byte inizializzato a 089
- ANNULLA DB ‘N’ ;un byte inizializzato a 078
- at DB ‘@’ ;un byte inizializzato a 064
Le variabili possono essere dichiarate ovunque nel programma, ma si preferisce farlo all’ inzio o alla fine dello stesso.
VARIABILI VETTORIALI
Gli array sono sequenze di dati di tipo omogeneo, ad esempio vettori numerici o stringhe di testo.
Le variabili array si dichiarano similmente alle variabili scalari:
a DB 48h, 65h, 6Ch, 6Ch, 6Fh, 00h ;a array di byte
b DB ‘Hello’, 0 ;b uguale ad a
c DB 5 DUP(9) ;equivale a srivere c DB 9,9,9,9,9
d DW 10 DUP(?) ;d array di 10 word
ACCESSO AGLI ARRAY
L’accesso indicizzato agli array avviene usando parentesi quadre:
MOV AL, a[3] ; copia in al il valore in posizione 3 del vettore a
È possibile usare i registri indici della memoria BX, SI, DI, BP:
MOV SI, 3
MOV AL, a[SI] ;accesso all’elemento di a in pos. 3
USO DELLE VARIABILI
Per leggere/scrivere il contenuto
mov <Registro>, <Variabile>
mov <Variabile>, <Registro>
Per leggere l’indirizzo
lea <Registro>, <Variabile> ;LEA = Load Effective Address
mov <Registro>, OFFSET <Variabile>
Entrambe le istruzioni caricano nel registro l’indirizzo (offset) della variabile:
mov <Registro>, indirizzo_della_variabile
È possibile accedere e modificare il contenuto di una variabile
combinando i comandi LEA (o OFFSET) e BYTE PTR (o WORD PTR)
N.B. Solo i registri BX, SI, DI, BP possono essere utilizzati come puntatori agli indirizzi di memoria!
COSTANTI
Le costanti sono nomi assegnati a valori, non hanno indirizzo e di conseguenza non compaiono nel codice oggetto ed eseguibile. Il valore di una costante non può essere modificato
Dichiarazione di una costante: direttiva EQU
Sintassi di EQU:
<identificatore> EQU <valore>
Es: _AT_ EQU ‘@’
Es: NUM_MESI EQU 12
L’assembler sostituisce il nome di una costante con il suo valore
Es: MOV AL,_AT_ diventa MOV AL,40h
<valore> può essere:
- un valore numerico
- una stringa di caratteri tra apici
- una espressione (operatori aritmetici, logici, relazionali: +, -, AND, OR, …)
Nel prossimo articolo parleremo di Trasferimento di dati, se invece ti sei perso lo scorso articolo, si è parlato generalmente del Linguaggio.
Stai cercando altre guide? Allora dai uno sguardo alla nostra raccolta dedicata alla Programmazione Assembly.
Alla prossima!
0 Comments