ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
951
951
EMPFEHLEN
-
22.02.11 16:19 #1
- Registriert seit
- Feb 2011
- Beiträge
- 33
Hallo, ich möchte Programme in meinem OS erstellen, die aber unabhängig vom Kernel sind. Ich versuche z.B.:ein kleines Hallo Welt Programm zu öffnen. Es ist auch in NASM geschrieben und auch in einer .bin Datei. Mein einziges Problem ist: Ich versuche diese Datei genauso zu öffnen, wie der Bootloader den Kernel. Aber leider funktioniert nach irgendwelchen Gründen nicht. Was genau habe ich falsch gemacht?
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
mov ax, 0x1000 mov es, ax mov ds, ax mov ax, 0x2200 mov es, ax mov ds, ax push ax mov ax, 0 push ax retf mov [bootdrive], dl call load bootdrive db 0 load: mov ah, 0 mov dl, [bootdrive] int 13h load1: mov ax, 0x2200 mov es, ax xor bx, bx mov ah, 2 mov al, 5 mov cx, 2 mov dh, 0 int 13h times 512 - ($ - $$) hlt
Hier noch meine Makefile.sh:
Code :1 2 3 4 5
nasm -f bin -o a.bin a.asm nasm -f bin -o b.bin b.asm nasm -f bin -o e.bin e.asm cat a.bin b.bin e.bin >d.img qemu -fda d.img
-
22.02.11 16:49 #2
- Registriert seit
- Feb 2011
- Beiträge
- 33
egal, hab schon gelöst. aber ich habe noch eine andere frage:
warum springt der kernel gleich zur ladeadresse, obwohl ich ihm begehlt habe, dass er erst zum hauptkernel springen soll?
hier:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
mov ax, 0x1000 mov es, ax mov ds, ax jmp loop load: xor ax, ax ; 1 int 0x13 ;3 ; 1 - 3 : we must initialize the first floppy drive mov bx, 0x2200 ; ax is get the wort 0x1000(kernel address mov ah, 2 ;the function to search for the kernel, begins mov al, 5 ;we search 5 sectors mov cx, 2 ; we search in 2 cylinder mov dh, 0 ; page number : 9 mov dl, [bootdrive] int 13h ; interrupt nummer loop: mov ah, 0Eh mov al, 'A' int 10h xor ah, ah int 16h jmp load times 512 - ($ - $$) hlt
-
Hi
ohne jetzt lästig sein zu wollen, aber meinst du nicht, das du vor einer Prozessverwaltung dich zuerst einmal um das Dateisystem kümmern solltest? (sowie unzählige andere Sachen und, wenn man es ernst meint, auch die übliche C-Funktionensammlung?)
Gruß
-
23.02.11 15:25 #4
- Registriert seit
- Feb 2011
- Beiträge
- 33
1.ich werde das os 100% auf nasm schreiben, also brauche ich dieses extra c-funktionensammlung nicht
2.kanst du mir mal das FAT12 erklären, auf lolwelvel kapiere ichs irgendwie nicht
-
1: Ich rede ja auch nicht vom OS. Aber hattest du nicht vor, das dieses Programme ausführen kann?.
Ich würde mich sehr ärgern, wenn ich auf Windows alles in Assembler programmieren müsste (
) .
Nein, im Ernst: Warum willst du 100% Asm verwenden? Sowas wie puts, gets etc in Asm zu schreiben ist nicht schwer; und es hilft dir ja dann auch.
Wenn du Funktionen wie printf hast (statt immer einen kompletten Absatz zum Ausgeben einer Hex-Zahl) kannst du erstens schneller programmieren und zweitens wird er Code leicher lesbar.
Vollkommen egal, ob du in C oder Asm weiterschreibst.
2: Hast du dir die englische Wikipedia einmal angeschaut?
Der Aufbau ist dort erstaunlich detailliert beschrieben...
Wenns dann noch Unklarheiten gibt, findet man unten auch einen Link zur Spezifikation.
http://en.wikipedia.org/wiki/File_Allocation_Table
Gruß
-
23.02.11 16:13 #6
- Registriert seit
- Feb 2011
- Beiträge
- 33
das problem ist, ich habe mal versucht ein c kernel zu machen, aber es ging nicht, weil der booltoader es irgendwie nicht laden konnte(es kamm eine error message, dass _main nicht gefunden werden konnte). wenn du mir beschreibst, was ich falsch gemacht habe und wie ichs machen soll, dann würde ich gerne auf c ein kernel machen.
-
100% C geht auch nicht.
Das Grundgerüst zum Starten muss in Asm sein.
Wenn das gestartet ist, kann C weitermachen.
Das _main nicht gefunden wurde, hört sich aber irgendwie nach einer Linkermeldung an.
Die Fehlermeldung ist beim Kompilieren gekommen, oder?
Dann hast du den Compiler falsch aufgerufen.
Es darf nicht (wie bei jedem normalen Windows/Linux-Programm) gelinkt werden.
Wie du das machst, hängt vom verwendeten Compiler ab.
Gruß
-
23.02.11 16:44 #8
- Registriert seit
- Feb 2011
- Beiträge
- 33
egal, vergesen wirs(c kernel). aber wie benutze ich jetzt das fat12 dateisystem? also wie solls im code stehen?(und bitte keine Tabellen mehr, ich weiß nichtmal, was offset bedeutet)
-
Dann kann ich nur noch empfehlen, dir dringendst Grundlagen von Assembler anzueignen.
Wie hast du denn bis jetzt programmiert? Bzw. wo hast du Asm gelernt, ohne dabei das Wort offset kennenzulernen?
...Vielleicht solltest darüber nachdenken, in die Stellenangebote zu schreiben.
Wenn dein "wie solls im Code stehen" in ein paar Minuten geschrieben wäre, würde ich es ja machen, aber da werden auch ein paar Stunden lange nicht reichen.
Noch ein Vorschlag: Konzentrier dich fürs Erste auf einen Bereich.
Keine Prozessverwaltung schreiben wollen, während man es nicht schafft, C-Code auszuführen, und nebenbei auch noch Grafikkarte und Festplatte ins kleinste Detail behandeln wollen.
Das geht nicht. Man kann nicht eben mal Windows allein in ein paar Tagen schreiben.
Wenn du es nicht langsam angehst, wirst du nie vom Fleck kommen.
-
23.02.11 17:15 #10
- Registriert seit
- Feb 2011
- Beiträge
- 33
man
1.ich weiß, dass man windows in einpaar tagen nicht schreiben kann
2.ich bin kein träumer
3.hab im internet auf wikibooks gelernt
-
23.02.11 17:16 #11
- Registriert seit
- Feb 2011
- Beiträge
- 33
und erklär mir jetzt, was offset bedeutet
-
http://board.raidrush.ws/showthread.php?t=751179
War gar nicht schwer, das zu finden...
-
23.02.11 21:35 #13BassBox Tutorials.de Gastzugang
Nun, ich musste mich auch einige Tage mit Fat-12 auseinandersetzten um einen passablen Treiber zu proggen. ich bin gerade mit der Implementierung von exe beschäftigt, weil ich bereits einen ganzen Haufen Funktionen für C definiert habe, und mich mit Jloc und sowas nich auseinandersetzen will lass ich den Code einfach in exe Übersetzten und dan von meinem Os ausführen (arbeite im Pmode mit Multitasking). Natürlich u™H\È¿ˆZXÚZXÚ\ˆ\È[ÈÛÛˆ›Ùܘ[[H›ÛˆYZ[™[HÔËQ[][]܈HÝ\[‹X™\ˆXÚÙ[›™HÙZ[™[ˆÈÛÛ\[\ˆ\ˆHÓÓHÛÛ\[Y\ˆ˜[È™[X[™Z[™[ˆÙ[›™[ˆÛÛH¹™HXÚ\È™]Ù[›ˆZ\ˆZˆ™[X[™ØÚXÚ݈ÛÛ\][™\™XÚÙ\™H\ˆ˜][ˆZ[™\ˆš]˜]˜XÚšXÚ[Ü™Ù[ˆ˜XÚZ]YÈ\›9]\›‹‚‚“˜\ÜЛÞ
-
Hi
irgendwas ist an deinem Beitrag danebengegangen. Ich sehe 3 Zeilen normal und dann nurnoch Sonderzeichen.
Oder liegts an mir? Wäre nett, wenn noch jemand sagt, wie es bei ihm ausschaut.
Gruß
-
24.02.11 17:12 #15BassBox Tutorials.de Gastzugang
Oh, wie blöd. Ich habe die Antwort von meinem I-Phone mit tuts-mobile geschrieben. Bin wohl mit dem Zug beim senden in ein Funkloch gefahren. Aber das wichtigste was da stand war ob jemand von euch einen c compiler kennt der zu com compiliert.
Ähnliche Themen
-
Prüfen, ob im Ordner eine bestimmte Datei vorhanden ist und diese dann löschen
Von Terminator2 im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 13.10.06, 10:42 -
[SHELL] Programm öffnet datei -> Bearbeitungsprogramm öffnet sich
Von Terminator 2005 im Forum VisualStudio & MFCAntworten: 2Letzter Beitrag: 03.12.05, 10:54 -
Wie öffnet man eine 2GB große Datei in PS cs ?
Von filiz im Forum PhotoshopAntworten: 13Letzter Beitrag: 01.09.05, 21:45 -
Daten aus mysql datenbank auslesen und dann an eine andere Datei übergeben ? aber wie
Von Warden-666 im Forum PHPAntworten: 1Letzter Beitrag: 15.03.05, 23:35 -
Kernel generiert und dann der Start...
Von SirSalomon im Forum Linux & UnixAntworten: 0Letzter Beitrag: 15.04.02, 16:24





Zitieren

Login





