Crea sito

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

CONVERSIONE DA BINARIO AD ESADECIMALE

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).

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

Prompt dei comandi del DEBUG