debug

19
Debug Programmazione assembler

Upload: hyatt-jensen

Post on 03-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

Debug. Programmazione assembler. 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). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Debug

Debug

Programmazione assembler

Page 2: Debug

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

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

Comandi debug

Page 5: Debug

d (dump) (esplorare la memoria)

Page 6: Debug

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

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

Comando r (esempio)

Page 9: Debug

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

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

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

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

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

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

Il programma più corto …

Page 16: Debug

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

Modificare un programma

Page 18: Debug

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

Problemi

Visualizzare il primo carattere del proprio nome

Visualizzare il proprio nome Visualizzare il numero 8