Autor Thema: PMode Wahnsinn  (Gelesen 26296 mal)

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #40 am: 21. October 2006, 13:35 »
Jaja..dann stimmt das....

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #41 am: 21. October 2006, 13:37 »
was ich vermute is, dass der nach 0x0008:0x0 springt, und zwar der realen adresse... ist irgendwo im bios.... keine ahnung was ich noch machen soll...

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #42 am: 21. October 2006, 13:41 »
Ich weiß ja nicht, ob ich was falsch mache, dank GRUB hatte ich noch nicht mit solchen Zeug zu tun. Aber selbst mit [ORG 0x10000] kommt bei mir beim Sprung zu PMODE effektiv ein jmp 0x8:0x17 raus, was ja ganz offensichtlich falsch ist.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #43 am: 21. October 2006, 13:51 »
ich bin absolut ratlos... hab jetzt (1<<3) durch gdt-$ ersetzt, wegen der adresse... aber immer noch nichts...

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #44 am: 21. October 2006, 14:12 »
Das (1<<3) war schon richtig, aber mit dem jmp ist was faul, glaube ich.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #45 am: 21. October 2006, 14:14 »
dass denke ich auch... nur was?

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #46 am: 21. October 2006, 14:20 »
Schieb mal das [BITS 32] vor den jmp. Mit 16-Bit-Adressen kommt man nicht ganz bis 0x10000, würde ich vermuten. ;) Wie gesagt, alle Angaben ohne Gewähr, ich hab sowas selbst noch nie gemacht.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #47 am: 21. October 2006, 14:30 »
Hab jetzt alles auf Bits 32 gesetzt, hat nur dafür gesorgt, dass... na ja... irgendwas passiert... aber er springt nicht zu dem code den ich gemacht hab...

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #48 am: 21. October 2006, 14:32 »
Nein nein... Lass das [Bits 32] wo es ist...
Aber benutz mal statt

jmp codesel:PMode

des hier:

jmp dword codesel:PMode

Denn wenn die physikalische Adresse 0x10000 ist... Dann muss du ja
ein 32Bit Offset angeben... Und ich meine ich hab das bei mir dann
immer so gelöst, dass ich ein DWORD davor gesetzt hab...
Ist aber auch schon länger her XD ich benutze nämlich nun auch GRUB.

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #49 am: 21. October 2006, 14:39 »
ICH GLAUB'S JA NICHT!

Danke! Danke! Es funktioniert!!!!

<insert mere joy here>

Tausend Dank........... an alle............

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #50 am: 21. October 2006, 14:42 »
Na prima :)

Dann ist ja alles ok XD

Dann noch viel Spaß und Erfolg im Protected Mode ;)

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #51 am: 21. October 2006, 14:43 »
Hm, stimmt, die 32 Bit gelten erst nach dem Neuladen von cs, oder wie war das? Dann sieht das mit jmp dword doch wesentlich sinnvoller aus. Bei diesen Themen immer nur ein bißchen mitlesen und dann sein Halbwissen weitergeben, ist vielleicht doch nicht das beste...

FalShen: Das mit [BITS 32] ganz an den Anfang habe ich übrigens nicht gesagt. Auch wenn mein Vorschlag nicht viel besser war. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #52 am: 21. October 2006, 15:41 »
Sacht ma... wo is'n jetz' der Videospeicher? ds:0xB8000 geht irgendwie nicht...

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #53 am: 21. October 2006, 16:12 »
Der Videospeicher sitzt an der Adresse 0xB8000. Das stimmt schon so...
DS muss dann einen Selector auf ein Segment mit der Basis Null enthalten.

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #54 am: 21. October 2006, 18:30 »
Naja...vieleicht musst du den Screen zuerst noch reseten. Mit folgendem Bios-Int gehts: mov ax,3 ;Bildschirm löschen
int 0x10

Noooooooooooooos

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #55 am: 21. October 2006, 19:36 »
interrupts gehen doch nicht im protected mode.......

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #56 am: 21. October 2006, 20:00 »
Musst du halt noch im RM schreiben.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #57 am: 21. October 2006, 20:44 »
Wäre das erste Mal, daß ich davon höre...
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #58 am: 21. October 2006, 20:57 »
einfach memset() bzw. das Assembleräquivalent deiner Wahl drüberlaufen lassen.

@FalShen: Was heißt "geht nicht"?
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #59 am: 21. October 2006, 21:10 »
is das nicht so? dass ich erst ein Interrupt Gate schreiben muss oder so?

 

Einloggen