Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly: Bootloaderin boottaaminen muistitikulta?

supermies [15.09.2015 16:31:25]

#

Oon tehny sellasen pienen bootloaderin ja kokeillu sitä virtualboxilla. Nyt haluisin kokeilla boottaa sen biosin bootmenusta, mut en löydä sitä sieltä. Kirjotin sen muistitikulle imageUSB ohjelmalla. Pitäis kai tehä siihen joku bootsektori tai jotain, mutta miten?

VOiko tällästä ees boottaa???
tossa sen bootloaderin koodi:

[BITS 16]
[ORG 0x7C00]

JMP Main

Main:

MOV SI, Text
CALL PrintString
CALL NextLine

MOV SI, PressKeyForBoot
CALL PrintString
CALL Boot
JMP $

PrintCharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07

INT 0x10
RET

NextLine:
MOV AL, 0
stosb
mov AH, 0x0E
MOV AL, 0x0D
INT 0x10
MOV AL, 0x0A
INT 0x10
ret

Boot:
CALL RebootKey
db 0x0ea
dw 0x0000
dw 0xffff

RebootKey:
mov ah, 0
int 0x16
cmp ah, 01h
jne RebootKey

PrintString:
next_character:
MOV AL, [SI]
INC SI
OR AL, AL
JZ exit_function
CALL PrintCharacter
JMP next_character
exit_function:
RET


Text db 'Loading...', 0
PressKeyForBoot db 'Press ESC key to reboot.', 0
TIMES 510 - ($ - $$) db 0
DW 0xAA55

Ja toi on siis koodattu assemblyllä....

vesa_turp [15.09.2015 17:14:00]

#

En tunne asiaa syvällisemmin mutta henkilökohtainen tapani touhata noissa asioissa liittyy järjestelmien asennuksiin.
Käytän linuxia ja kubuntun mukana on softa:"käynnistuslevyn luonti".
Ohjelmalla voi tehdä boottaavan CD:n DVD:n ja USB-tikun.

Metabolix [15.09.2015 17:20:51]

#

Jos koneesi ei tue USB-tikulta käynnistystä, et suoranaisesti voi asialle mitään omalla koodillasi. Kuitenkin voit asentaa esimerkiksi GRUB-käynnistyslataajan, jonka chainload-toiminnolla voit käynnistää tuollaisen yhden sektorin jutun.

Oman käyttöjärjestelmän tekemisessä pääsee helpommin alkuun, kun tekee binäärin sellaisessa muodossa, että esimerkiksi GRUB pystyy lataamaan sen kokonaan. Asiasta on joskus puhuttu.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta