Umschalten in Protected Mode — Änderungen 2028 → 2032

Zeile 1: Zeile 1:
 
So einfach ist das! In der GDT wird ein Daten, sowie Code-Deskriptor auf die ganzen 4 möglichen GByte Arbeitsspeicher eingerichtet. Heutzutage verwenden dank Paging alle OS ein solches, genannt flaches, Speichermodell. Das heisst von nun an muss man nur noch mit 32-Bit Offsets hantieren und sich nicht mehr mit Segmenten herumschlagen.
 
So einfach ist das! In der GDT wird ein Daten, sowie Code-Deskriptor auf die ganzen 4 möglichen GByte Arbeitsspeicher eingerichtet. Heutzutage verwenden dank Paging alle OS ein solches, genannt flaches, Speichermodell. Das heisst von nun an muss man nur noch mit 32-Bit Offsets hantieren und sich nicht mehr mit Segmenten herumschlagen.
 +
 +
Mehr [[Protected Mode|Infos]] und eine [[Protected Mode#Beispielcode|zweite Art]] in den Protected Mode umzuschalten findet man im Protected Mode Tutorial von Tee Jay, sowie dem, schon etwas älteren, [http://www.fh-zwickau.de/doc/prmo/start.htm Tutorial der FH-Zwickau].
 +
 +
 +
'''Wichtig''' bei diesem Code ist es, selbst noch eine passende org-Anweisung an den Anfang zu stellen.
  
 
<asm>;;;  Ein kleines Beispiel, wie man in den 32-Bit Protected Mode wechselt
 
<asm>;;;  Ein kleines Beispiel, wie man in den 32-Bit Protected Mode wechselt
Zeile 6: Zeile 11:
  
 
[BITS 16]
 
[BITS 16]
 +
org 0x0000 ; Addiert zu allen Offsetes die Adresse dieses Codes
 +
 
cli ; Interrupts ausschalten
 
cli ; Interrupts ausschalten
 
lgdt [gdtr] ; GDT Pointer laden
 
lgdt [gdtr] ; GDT Pointer laden
Zeile 21: Zeile 28:
 
mov ss,ax
 
mov ss,ax
 
mov esp,0x90000 ; Stack aufsetzen
 
mov esp,0x90000 ; Stack aufsetzen
 +
 +
jmp $ ; Endlosschleife, wird durch weiteren Code ersetzt
  
  
Zeile 48: Zeile 57:
 
gdt_end</asm>
 
gdt_end</asm>
 
© by Stefan Marcik
 
© by Stefan Marcik
 +
  
 
[[Category:Tutorials]]
 
[[Category:Tutorials]]