Jump to content
Sign in to follow this  
knuto

Kjerneuavhennig C++? Bootloader?

Recommended Posts

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å? :hmm:

 

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? :hmm:

Edited by knuto

Share this post


Link to post

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 

Edited by Johan123321

Share this post


Link to post
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... :)

Share this post


Link to post
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.

Edited by Johan123321

Share this post


Link to post
[...] 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å? :hmm: Er det 4 som er til for å avslutte eit program? :hmm:

Share this post


Link to post
[...] 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å? :hmm: Er det 4 som er til for å avslutte eit program? :hmm:

5377141[/snapback]

 

4C, er for å avslutte program. 4 er "Auxiliary Output" - altså output til en COM-port og lignende.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...