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!