dal 2015 - visita n. 2615
Schema programma NASM
Schema programma NASM

 
 Schema programma NASM   Lo script a   Pseudoistruzioni db resb  


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

















Menù
Introduzione
I registri del Pentium
Il modello della memoria
Interazione CPU-RAM
I Servizi Linux - Int 80h
I File in Linux
Schema programma NASM
Esempi Write/Read
Esercizi
lods-stos-movs
gcc + nasm
Gestione Command Line
Stack
Stack-Esercizi
Libreria Funzioni Base
Esercizi con la Libreria
Libreria Macro Base
Test 5 esercizi


Sistemi di numerazione
Elementi Bistabili
Strutture di Controllo
Istruzioni JMP
Hello World
I/O di Testo
Command Line
Colori e Macro
Introduzione I/O
Porta Parallela


AppuntiAsm-386.html
Linux ELF Howto
Linux Assembly Howto
Il linguaggio PC Assembly
Assembly di Paul A.Carter
Assembly di Claudio Daffra



La prova di una vocazione è l'amore per il duro lavoro che essa comporta.
Logan Pearsall Smith

Valid CSS!
pagina generata in 0.001 secondi