In questa lezione iniziamo a programmare in linguaggio a basso livello.
Se sei arrivato fin qua sicuramente hai già delle conoscenze sui registri utilizzati dal microprocessore INTEL 8086, sai come sono suddivisi e quanti bit hanno.
Ad esempio il registro AX ha sedici bit ed è suddiviso nella parte alta AH e nella parte bassa AL entrambi ad 8 bit.
Se però ricordiamo la regola del quartetto sabbiamo che 4 bit binari corrispondono ad una cifra esadecimale e che 16 bit binari corrispondono a 2 cifre esadecimali.
Infatti per la regola del quartetto
i 4 bit binari vanno da 0000 a 1111
mentre le cifre esadecimali vanno da
OH a FH.
Esempio
0000 | 0H |
0001 | 1H |
0010 | 2H |
0011 | 3H |
0100 | 4H |
0101 | 5H |
0110 | 6H |
0111 | 7H |
1000 | 8H |
1001 | 9H |
1010 | AH |
1011 | BH |
1100 | CH |
1101 | DH |
1110 | EH |
1111 | FH |
Il DEBUG è un'utility di uso frequente dell'MS-DOS e serve per la ricerca e l’ eliminazione degli errori nei programmi; Esso ci consente di visualizzare passo-passo tutte le istruzioni che vengono eseguite tramite il comando T; ci permette di scrivere dei programmi in assembler ed eseguirli; inoltre si possono leggere i registri e vedere i valori delle celle di memoria.
Per iniziare a scrivere con il DEBUG andare sul sistema operativo MS-DOS.
Al prompt dell'MS-DOS scrivere DEBUG senza estensione:
c:>DEBUG (invio)
-
(Nota: Il debug risponde con un trattino il quale indica che ora non bisogna inserire comandi del DOS ma comandi conosciuti dal DEBUG ; in altre parole indica che sta aspettando un comando dall'utente)
Se dopo il trattino inseriamo il simbolo ? cioè
-? (invio)
il sistema ci permette di vedere tutti i comandi del DEBUG
Esercizio
LAVORIAMO CON IL DEBUG
Risolvere la seguente funzione con somma e sottrazioni utilizzando i registri ad 8 bit:
8 - ( 1 + 4 )
;commenti
A 100 ; assembla a partire dall’indirizzo 100
MOV AL, 08 ;AL<- 08 metti il valore 08 nel registro AL
MOV BL, 04 ;BL<- 04 metti il valore 04 nel registro BL
MOV BH, 01 ;BH<- 01 metti il valore 01 nel registro BH
ADD BH, BL ;BH<- BH +BL somma BH+BL e inserisci il risultato della somma nel ;registro BH
SUB AL, BH ;AL <- AL -BH sottrai BH ad AH e inserisci il risultato nel registro AL
INT 3 ; esegui INT 3
Salvataggio di un file con estensione *.com
Per salvarlo nella directory pippo col nome somma.com bisogna eseguire la seguente procedura:
Dopo aver scritto il programma come da figura e aver digitato INT 3 premere invio; spunterà una
linea.
A questo punto scrivere (senza uscire dal Debug):
- n c:\pippo\somma.com (invio)
- R BX (invio)
- 0
- R CX (invio)
- B (invio)
-w (invio)
Il valore inserito B dipende dalla lunghezza del nostro programma nel nostro
caso dalla figura si vede che da 0100 l’istruzione dopo INT 3 è arrivata alla cella 010B
da cui facendo la differenza tra (010B – 0100) = B
L' istruzione w significa scrivi il programma
Dopo l' invio si avrà la risposta del debug :
-sono stati scritti B byte,
cioè il nostro programma è stato
salvato nella cartella
c:\pippo\somma.com
Come richiamare un file con estensione *.com
Per richiamare il file appena salvato bisogna eseguire la seguente procedura.
Dal prompt di c:> scrivere
c:> debug c:\pippo\somma.com (invio)
- u ; ( u = disassembla il programma appena salvato)
- r ; ( r = fai vedere i registri )
- t ; ( t = step to step cioè passo passo)
(continuare a dare invio e poi scrivere t fin quando si arriva
all’istruzione INT 3).
Prompt dei comandi del DEBUG
Per visualizzare i comandi che esistono nel debug bisogna eseguire la seguente procedura.
Andare nel prompt di c:> e digitare debug. Il programma risponde con una linea e noi digitiamo il carattere ? e diamo invio.
c:>debug (invio)
- ? (invio)
Fatto ciò comparira la seguente schermata.
Per uscire dal debug scrivere dopo la linea il carattere Q che significa quit cioè uscita. Il sistema ritorna in c:> Noi scriviamo il comando exit per ritornare a Windows.
-Q
c:> exit