Hallo,
Ich habe nun die Funktion putchar aus meinem Asm-Kernel umgebaut, sodass nach jeder Ausgabe eines Zeichens geprüft wird, ob gescrollt werden soll. Die Funktion arbeitet daher mit idiv bzw. div um die aktuelle Zeile auszurechnen.
Das Problem: idiv bzw. div ruft bei mir eine Exception auf (IDT und ISR funktionieren theoretisch schon), allerdings gibt der Exceptionhandler selbst auch einen String aus, was wieder eine Exception auslöst ...
Ich nehme an, dass sich der Kernel am Ende selbst überschreibt und neustartet.
Gibt es da irgendeine Erklärung?
Code:
mov eax,[CONSOLE_POS] ; aktuelle Position
mov ebx,80
idiv ebx ; oder div
cmp eax,24
jbe noscroll
memmove (TextBufferStart+160),TextBufferStart,(TextBufferLength-160) ; memmove ist ein Macro. TextBufferStart und TextBufferLength sind Konstanten
mov dword [CONSOLE_POS],TextBufferEnd-160 ; ebenfalls eine Konstante
noscroll:
mfg Thunder