msg1 db "Ciao a tutti." ; stringa messaggio Lmsg1 $-msg1 ; calcolo Lunghezza stringa messaggio
buf1 resb 256 ; spazio/blocco di 256 byte di memoria RAM
Dovendo ripetutamente compilare i sorgenti nasm è certamente noioso ridigitare continuamente le appropriate righe di comando, come visto in questa parte introduttiva di nasm. Per le esercitazioni correnti conviene utilizzare lo script a che serve ad eseguire, in successione, le operazioni di: compilazione, link, esecuzione. Lo script, inoltre, pur dessendo dedicato a semplici applicazioni didattiche, gestisce automaticamente le varie situazioni che si presentano nel corso dello sviluppo di software asm linux. Lo trovate nel DVD che vi ho distribuito e nelle installazioni Linux di laboratorio, ma non è uno strumento presente nelle normali distribuzioni Linux.
Ecco come si usa lo script:
In caso di segnalazione d'errore occorre intervenire modificando opportunamente il listato di prova.asm, salvando e ripetendo il comando precedente.
Non disponendo dello script a è possibile scaricarlo da Internet, e renderlo poi utilizzabile con qualche passaggio aggiuntivo. Ad esempio, per scaricare lo script a nella propria cartella di lavoro esercizi-nasm basta eseguire i comandi seguenti:
A questo punto per eseguire il ciclo di operazioni compilazione-link-esecuzione, per un generico programma nome.asm, basterà digitare una delle seguenti 2 righe di comando:
La prima riga va usata se il sorgente non contiene chiamate a funzioni di libreria gcc, cioè è scritto in puro assembly. La seconda riga va usata se il listato contiene riferimenti a funzioni gcc. I caratteri ./ anteposti ad a sono indispensabili per obbligare il sistema operativo a cercare il comando nella propria cartella di lavoro esercizi-nasm, anzichè nelle normali cartelle di sistema.
Se si dispone dei diritti di amministrazione è opportuno copiare il file a nella cartella /usr/local/bin evitando, così, la noia di dover premettere tutte le volte i caratteri ./, rendendo di fatto a uno dei normali comandi di sistema. Questo è quanto accade nel DVD che vi ho distribuito e nei computer del laboratorio.
Lo script può essere, ovviamente, migliorato ed esteso a situazioni più complesse, qui trovi il listato di a .
;---------------------------------------- Sezione Dati Inizializzati section .data msg1 db "ABCD" ; stringa espressa tutta con normali caratteri msg1bis db 'ABCD' ; la stessa stringa precedente racchiusa da apici semplici msg1ter db 41h,01000010b,'C',"D" ; la stessa stringa espressa in esadecimale, binario e caratteri msg2 db "ABCD",0Dh,0Ah ; stringa mista, composta da caratteri e codici ASCII esadecimali msg2bis db 41h,42h,43h,44h,0Dh,0Ah ; la stessa stringa espressa solo con codici ASCII hex msg2ter db 65,66,67,68,13,10 ; la stessa stringa espressa solo con codici ASCII dec msg3 times 64 db "x" ; Genera automaticamente una stringa di 64 caratteri "x" msg3bis times 65 db 0 ; Questa volta la stringa contiene 64 codici 0
;--------------------------------------- Sezione Definizione Costanti %define BUFLEN 100 ;---------------------------------------- Sezione Dati NON Inizializzati section .bss buf1 resb 256 ; riserva un blocco di 256 byte buf2 resb BUFLEN ; riserva un blocco di 100 byte
La prova di una vocazione è l'amore per il duro lavoro che essa comporta.
Logan Pearsall Smith