debug programmazione assembler. debug.com il modo più immediato di scrivere programmi in assembly...
TRANSCRIPT
![Page 1: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/1.jpg)
Debug
Programmazione assembler
![Page 2: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/2.jpg)
DEBUG.COM
Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo DEBUG.COM fornito su tutte le piattaforme Microsoft tramite la Shell di MsDos (invocabile a sua volta usando il comando cmd).
Con questo programma si scrivono programmi assembly x-86 in formato COM e con indirizzi assoluti numerici.
DEBUG.COM è disponibile su ogni piattaforma Microsoft x-86 (ovvero da MsDos fino a Win32). Non su Windows7 64 bit.
![Page 3: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/3.jpg)
I comandi
Debug è un ambiente a carattere, con un prompt (il trattino) che attende un comando dell’utente.
Tutti i numeri utilizzati con Debug sono sempre in formato esadecimale; per usare una diversa rappresentazione va specificato il formato in coda al numero.
Debug non è case sensitive, ovvero non distingue se il comando è scritto in maiuscolo o in minuscolo, comportandosi allo stesso modo in entrambi i casi.
![Page 4: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/4.jpg)
Comandi debug
![Page 5: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/5.jpg)
d (dump) (esplorare la memoria)
![Page 6: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/6.jpg)
Risultato del comando d
8 righe così strutturate: sinistra: indirizzo (segmento e offset) centro: contenuto dei 16 byte (in
esadecimale). destra: mostra le stesse 16 celle di memoria
in formato Ascii stampabile, cioè escludendo i simboli con codici Ascii da 00h a 1Fh (caratteri di controllo) e da 80h a FFh (caratteri Ascii estesi). Se il carattere non è stampabile, viene sostituito da un punto.
![Page 7: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/7.jpg)
r (operare con i registri)
Consente di visualizzare il contenuto e lo stato dei registri x-86, e di impostarne il valore.
I valori visualizzati sono espressi in esadecimale, mentre il registro dei Flags è mostrato attraverso delle sigle convenzionali.
Esempi: r Visualizza lo stato dei registri r CX Imposta il registro CX r f Imposta uno o più bit del registro dei Flag
![Page 8: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/8.jpg)
Comando r (esempio)
![Page 9: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/9.jpg)
Scrivere un programma
1. Comando A – scrivere le istruzioni (e d i t )
2. Terminare la fase di edit con un invio su una riga vuota
3. Comando R – impostare la lunghezza del programma
4. Comando N – Assegnare il nome al programma
5. Comando W – Salvare il programma su disco
![Page 10: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/10.jpg)
Comando a
Il comando A deve essere specificato con l’[indirizzo] impostato a 100 (esadecimale); la prima istruzione di un programma .COM deve sempre trovarsi all’indirizzo 100 (h).
A 100 per cominciare la fase di edit. Ad ogni pressione del tasto Enter (Invio) l’istruzione è
confermata e si può scrivere la successiva. Debug riporta sempre l’indirizzo delle istruzioni
digitate. Per terminare l’editazione del programma, bisogna
premere Enter su una riga vuota
![Page 11: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/11.jpg)
Lunghezza del programma
Calcolare la lunghezza in byte del programma sottraendo l’indirizzo iniziale (100h).
Questa dimensione va specificata nel registro CX tramite il comando R, nella forma R CX.
Si digita la dimensione e la si conferma con Enter.
![Page 12: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/12.jpg)
Nome del programma (n)
Ora si può assegnare il nome al programma con il comando N.
Il nome deve rispettare le regole per gli identificatori di MsDos e deve avere estensione COM.
Esempio N PROVA.COM.
![Page 13: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/13.jpg)
Scrittura e uscita (w) (q)
Il comando W salva il programma su disco (nella cartella corrente).
Ora si può uscire (comando Q) e lanciare il programma dal prompt di MsDos.
![Page 14: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/14.jpg)
terminazione programma
Ogni programma quando termina deve avvisare il Sistema Operativo tramite una interruzione sw specifica.
L’avviso di terminazione, che deve essere sempre l’ultima istruzione
Interruzione DOSINT 20h
![Page 15: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/15.jpg)
Il programma più corto …
![Page 16: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/16.jpg)
Istruzione nop
Sintassi: NOP Scopo: Non fa nulla. Usata per scopi
di servizio, esempio per allineare una sequenza di istruzioni.
Esempio: NOP
![Page 17: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/17.jpg)
Modificare un programma
![Page 18: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/18.jpg)
Visualizzare un carattere
Per visualizzare un carattere è possibile utilizzare l’interruzione BIOS 10h
Con sottofunzione 0Eh Il codice ascii del carattere da visualizzare
va posto in AL Esempio:
mov al,43 Codice Ascii da stampare (43h = ‘C’)
mov ah,0e Sottofunzione 0Eh di INT 10h, Stampa carattere sullo Schermo
int 10 Lancio interruzione sw Bios 10h
![Page 19: Debug Programmazione assembler. DEBUG.COM Il modo più immediato di scrivere programmi in Assembly per x-86 è tramite il programma di Sistema Operativo](https://reader036.vdocuments.pub/reader036/viewer/2022082702/5542eb4b497959361e8b759e/html5/thumbnails/19.jpg)
Problemi
Visualizzare il primo carattere del proprio nome
Visualizzare il proprio nome Visualizzare il numero 8