Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgabe auf der Konsole im Protected Mode
Hallo,
kann mir jemand erklären wie man mit dem Speichermodell flat (also im Protected Mode ) Zeichen auf der Konsole ausgibt.? Die Bios Interrupts kann man nicht mehr benutzen oder ?
vielen Dank und Grüße
Armin
Hi,
der Speicherbereich für den Textmodus beginnt an 0x000B8000. Der Speicher ist so aufgebaut, dass immer abwechselnd ein Byte das Zeichen enthält und ein Byte die Vorder- und Hintergrundfarbe. Wenn du also z.b. die Zeichenkette "Hallo Welt" ausgeben willst, musst du
1. einen Zeiger auf den Videospeicher erstellen (z.b. edi)
2. 1 Byte der Zeichenkette einlesen
3. schauen ob das ende der zeichenkette erreicht ist (also z.b. ob das byte 0 ist)
4. Das Zeichen nach [edi] schreiben
5. edi um 1 erhöhen
6. nach [edi] die farbe (z.b. 0x07 für grau auf schwarz) schreiben
7. edi um 1 erhöhen
8. nach 2. springen
Den Cursor kannst du dann noch bewegen, indem du an die Ports 0x3D5 das offset schickst:
Mal was in C:
int offset = cursorx + cursory * 80; // oder in asm einfach (EDI - 0xB8000) / 2 ... warum das so ist? selber nachrechnen ;)
outb(14, 0x3D4); // den wert 14 an port 0x3D4 schicken, damit er weiss was jetzt kommt
outb(offset>>8, 0x3D5); // das highbyte des offsets an port 0x3D5 schicken
outb(15, 0x3D4); // ...
outb(offset, 0x3D5); // das lowbyte des offsets an port 0x3D5 schicken
das Stück C hier oben ist aus meinem "Video-Treiber": http://easytarget.de/jidder/c-80x25-video-treiber-pmode.html (wenn du was mit C anfangen kannst)
Jidder
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.