Autor Thema: Frage zu Dataselektor DS  (Gelesen 4988 mal)

Homix

  • Beiträge: 138
    • Profil anzeigen
Gespeichert
« am: 15. February 2005, 13:02 »
hi,
ich beschäftige mich noch nicht so lange mit OS Development und hab nun folgende Frage:

Bei einem Sprung zu meinem Kernel (bei 1 MB (0x100000) geladen) führe ich einen Far-Jump aus:

jmp codesel_kernel:0x0          ; springt zum Kernel

Im Kernel kann ich dann ganz normal Funktionen, ect. aufrufen.

aber wie ist das bei Daten/Variablen ?

wenn ich das Dataregister mit datasel_kernel fülle kann ich nicht mit im Kernel definierte Variablen zugreifen !

mov ax,datasel_kernel
mov ds,ax


und im Kernel:

mov ah,[MYBYTE]
jmp $
MYBYTE db 0

Hier wird in das Register ah nicht der Wert von MYBYTE reingeschrieben sondern irgendein anderer Wert !

Übrigens mein datasel_kernel ist wie folgt definiert:

   dw 0xFFF0 ; Segmentgröße 0..15
   dw 0x0000 ; Segmentadresse 0..15
   db 0x00 ; Segmentadresse 16..23
   db 0x92 ; Zugriffsberechtigung und Typ
   db 0xCF ; Zusatzinformationen und Segmentgröße 16...19
   db 0x00 ; Segmentadresse 24..31


Wo liegt der Fehler ?

Homix

  • Beiträge: 138
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 15. February 2005, 13:41 »
hi,
sry für den Doppelpost aber ich hatte ien kleinen Rechtsschreibfehler drin.

der Dataselektor ist so (soll bei 1 MB starten):

   dw 0xFFFF   ; Segmentgröße 0..15
   dw 0x0000   ; Segmentadresse 0..15
   db 0x10      ; Segmentadresse 16..23
   db 0x92      ; Zugriffsberechtigung und Typ
   db 0xCF      ; Zusatzinformationen und Segmentgröße 16...19
   db 0x00      ; Segmentadresse 24..31


es scheint mit aber eher so, dass dann wenn ich folgenden Code ausführe

  mov ax,datasel_kernel
  mov ds,ax

dass dann der PC den nachfolgenden Code NICHT mehr ausführt !

ist ein Fehler im GDT Eintrag für datasel_kernel ?
wenn ich aber die STartadresse bei 0 lasse macht er keinen Fehler und fährt mit der Codeausführung fort !?

cu,
stefan2005

Kevin_

  • Beiträge: 52
    • Profil anzeigen
    • http://fishing-online.lite-os.de
Gespeichert
« Antwort #2 am: 15. February 2005, 15:25 »
@stefan2005
man kann seine beträge auch editieren! (soll jetzt kein spam sein aber es ist einfach unschön wenn es zwei beiträge mit fast gleichem inhalt hintereinander gibt)

Homix

  • Beiträge: 138
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 15. February 2005, 20:21 »
hi,
oh ja sry
hatte ich irgendwie übersehen und werd das nächste mal darauf achten !

zurück zum thema:
weiss jemand was ich falsch mache oder ich richtig tun muss ?

cu,
stefan2005

 

Einloggen