Issuu on Google+

MINI-GUIDA ALLO

SVILUPPO DI UN PROGETTO ASSEMBLY IN AMBIENTE MASM Dopo aver copiato la cartella MASM (preferibilmente nella root1), potete chiudere le finestre di Windows e lanciare il Prompt dei comandi2: • •

Start  Programmi  Accessori  Prompt dei comandi Start  Esegui  digitare cmd nella casella di testo che appare – confermare con OK

oppure

da ora comunicheremo con l’interfaccia a caratteri del DOS  Si aprirà questo ambiente: Il prompt è pronto ad eseguire i comandi, e vi comunica dove vi trovate (presumibilmente in una sottocartella di C: se C: è il vostro disco di sistema)

Se avete copiato la cartella MASM in C: , ed essendo già in C: , dovete dare i comandi seguenti. Con cd . . salgo 2 volte alla cartella del livello superiore. entro con il comando cd (change directory) nella cartella MASM Da qui posso lanciare il comando avvioC Compaiono a video queste righe, che sono le istruzioni del file batch avvioC: esse mi permetteranno di trovare facilmente tutti i file di cui avrò bisogno durante le fasi di sviluppo dei miei programmi.

1

Cioè direttamente nell’unità C: o D: e non in una loro sottodirectory. Non si tratta di un vincolo tassativo, ma di una scelta che agevola i percorsi successivi.

2

Il prompt dei comandi è una funzionalità di Windows che rappresenta il punto di ingresso per la digitazione dei comandi MS-DOS (Microsoft Disk Operating System) e di altri comandi per il computer. […] Il prompt dei comandi viene generalmente utilizzato solo dagli utenti più esperti. Il termine prompt dei comandi è riferito anche alla parentesi angolare chiusa > […] che indica che l'interfaccia della riga di comando è pronta per accettare comandi. Al prompt dei comandi è possibile specificare anche altre informazioni importanti, ad esempio la directory di lavoro corrente, ovvero il percorso, in cui verrà eseguito il comando. Fonte: http://windowshelp.microsoft.com/Windows/it-IT/help/81242f3c-c9bf-442c-a49d-e18b02f72e691040.mspx#ENB

Supporto didattico per l’uso dell’ambiente MASM - A cura della prof.ssa Silvia D’Addezio - 26 ottobre 2008


Se avete invece copiato la cartella MASM in D:, come abbiamo fatto a scuola, allora farete così:

Ricordando questa volta di utilizzare il file avvioD

Nella cartella MASM a vostra disposizione è già stata creata la sottocartella Progetti, nella quale creerete nuove sottocartelle, ciascuna contenente i file di un progetto Assembly. Come vedete qui sotto, una cartella di progetto, somma, è già esistente. Ecco come creare in Progetti la nuova cartella somma1, destinata a contenere i tre file: • somma1.asm (sorgente assembly, che dobbiamo editare); • somma1.obj (file oggetto, verrà creato al termine della fase di assembling del programma) • somma1.exe (file eseguibile finale e linkato, al termine appunto della fase di linking)

Entro in Progetti Volendo, posso farmi mostrare il contenuto e le specifiche con il comando dir: esiste solo la sottocartella somma Creo somma1 con il comando md (make directory)… … e ci entro Edito il nuovo file .asm

Con quest’ultimo comando richiamo l’ambiente di editing per il sorgente, che si presenta con questa nuova schermata. (contestualmente creo somma.asm, se ancora non esiste. Se esiste già, potrò modificarlo)

Supporto didattico per l’uso dell’ambiente MASM - A cura della prof.ssa Silvia D’Addezio - 26 ottobre 2008


Fase di editing

Editate il sorgente, facendo attenzione a ogni particolare della sintassi. Attenzione: qui gli spazi di tabulazione sono importanti!!! Non è solo questione di leggibilità: se non indentate correttamente, il programma “non gira” 

