|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1056
|
[Assembly] Problema con la lettura di dati binari da floppy
Ciao a tutti, mi sto cimentando nella programmazione di un piccolo sistema operativo testuale in assembly
Ora ho un problema, nel senso che il boot loader riesce a caricare in memoria il kernel e a trasferirgli il controllo, però dopo non ci riesco più. Cioè, dal kernel non riesco a leggere altro, rimane sempre il cursore lampeggiante ecco le sezioni di codice interessate: Questo è quello che legge il file e dovrebbe trasferirgli il controllo: Codice:
... ... cls_command: mov ah, 02h ; read function. mov al, 1 ; sectors to read. mov ch, 0 ; cylinder. mov cl, 12 ; sector. mov dh, 0 ; head. mov dl, 0 ; drive number. ; es:bx points to receiving ; data buffer: mov bx, 0800h mov es, bx mov bx, 1401h int 13h cmp es:[1401h],0B4h ; il primo byte del file è B4 jne integrity_check_fail cmp es:[1402h],02h ; il secondo è 02 jne integrity_check_fail ;se non corrispondono il file è corrotto call 0800h:1401h call clear_screen jmp processed int_check_fail: lea si,integrity_error ;è una stringa del tipo "errore! verifica fallita" call print_string jmp processed ... ... Codice:
mov ah,0Eh mov al,'O' int 10h mov al,'K' int 10h ret Quello che non ha senso è che nell'emulatore (emu8086) funziona tutto perfettamente, nella realtà invece non va un casso! Ovviamente sul floppy nel settore 12,cilindro 0,testina 0 c'è il file che dovrebbe leggere, ma subito dopo che si è sentito il lettore macinare si blocca tutto e rimane solo il cursorse lampeggiante. La cosa è assurda perchè l'INT 13H lo uso anche per caricare il kernel e lì funziona Qualche idea?
Ultima modifica di demonbl@ck : 30-07-2010 alle 00:54. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Scusa ma tua stai usando assembly per 8086 (conosco l'emulatore) su una macchina reale x86?
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1056
|
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Quote:
![]() Comunque bisogna aspettare il parere di qualche esperto, qui sul forum non mancano, strano che nessuno abbia ancora risposto...
__________________
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
ma perché, esistono ancora i floppy disk?
![]() il mio PC il lettore floppy neanche ce l'ha, e parliamo del fisso, non del portatile ![]() ha ancora senso perdere tempo su queste tecnologie? metá dei computers oggi sono a 64 bit e non supportano piu neanche la modalitá virtuale x86, io se dovessi scrivere un sistema operativo da zero quantomeno mi informerei su EFI. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
si, ma comunque i processori ad architettura Intel a 32 bit partono sempre in modalitá reale a 16 bit: i bootloaders vengono eseguiti come codice Intel a 16 bit e si devono occupare di entrare nella modalitá protetta a 32 bit.
|
|
|
|
|
|
#7 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Quote:
Perfino il mio netbook, sebbene ci giri 7 Starter che è a 32 bit, ha un Atom 450 che supporta AMD64. Quindi se dovessi realizzare un s.o. oggi partirei senza dubbio con questa architettura, che ha una lunga vita davanti, ma soprattutto un'architettura molto più semplice, flessibile, e performante.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Quote:
__________________
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:04.























