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.