Próbowałem napisać program ładujący w języku asemblera na dysk USB, aby przetestować go na innym komputerze. Program ładujący (powinien) działać z procesorami Intel. Komputer, na którym go testuję (Windows 7 z procesorem Intel Celeron i 2 GB RAM) powinien go uruchomić, ma nawet opcję rozruchu z dysku USB w BIOS-ie (i wykrywa dysk). Kiedy uruchamiam boot z napędu, uruchamia się on w systemie Windows. Powinien wyświetlać mój niestandardowy system operacyjny, który jest po prostu programem do montażu typu Hello-World. Zakładam, że dzieje się tak, ponieważ nie można znaleźć systemu operacyjnego: albo znacznik systemu operacyjnego (który znalazłem powinien być „dw 0xAA55”) jest nieprawidłowy, dysk USB nie nadaje się do rozruchu lub po prostu nie umieszczam plik bin bootloadera w pierwszym sektorze.
Moje pytania brzmią: jak sprawdzić, czy (a) dysk USB jest w stanie uruchomić system operacyjny, (b) czy system operacyjny jest rozpoznawany, oraz (c) czy plik bin znajduje się we właściwym sektorze (pierwszy sektor) .
Oto kod asemblera:
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)
Jestem raczej nowy w asemblerze, więc jeśli komentarze po niektórych liniach nie pasują do tego, czym powinny być, to prawdopodobnie dlatego. Dzięki za pomoc!
źródło
a) Spróbuj uruchomić inny system operacyjny z pendrive. Muszą być instrukcje, jak np. Umieścić system Windows na pamięci USB. Jeśli to zadziałało, wiesz, że Twoja maszyna może to zrobić.
b) Jeśli wiesz, że Twoje urządzenie uruchamia system operacyjny, wiesz, że uruchamia system operacyjny, gdy ulega awarii lub wyświetla komunikat „cześć”. Wiesz, że nie rozpoznał systemu operacyjnego po uruchomieniu na zwykłej partycji. Więcej informacji tutaj: http://en.wikipedia.org/wiki/Master_boot_record
c) Pierwszy sektor jest osiągalny przez otwarcie samego dysku . Spójrz na to: http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29.aspx , akapit „Dyski fizyczne i woluminy”
źródło