Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: thetrue am 21. July 2006, 16:05
-
moin,
also unter PMode gibt mal ja so etwas auf den Bildschirm aus ...
mov 0xB8000, byte 'A'
aber wie kann man den Ü, Ä, Ö und ß ausgeben??? also die Umlauten ...
-
Also, der Textmodus benutzt standardmässig ASCII. Du musst also nur in eine ASCII-Tabelle schauen welchen Wert das Zeichen hat.
Wenn du in deinem Editor Umlaute benutzt und bei der Textausgabe andere Zeichen herauskommen dann benutzt dieser einen anderen Zeichensatz.
-
das dürte aber nicht passieren, weil der assembler ja alles in ASCII zeichen umwandelt, glaub ich jedenfalls
-
Der Assembler macht damit gar nichts, sondern nimmt es einfach so, wie es da im Code steht (und somit, wie es im Editor gespeichert wurde). Solange man sich auf ASCII (also 7 Bit) beschränkt, dürfte es sowieso keine Probleme geben, aber da sind dummerweise keine Umlaute enthalten.
Ich bin mir nicht sicher, ob standardmäßig ein Zeichensatz benutzt wird, in dem es Umlaute gibt, da müßtest du einfach mal alle Zeichen ausgeben lassen und durchschauen. Wenn ja, Glückwunsch, du mußt einfach den entsprechenden Wert nehmen.
Wenn es dort keinen Umlaut gibt, dürfte dein Problem im wesentlichen darin bestehen, der Grafikkarte Bitmaps für einen anderen Zeichensatz unterzujubeln. Wie man das genau macht, überlasse ich dann aber wieder dir, denn das weiß ich momentan selbst auch nicht.
-
nja, erst will ich ohne vesa etc auskommen, erst nur textmode ...
-
Von VESA redet hier auch niemand. Trotzdem willst du irgendwie einen Text anzeigen. Und daher wird jedem Zeichen eine Bitmap zugeordnet, die dann angezeigt wird, wenn an der entsprechenden Stelle das Zeichen steht. Wo sollten die Buchstaben sonst herkommen?
-
nee, ich will es nur mit dem VideoRam die Umlauten ausgeben ...
also ab 0xB8000 ...
-
davon redet taljeth auch. Man kann den font des textmodes anpassen. Und dass macht man imho indem man nem bios interrupt ne bitmap an die Hand gibt. Imho gibts aber beim textmode auch so die umlaute, aber ich weiß auch nicht welchen code die haben. Auf jeden Fall nicht den den ein gcc/g++ den umlauten gibt, dass hab ich auch schon versucht.
-
Deswegen habe ich als allererstes gesagt, er soll sich mal eine Tabelle ausgeben lassen, um zu schauen, ob es die Umlaute nicht doch irgendwo gibt. Mit gcc hat das übrigens herzlich wenig zu tun, der nimmt die Datei eben so, wie sie kommt. Das hängt allein vom Texteditor ab, mit dem du den Umlaut eingefügt hast.
-
Aaaaalso:
Der erweiterte ASCII-Zeichensatz hat die Umlaute und die kann man auch im Textmode 0x3 ausgeben... Benutze einfach die folgenden Codes:
Ä 0x8E ä 0x84
Ö 0x99 ö 0x94
Ü 0x9A ü 0x81
In NASM sieht das dann so aus:
msg0 db "Ich bin ein String mit den Umlauten:", 0x84, 0x94, 0x81,"." 0
Das würde dann, wenn du's ausgibst, so aussehen:
Ich bin ein String mit den Umlauten äöü.
Ich hoffe das hat dir geholfen...[/code]
-
Die Frage ist nur ob es eine Standard Erweiterung ist, die auf allen PCs benutzt wird oder ob diese je nach Land variiert.
-
Hmm... das weiß ich leider nicht genau... es ist kein Standard... der Standard umfasst nur 7bit, glaube ich... allerdings wird des auf einigermaßen jedem PC laufen... denke ich... wenn dir des net sicher genug ist, und du wirklich möchtest, dass es auf JEDEM PC 100%ig läuft.. dann nimm halt Unicode XD Aber dafür kannste den Textmodus 3 dann vergessen...
Eine andere möglichkeit ist, du stellst sicher, dass die VGA 8x16 Fonts an diesen 6 Codepositionen ( 0x81, 0x84, 0x8E, 0x94, 0x99, 0x9A ) wirklich den Bitmaps für die Umlaute entsprechen... wenn nicht überschreibst du sie halt mit deinen eigenen bitmaps für die umlaute
-
unicode ist gut, doch wie kann man es benutzen???
-
im textmode garnicht. Erst wenn du deine eigene gui machst und deine eigenen Fonts renderst, dann macht unicode sehr viel Sinn. Aber das ist für dich noch ein __sehr__ __sehr__ langer weg. Also find dich vorerst mal damit ab, dass du zwar die Umlaute verwenden kannst, aber evtl. nur in Europa oder deutschsprachigen Ländern.
-
hmm, ok ^^
-
Wie ich schon sagte du könntest die Umlaute auf ALLEN rechnern benutzen, wenn du vorher die Bitmaps für die Umlaute im VGA Font überprüfst und gegebenenfalls mit deinen eigenen Bitmaps überschreibst, wenn diese net den Umlauten entsprechen.
-
OK, hier sollte aber noch erwähnt werden das dies nichts mit dem PM zu tun hat. Im RM ist das genau das selbe mit den ASCII-Zeichen. Ja, ich weiß das dies hier sowieso jeder weiß. Aber der Vollständigkeit her. ^^
bitmaster