Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Themen - Vampire

Seiten: [1]
1
OS-Design / PM im Kernel oder beim Booten
« am: 25. August 2004, 10:17 »
Hi,

habe mal wieder ne Frage, bzw. will mal ein paar Meinungen von euch hören. Denkt ihr, dass man in den PM schon beim Booten wechseln sollte oder erst im Kernel ? Überlege grad was besser ist. Für die Überschaubarkeit ist es denk ich besser beim Bootvorgang in den PM zu wechseln. Auf der anderen Seite ist es aber auch schon Aufgabe vom Kernel, weil ja auch der Speicherbereich usw.. zugewiesen wird jedoch kann man diese ja auch noch später ändern...

Grüße
Vamp
2
Lowlevel-Coding / PM mode
« am: 20. August 2004, 13:20 »
Hallo,

so habe mal so nen paar Fragen zum Tutorial vom TeeJay zum Thema PM
mov        eax, cs        
    mov        ds, ax        
       
    shl        eax, 4                
                               
    mov        [CODE_Desc+2], ax    
    mov        [DATA_Desc+2], ax    
    shr        eax, 16                
    mov        [CODE_Desc+4], al
    mov        [DATA_Desc+4], al

    mov        eax, cs                
    shl        eax, 4
    add        eax, NULL_Desc

    mov        [Base], eax            
    mov        [Limit], WORD gdt - NULL_Desc -1    

    lgdt    [gdt]                ;GDT laden


sind eigentlich recht triviale Sachen die ich bisher nicht verstanden habe, und komme grad irgendwie auch net weiter.. Vielleicht kann mir da jemand etw. helfen

Warum nimmt man für den Code - Deskriptor die gleiche Adresse wie für den Daten - Deskriptor ?

und dann würd ich gern wissen, was man genau mit den Rechnung bezweckt. Ich weiß schon wofür man die Befehle shr und shl verwendet nur weiß ich im MOment nicht warum wir denn den Wert aus CS verwenden und nicht etwa aus DS. Wenn mir jemand erklären könnte wie die Berechnung gemacht wird, wäre ich sehr dankbar!


Grüße
Vamp
3
Das Wiki / Fehler/Ungenauigkeit in der ersten Ausgabe ???
« am: 03. August 2004, 14:40 »
Hi,

ich habe mal ne Frage zu dem Bootloader in der ersten Ausgaeb eueres Magazins. Ich versuch grad alles mehr oder weniger richtig zu verstehen und auch die ganzen Befehle nachzuschauen (BIOS INterrupts usw...) und bin jetzt auf was gestoßen was ich nirgendswo gefunden habe usw...

Der Code ist deswegen nicht falsch, das ist mir auch klar, schließlich funktioniert er ja :)

und zwar folgendes:

; Diskdrive reset (Interrupt 13h, 0)
push ds         ; Sichere DS
mov ax, 0         ; Die gewünschte Funktion (reset)
mov dl, [bootdrv]     ; Dieses Laufwerk ist gewünscht
int 13h         ; Den Interrupt ausführen
pop ds             ; DS wiederherstellen
jc load         ; Geht nicht? -> Noch mal!
load1:
mov ax,0x1000         ; ES:BX = 10000
mov es,ax
mov bx, 0


Ich habe mir verschiedene Interrupt Listen durchgeschaut und bin jetzt darauf gestoßen, dass im Prinzip das setzen von ax auf 0 nicht ganz korrekt ist. Der Funktion reicht es schon aus wenn nur ah auf 0 gesetzt wird, so steht es auch in den agnzen Referenzen in denen ich nachgeschaut habe. Mir ist klar dass das Register AH ein Teil von AX ist..

Wollte ich nur mal so erwähnen

aber dennoch find ich euer Mag echt sehr gut gemacht !!

Grüße
Vamp
4
Guten Morgen,

habe grad mal ne Frage, fang grad an mir das mit der OS dev anzuschauen bzw. lese schon seit Montag. Habe inzwischen auch Bochs zum Laufen bekommen ohne Diskettenlaufwerk, da dieses freundlicherweise defekt ist usw.. aber egal läuft auf jeden Fall (fast) alles.

Ich habe etwas kentnisse in Assembler, aber die Macros sind mir igrendwie neu, bin das halt etwas anders vom MASM gewöhnt, und bei NASM sieht das etwas anders aus.
Auf jeden Fall habe ich jetzt ne Macrofunktion geschrieben, gegen die sagt er auch nix, aber wenn ich dieselbe aufrufe meint er :
error: parser: instruction expected

mein bescheidener zusammenkopierter Code sieht so aus zumindwest die Kernel.asm:

; ---------------------------------------------------
; Unser Kernel
; ---------------------------------------------------

call registerInterrupt;
mov ax, 1000h ; Segmentregister updaten
mov ds, ax
mov es, ax
start:

;HIIER ZEIGT ER AN WÄRE EIN FEHLER !!!
PrintText msg     ; Schicke Bootmessage :)
mov si,msg_boot
call putstr     ; Noch eine Message :D
call getkey     ; Warte auf einen Tastendruck
jmp reboot     ; Reboot
; -------------------------------------------------
; Funktionen und Variablen
; -------------------------------------------------
msg db "Welcome to Morios",13,10,0
msg_boot db "Press any key...",10,0


%include "interrupt.asm"
%include "Functions.asm"

;--------------------------------------------------

%MACRO PrintText 1
    mov al, 0x01
    mov si, %1
    int 0x21
%ENDMACRO


___________________________

über Hilfe wäre ich echt dankbar
Seiten: [1]

Einloggen