Qualche richiamo sul codice che state scrivendo: Commenti con punto e virgola. Documentare adeguatamente i sorgenti è sempre buona cosa. Specifiche iniziali per la struttura del pgm (fisse, v pag.293 e seg) Sezione dati (.DATA): dichiaraz variabili ed eventuale inizializzazione Sez istruzioni (.CODE): •

Iniziali (fisse)

Istruzioni che implementano l’algoritmo (non fisse)

Finali per terminare l’esecuzione (fisse)

Terminato l’editing, ricontrollato il codice:

FileSalva (non Salva con nome: avevate già deciso destinazione e nome: lo vedete anche sotto la barra dei menù!)

FileEsci

Supporto didattico per l’uso dell’ambiente MASM - A cura della prof.ssa Silvia D’Addezio - 26 ottobre 2008


Fase di assembling Abbiamo fin qui creato la cartella di progetto e il sorgente somma1.asm. Assembliamolo, ovvero, “diamolo in pasto” al programma assemblatore (assembler), che lo traduce in linguaggio macchina nel file oggetto somma1.obj. L’assemblatore opera in 2 fasi o passate: 1. nella prima passata controlla la sintassi e costruisce la tabella dei simboli, associando ad ogni nome simbolico incontrato (ADD1, ADD2, …) il suo indirizzo. Se vengono riscontrati errori, li segnala, altrimenti prosegue con la seconda passata. 2. Nella seconda passata effettua la traduzione in linguaggio macchina , usando la tabella dei simboli creata nella prima passata e associando ad ogni istruzione (codice operativo + operandi), il corrispondente codice binario.

Con questo il comando richiamo l’assemblatore se non ci sono segnalazioni di errori, il programma è stato assemblato correttamente, altrimenti è necessario rientrare nell’editor, correggere gli errori, e riassemblare

Fase di linking Il linker trasforma l’oggetto in un file eseguibile (.exe): 1. collegando dei moduli di sistema che rendono disponibili alcune funzioni al programma, in un unico file; 2. sostituisce all’indirizzo degli elementi esterni il loro valore; Con questo il comando richiamo il linker confermo con il tasto Invio i nomi per questi file

Fatto!

Ora il l’eseguibile è stato creato e la fase di implementazione del programma somma1 è terminata. Se però mandassimo in esecuzione somma.exe non otterremmo nessuna stampa a video e nessun effetto visibile, poiché il programma non fa altro che leggere e scrivere in memoria centrale e sui registri; non effettua alcuna operazione di I/O. Quindi … Supporto didattico per l’uso dell’ambiente MASM - A cura della prof.ssa Silvia D’Addezio - 26 ottobre 2008


Fase di debugging Per verificare il funzionamento del programma utilizziamo il debugger3 CodeView, che: 1. visualizza il contenuto di ogni registro della CPU e della RAM 2. mostra passo passo i cambiamenti di questi contenuti in corrispondenza di ogni istruzione eseguita. Si ha così la possibilità di vedere se: 1. gli effetti prodotti dal programma sono quelli attesi 2. il comportamento del programma in tutte le fasi intermedie è quello atteso. Soprattutto nel caso in cui i risultati non sono quelli attesi, la verifica per passi ci consente di trovare gli errori logici. Lancio CodeView sull’eseguibile somma (o somma.exe) Finestra dei registri Registri aritmetici

Finestra del sorgente In evidenza prox istruzione da eseguire

Finestra della memoria (RAM)

Ecco il contenuto (in esadecimale) di AL BL …

…dopo l’esecuzione di queste istruzioni (infatti la prox è questa) Nelle celle in cui sono memorizzate le variabili è possibile vedere il loro valore Avanzo con F8 3

L’operazione di Debugging consiste letteralmente nel togliere i bug (bachi, errori) dal programma. Il termine ha origine dal tempo in cui venivano usate le schede perforate: qui i bachi (quelli veri: i vermetti!) causavano veri e propri buchi , che venivano erroneamente letti dal sistema.

Supporto didattico per l’uso dell’ambiente MASM - A cura della prof.ssa Silvia D’Addezio - 26 ottobre 2008


Mini-Guida MASM