Marco
2004-11-21 09:39:19 UTC
Disassemblando il settore di boot di un floppy di avvio, mi sono posto le
seguenti domande:
1) Che fa esattamente l'interrupt 13 del BIOS (gestione del disco), se
AH=00? Ho letto che dovrebbe resettare il disco (nel mio caso il floppy,
essendo DL=00); da qualche parte si parlava di lettura della traccia 0: che
vuol dire esattamente "resettare" il floppy? Cosa viene letto, esattamente,
e dove viene posto?
2) Perchè un codice posto all'indirizzo 0000:7C00 e che, essendo composto da
512 byte, termina a 0000:7DFF (come sempre, quando il BIOS carica il settore
di boot), e che non ha mai scritto nessun valore in memoria, dovrebbe andare
a leggere 11 byte che iniziano a 0000:0078 (addirittura il puntatore attuale
dello stack, BP, viene settato a 0078!), e copiarli all'inizio del codice da
0000:7C00 a 7C0B? Che venga cancellata una parte del codice, ormai eseguito,
non mi scandalizza; tuttavia non capisco in cosa consistano questi dati. Da
qualche parte ho letto che a 0000:0078 è presente l'interrupt 1E, che punta
alla tabella dei parametri del dischetto. È quello che viene copiato? in
cosa consiste esattamente?
seguenti domande:
1) Che fa esattamente l'interrupt 13 del BIOS (gestione del disco), se
AH=00? Ho letto che dovrebbe resettare il disco (nel mio caso il floppy,
essendo DL=00); da qualche parte si parlava di lettura della traccia 0: che
vuol dire esattamente "resettare" il floppy? Cosa viene letto, esattamente,
e dove viene posto?
2) Perchè un codice posto all'indirizzo 0000:7C00 e che, essendo composto da
512 byte, termina a 0000:7DFF (come sempre, quando il BIOS carica il settore
di boot), e che non ha mai scritto nessun valore in memoria, dovrebbe andare
a leggere 11 byte che iniziano a 0000:0078 (addirittura il puntatore attuale
dello stack, BP, viene settato a 0078!), e copiarli all'inizio del codice da
0000:7C00 a 7C0B? Che venga cancellata una parte del codice, ormai eseguito,
non mi scandalizza; tuttavia non capisco in cosa consistano questi dati. Da
qualche parte ho letto che a 0000:0078 è presente l'interrupt 1E, che punta
alla tabella dei parametri del dischetto. È quello che viene copiato? in
cosa consiste esattamente?