Ich habe versucht, einen Bootloader in der Assemblersprache auf ein USB-Laufwerk zu schreiben, um ihn auf einem anderen Computer zu testen. Der Bootloader sollte mit Intel-Prozessoren funktionieren. Der Computer, auf dem ich es teste (Windows 7 mit Intel Celeron und 2 GB RAM), sollte es ausführen. Es gibt sogar eine Option zum Booten von einem USB-Laufwerk im BIOS (und es erkennt das Laufwerk). Wenn ich das Booten vom Laufwerk aus starte, bootet es in Windows. Es sollte mein benutzerdefiniertes Betriebssystem anzeigen, bei dem es sich im Grunde nur um ein Assembly-Programm vom Typ Hello-World handelt. Ich gehe davon aus dem ist , weil es das Betriebssystem nicht finden kann: Entweder den OS-Tag (was ich gefunden soll „dw 0xAA55“ sein) nicht korrekt ist, ist das USB - Laufwerk nicht gebootet, oder ich stelle einfach nicht die Bootloader-Bin-Datei im ersten Sektor.
Meine Fragen sind: Wie teste ich, ob (a) das USB-Laufwerk ein Betriebssystem booten kann, (b) ob das Betriebssystem erkannt wird und (c) ob sich die Bin-Datei im richtigen Sektor befindet (der erste Sektor)? .
Hier ist der Assembler-Code:
org 7C00h
jmp 0x0:start
start:
cli
mov ax, 0x9000 ;Set up stack
mov ss, ax ;Tell processor where stack is
mov sp, 0xFB00 ;Set stack offset
sti
mov AH, 0Eh ;Tell bios we're writing a char to screen!
mov AL, 'T' ;Load a new character into memory
int 10h ;Call BIOS video interrupt
jmp start ;And so on and so on
times 510-($-$$) db 0 ;Fill rest of sector up with 0s to make this 512B (a sector)
dw 0xAA55 ;Let BIOS know this is an OS! (defines a word)
Ich bin ein Neuling in der Montage. Wenn also die Kommentare nach einigen Zeilen nicht mit dem übereinstimmen, was sie sein sollten, ist dies wahrscheinlich der Grund. Danke für Ihre Hilfe!