Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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
  • 1 måned senere...

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...