| 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]] | ||