Installato Dosbox e montata una cartella contenente il programma debug.exe (leggete l’articolo relativo) provate ora a scrivere alcuni semplici programmi.
Scrivere un programma che ….non fa nulla!
Avviate il programma debug.exe e scrivete il programma sotto :
- assembla in memoria a partire dalla cella 100h (100 esadecimale= 256 binario)
- interruzione n. 20h (termina il programma COM: MDOS interrompe via software la cpu e gli chiede di terminare il programma)
a questo punto premete invio e impostate la lunghezza del programma: dovete usare il comando R e scrivere la lunghezza nel registro contatore di programma CX. Il programma è lung 2 Byte perchè l’istruzione “int 20” ha tale lunghezza. La dimensione si evince anche dall’indirizzo riportato 0CE1:0102 che differisce dal precedente di 2 Byte. Infine dovete dare il nome short.com al programma con il comando “N”, scriverlo sulla memoria di massa con il comando W, uscire dell’editor debug con Q (quit).
c:>debug avvia l’editor del debug
-a 100 il programma va in ram a partire dall’indirizzo 100 (hex)
-0CE1:0100 int 20 interrupt e richiesta sw del DOS alla cpu di terminare il programma
-0CE1:0102 riga vuota
-r cx comando per importare lo spazio in memoria riservato al programma
-CX 0000 avvisa che nel registro contatore è posto il valore 0000
:2 inserisci la lunghezza: 2 Byte
-n short.com impostiamo il nome del programma cn il comando “N”
-w scrivere il programma su disco fisso
Scrittura di 2 byte in corso
-q uscire dall’editor debug.exe
c:\>short.com digitate il nome del programma e premete invio per eseguirlo
c:\> prompt di MSDOS
Modifichiamo il programma.
Aggiungiamo al programma l’istruzione “nop” la quale “non fa nulla”, serve per allungare un programma o per riempire spazi vuoti in memoria o spostare indirizzi di altre istruzioni.
c:>debug
-n short.com richiamiamo short.com
-l caricamento (load)
-u 100 l2 disassemblaggio da 100h per 2 byte
-0CE1:0100 int 20
-a 100 assemblaggio alla cella 100h
-0CE1:0100 nop inserisco nop
-0CE1:0101 int 20 inserisco int20 = fine programma
-0CE1:0103 premo invio
-r cx imposto la nuova lunghezza (3byte)
-CX 0002
:3 3 byte
-w scrivi su disco
Scrittura di 3 byte in corso
-q
c:\>short.com
c:\>
Quindi per correggere un programma posso richiamarlo con debug, vedere la posizione delle righe errate e assemblare per inserire le nuove istruzioni.