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