knuto Skrevet 26. desember 2005 Del Skrevet 26. desember 2005 (endret) Eg veit godt at det ikkje går ann å lage ein bootloader utan ASM, men går det ann å bruke C++ med ASM-koden internt? Og korleis skulle ein kompilert det då? Eit eksempel: // Ingen inkludering av standard bibliotek sidan dei ofte er avhennige av kjerne void loadBoot() { asm { ; Bootloading }//asm }//end loadBoot void consolePrint(char &text) { asm { mov si, &text mov ah, 4 int 21h }//end asm }//end consolePrint int main() { loadBoot(); consolePrint("Welcome to floppy :)"); return 0; }//end main Er dette mogleg? Endret 26. desember 2005 av knuto Lenke til kommentar
dayslepr Skrevet 26. desember 2005 Del Skrevet 26. desember 2005 nei .......................... Lenke til kommentar
genstian Skrevet 29. desember 2005 Del Skrevet 29. desember 2005 er mulig, men du må lage egen kjerne da. Lenke til kommentar
Jaffe Skrevet 2. januar 2006 Del Skrevet 2. januar 2006 (endret) Den print-rutina funker hvertfall ikke. Kan ikke kalle interrupt 21h uten at den er satt opp... EDIT: en bootloader kan sikkert like enkelt skrives i assembly. Snekra sammen en: org 7C00h jmp start tekst db "Hei, dette er en bootloader (som ikke gjør noe)",0 start: mov si, tekst print: mov al, [si] mov ah, 0Eh cmp al, 0 je slutt inc si jmp print slutt: jmp slutt Endret 2. januar 2006 av Johan123321 Lenke til kommentar
knuto Skrevet 3. januar 2006 Forfatter Del Skrevet 3. januar 2006 Den print-rutina funker hvertfall ikke. Kan ikke kalle interrupt 21h uten at den er satt opp...5371369[/snapback] Er klar over det. Men det ville derimot fungert i MS-DOS, viss eg ikkje tek feil... Lenke til kommentar
Jaffe Skrevet 3. januar 2006 Del Skrevet 3. januar 2006 (endret) Den print-rutina funker hvertfall ikke. Kan ikke kalle interrupt 21h uten at den er satt opp...5371369[/snapback] Er klar over det. Men det ville derimot fungert i MS-DOS, viss eg ikkje tek feil... 5376881[/snapback] Interrupt 21,4 er ikke for å vise tekst. Det er 21,9 som er det, og den fungerer ved at adressen til første byte i strengen er i DX, og ikke SI Slik du viser det der, ligner mer på mitt OS, merkelig nok! Der er adressen til første byte i SI, og 21,4 brukes til å vise strengen! EDIT: med "21,4" mener jeg 21 som interrupten og 4 som funksjonen. Endret 3. januar 2006 av Johan123321 Lenke til kommentar
knuto Skrevet 3. januar 2006 Forfatter Del Skrevet 3. januar 2006 [...] Interrupt 21,4 er ikke for å vise tekst. Det er 21,9 som er det, [...]5376982[/snapback] Ja. Sjølvsagt. Kvar i all verda kom den fireren frå? Er det 4 som er til for å avslutte eit program? Lenke til kommentar
Jaffe Skrevet 3. januar 2006 Del Skrevet 3. januar 2006 [...] Interrupt 21,4 er ikke for å vise tekst. Det er 21,9 som er det, [...]5376982[/snapback] Ja. Sjølvsagt. Kvar i all verda kom den fireren frå? Er det 4 som er til for å avslutte eit program? 5377141[/snapback] 4C, er for å avslutte program. 4 er "Auxiliary Output" - altså output til en COM-port og lignende. 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å