dal 2015 - visita n. 2456
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



Dacché "i governi hanno origine nella identità morale degli uomini", il riconoscimento di una comune natura umana con interessi comuni deve indurre gli uomini razionali a una comune fratellanza politica; e finché essi non diverranno abbastanza saggi per cooperare volontariamente al comune benessere, non è possibile alcun governo buono.
Ralph Waldo Emerson

Valid CSS!
pagina generata in 0.002 secondi