Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Hauke am 13. May 2005, 17:51
-
Ich hab mich mit dem Protect Mode schon etwas länger theoretisch befasst aber was ich Programmier habe funktioniert nicht. So habe ich das Tutorial, welches auf dieser Seite zu lesen ist, etwas Modifiziert, aber das funktioniert auch nicht. Es ist nur ein blinkender Curser zu sehen.
Hier die Modifizierungen:
Ein weiterer Diskriptator für den Videospeicher:
dk3:
dw 0x1F40
dw 8000
db 0xB
db 10110010b
dw 0
für den Video Modus:
start:
mov ax,3
int 0x10
cli
und dieser Code um âhalloâ auszugeben:
END:
mov ax, 3
shl eax, 3
mov ds, ax
xor si,si
mov al, 'h'
mov [si],al
inc si
mov al, 7
mov [si],al
inc si
mov al, 'a'
mov [si],al
inc si
inc si
mov al, 'l'
mov [si],al
inc si
inc si
mov [si],al
inc si
inc si
mov al, 'o'
mov [si],al
inc si
inc si
h:
xor ax,ax
jmp h
Warum funktionier diese Modifizierung nicht?
-
h:
xor ax,ax
jmp h
macht das nicht ne endlosschleife?
Du machst oben nen cli, aber das wieder auflösen tust du ned. Sti ... so aus dem gedächniss ;)
nicht schlagen... kann eigentlich kein asm... aber das is mir so aufgefallen...
-
@matthieuriolo: doch, aber da is er ja schon am ende.
@hauke:
ist der deskriptor richtig gesetzt?
blinkt der cursor nur, oder kackt er auch ab nach einiger zeit?
-
Der Deskriptor ist glaub ich richtig gesetzt ich gehe ihn noch einmal durch
Die Größe soll 2 Videoseiten im 3. Textmodus sein also 25x80x2x2=8000=1F40h also:
dw 0x1F40
Die Offsetadresse ist B8000h also
dw 8000
und Bit 16-23 dann:
db 0xB
Und dann im Speicher vorhanden 1. Privilegstufe, Speichersegement Segementtype 1 (Lesen + Schreichen) und das letzte Bit wird doch vom Prozessor gesetzt also egal ob 1 oder 0 ergibt:
db 10110010b
und das letzte Word insgesamt dann 0
dw 0
Und der Cursor blinkt nur. und macht nichts weiteres.
-
Oh nein, das war der Fehler. Das ist mir gar nicht aufgefallen. Der Teufel steckt halt im Detail.
Trotzdem vielen Dank.
-
Geht es jetzt? Versuch das ganze beim Test am besten unter Bochs (Emulator). Das zeigt zumindest bei einem Crash wichtige Informationen, worans gescheitert ist!