Knut_F Skrevet 27. desember 2010 Del Skrevet 27. desember 2010 Prøver å kompilere en liten bootsector. Den funker fint på virtuell maskin. Men når jeg prøver å boote selve dataen med denne bootsectoren så funker det ikke? =( Jeg følger dette eksempelet [bITS 16] ; 16 bit code generation [ORG 0x7C00] ; ORGin location is 7C00 ;Main program main: ; Main program label mov ah,0x0E ; This number is the number of the function in the BIOS to run. ; This function is put character on screen function mov bh,0x00 ; Page number (I'm not 100% sure of this myself but it is best ; to leave it as zero for most of the work we will be doing) mov bl,0x07 ; Text attribute (Controls the background and foreground colour ; and possibly some other options) ; 07 = White text, black background. ; (Feel free to play with this value as it shouldn't harm ; anything) mov al,65 ; This should (in theory) put a ASCII value into al to be ; displayed. (This is not the normal way to do this) int 0x10 ; Call the BIOS video interrupt. jmp $ ; Put it into a coninuous loop to stop it running off into ; the memory running any junk it may find there. ; End matter times 510-($-$$) db 0 ; Fill the rest of the sector with zeros dw 0xAA55 ; Boot signature Noen som har en ide om hva som er feil? Lenke til kommentar
Jaffe Skrevet 29. desember 2010 Del Skrevet 29. desember 2010 Hvordan booter du det? Fra hvilket medium? Lenke til kommentar
Knut_F Skrevet 30. desember 2010 Forfatter Del Skrevet 30. desember 2010 Hvordan booter du det? Fra hvilket medium? Hei Jeg har brukt både minnepenn og en vanlig sata harddisk. Jeg bruker et program som heter HxD hvor jeg åpner harddisken, og .bin-filen jeg har generert med nasm. Så limer jeg inn HEX-verdiene fra bin filen, i sector 0 på disken jeg ønsker at dataen skal boote fra. Jeg har testet denne metoden ved å kopiere bootsectoren som ligger på disken jeg kjører os'et fra. - Og da booter den uten problemer! Lenke til kommentar
tommen Skrevet 17. februar 2011 Del Skrevet 17. februar 2011 Er du sikker på at int 10 (bios call'en) funker som den skal? Benyttes samme int (og på samme måte) i bootsector som ligger på disken fra før (usupporta gfx-mode, feil page index osv)? En ting å teste hvertfall.... En ting er virtuelt (hvor alt er satt til å fungere som standard. muligens(?) en annen hvis du booter opp en laptop som kanskje ikke gjør alt i henhold til standard...). Dumt tilleggspm: bootsig er riktig / plassert riktig (jeg kjenner ikke assemble-syntaxen)? Starter CPU opp i 16 bits mode (Jeg tror alt av CPU'er gjørdet men uansett...=) ellers er det ikke så veldig mye annet som kan gå galt her så vidt jeg vet. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå