Assembler – Array di stringhe
Nonostante l’assembler sia un linguaggio di basso livello, iniziamo a esplorare una delle strutture dato fondamentali in ogni linguaggio di programmazione, l’array o vettore.

Il seguente frammento di codice stampa un array di stringhe, ogni elemento (stringa) viene stampato su una nuova riga:
.model small
.stack 100h
.data
stringhe db 10d, 50 dup('ciao', 10d), '$' ; array di 50 elementi (inizializzati alla stringa "ciao" + CR ovvero ritorno a capo), il dollaro è fondamentale perchè indica la fine dell'array di stringhe.
.code
start:
mov ax, @data ; si passa obbligatoriamente attraverso ax perchè ds (data segment) può ricevere dati solo da registri
mov ds, ax
mov dx, offset stringhe ; dx conterrà l'indirizzo (comando offset) del nostro array.
call puts ; chiamata della subroutine puts che fa l'output della stringa contenuta in ds : dx / dato : indirizzo
mov ax, 4c00h
int 21h
; inizio della subroutine puts:
puts:
mov ah, 9h ; 9h = output di una stringa
int 21h
ret ; istruzione di ritorno
end start |
L’interrupt usato, è il solito 21h per i servizi del DOS.
Commenti