Oppure

Loading
01/12/12 12:17
Per lo stesso motivo per cui l'ho fatto prima, quando sono stati letti. Perché quei byte stanno nel segmento 0 della memoria. Vedi

wiki.osdev.org/…
01/12/12 20:20
gllobal
intendi questo? -----> 0x0000 | 0x00 | Divide by 0
aaa
01/12/12 20:42
Sì ... quello.

Che voi avete utilizzato ...
Ultima modifica effettuata da 01/12/12 20:43
01/12/12 20:46
gllobal
è l'interruzione della CPU quando avviene la divisione per 0, lo presa dalla pagina che mi hai passato. Però io non ho capito perchè devo mettere il registro ds a 0, tanto dopo non viene utilizzato. Scusa l'ignoranza ma l'assembly è l'unico linguaggio che mi sta sulle scatole e non riesco a capirlo.
aaa
01/12/12 20:50
gllobal
ecco ho sbagliato a scrivere, "l'ho presa..." se no pensi che oltre con il linguaggio assembly ho problemi anche con l'italiano:rofl:
Ultima modifica effettuata da gllobal 01/12/12 20:50
aaa
01/12/12 21:15
Ti ripeto ... quel vettore (quello della divisione per 0) è posizionato dal sistema operativo all'offset 0 del segmento 0. Quindi, se devi leggerlo/scriverlo, devi posizionare il registro DS a 0.

Non è difficile ... Hai presente come funzionano i segmenti e gli offset ?
01/12/12 21:26
gllobal
"Hai presente come funzionano i segmenti e gli offset ?" intendi come si trova l'indirizzo? in questo caso si, però non ho capito perchè ti sei posizionato sull'indirizzo della procedura dell'interruzione della CPU alla fine, in pratica non ho capito tutto questo pezzo, nemmeno la parte del ripristino dei 4 byte dell'IVT:

mov ax,0
    mov ds,ax
   
    mov [02],dx  ;ripristino i 4 byte dell'IVT
    mov [00],cx  
aaa
01/12/12 21:33
Ma cosa non capisci di quel pezzo? Non so come spiegartelo in altro modo ... quei 4 byte sono posizionati a partire dall'indirizzo 0000:0000 e quindi devi posizionare il segmento con le prime due righe e scrivere i 4 byte ai rispettivi offset con le altre due righe.