Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Paula am 02. May 2014, 17:17
-
Hallo,
wie schreibt man in denn Videospeicher die Hintergrundfarbe und Vordergrundfarbe für den Text?
LG
-
Hast du schon den Artikel (http://www.lowlevel.eu/wiki/Textausgabe#Protected_Mode) dazu gelesen?
-
Uppps ... Übersehen
EDIT: Ich hab das jetzt so verstanden:
Byte 1 (Zeichen) = A
Byte 2 (Farbe) = 0x00xF
Also muss ich A0x00xF in den Videospeicher schreiben um A auf schwarzen Hintergrund mir weißer Schrift auf den Bildschirm zu schreiben, richtig?
LG
Paula
-
Also wenn ich mal über das syntaktische Kauderwelsch hinwegsehe, dann ja. Ist dir klar, in welcher Reihenfolge die Bytes und die Nibbles in den Videospeicher geschrieben werden müssen? (Tip: Experimentell kriegt man das auch schnell raus.)
-
Hab da noch ne Frage, im Wiki steht
BXXXYYYYb, Hierbei ist X die Hintergrundfarbe, Y die Vordergrundfarbe und B das „Blinkbit“.
Was soll das kleine b hinter dem Y und warum sind das vier Y?
-
Ein nachgestelltes "b" oder ein führendes "0b" gibt an, dass es sich um eine Binärzahl handelt. "h" bzw. "0x" markieren eine hexadezimale Darstellung.
Es gibt 16 mögliche Vordergrundfarben. Um die binär zu unterscheiden, brauchst du 4 Bit - darum die 4 Y.
-
Das versteh ich jetzt nicht, rechen nicht drei Y?
Die Farben sind doch alle hexadezimale Darstellungen.
-
Um es nochmal zu sagen: Es gibt 16 Farben. In Binärdarstellung braucht man deswegen 4 Bits.
Wenn die Farben in der einen Tabelle als Hexadezimalzahlen dargestellt werden und in der anderen Erläuterung als Binärzahlen, dann musst du gedanklich immer noch den Übertragungsschritt mitmachen. Entscheidend bei einer Zahl ist ja nicht die Darstellung, sondern der Wert. Zur Erläuterung gibt es beispielsweise bei bei Wikibooks (http://de.wikibooks.org/wiki/Mathematik:_Schulmathematik:_Zahlensysteme) Artikel zum Zehner-, Binär- und Hexadezimalsystem.
-
Muss ich jetzt die Binärzahl oder Hexadezimale Zahl in den Videospeicher schreiben? Also für die Hintergrundfarbe ... Das verwirrt alles grade ein bisschen
-
Wie bereits gesagt wurde, lässt sich dieselbe Zahl unterschiedlich darstellen. Wenn du 13 Äpfel vor dir liegen hast, und versuchst die Anzahl in der Dezimaldarstellung auszudrücken, wirst du "13" sagen. Wenn du versuchst, das in Hexadezimaldarstellung auszudrücken, dann wirst du "0xD" sagen. Wenn du versuchst das in der Binärdarstellung auszudrücken, dann wirst du "0b1101" sagen.
Wenn jemand mit Kenntnis der Hexadezimaldarstellung zu dir kommt, und behauptet "Da liegen 0xD Äpfel", dann kannst du das bestätigen.
Wenn jemand mit Kenntnis der Binärdarstellung zu dir kommt, und behauptet "Da liegen 0b1101 Äpfel", dann kannst du das bestätigen.
Zwei unterschiedliche Behauptungen mit "unterschiedlichen Zahlenangaben" wurden gemacht, und trotzdem sind beide richtig. Wie kann das sein? Weil "0xD" und "0b1101" die Darstellung ein und derselben Zahl sind. Die Zahl, die die Anzahl Äpfel, die da liegen, angibt. Die verändert sich ja nicht, nur weil jemand den Wert anders ausdrückt.
Compiler kennen meistens sowohl Hexadezimal-, Dezimal- und teilweise auch Binärdarstellung. Deswegen ist es absolut egal, wie du es ihm sagst, weil er den Zahlenwert aus der Darstellung ermitteln kann. Also es ist egal, welche Darstellung du für den Programmcode nimmst, weil der Computer mit dem Zahlenwert arbeitet und nicht mit der Darstellung der Zahl. Ich nehme meist die Hexadezimaldarstellung, weil sie übersichtlicher als die Binärdarstellung ist.
Zusammengefasst also: Wenn jemand beispielsweise "Hexadezimalzahl" sagt, meint er "Hexadezimaldarstellung einer Zahl", und die Darstellung hat keinen Einfluss auf den Wert, sondern dient nur als Mittel zur Kommunikation.
-
Achso, ich hab es so verstanden das es Pflicht ist Vordergrundfarbe in Binärzahlen darzustellen :)
Danke für die Aufklärung!
-
Manche Zahlen ergeben in verschiedenen Darstellungen einen Sinn, deswegen muss man immer zusätzlich angeben, welche Darstellung man gerade meint. Keine Angabe steht meistens für "dezimal".
0xZAHL oder ZAHLh beschreibt eine Hexadezimalzahl (Basis 16, Ziffern 0..9, a..f, Beispiel 0x0D).
0bZAHL oder ZAHLb beschreibt eine Binärzahl (Basis 2, Ziffern 0..1, Beispiel 0b1101).
0ZAHL beschreibt oft eine Oktalzahl (Basis 8, Ziffern 0..7, Beispiel 0377).
Letzteres ist gemein, da musst du aufpassen. Für einen C-Compiler sind 120 und 0120 verschiedene Zahlen! (0120 oktal ist 80 dezimal.)
-
Wie kann man eigentlich die einzelnen Zeilen in den Videospeicher schreiben, die brauch man ja fürs scrollen :)
Und kennt wer gute Anleitungen für VGA ... suche grade Google aus wie man z.B. die Auflösung ändert, aber ich finde nichts...
-
Am besten, du schaust dich im hiesigen Wiki um. Da steht alles drin, was du für Textausgabe brauchst. Den Link hast du ja schon bekommen.
Der VGA-Textmodus ist kompatibel zum CGA-Textmodus. Eine Zeile hat 80 Zeichen, jedes Zeichen belegt 2 Bytes im Videospeicher. Wo fängt die zweite Zeile an? Wo fängt die dritte Zeile an?
Grafik solltest du erstmal sein lassen. Das ist wesentlich komplizierter als du dir das vermutlich gerade vorstellen kannst und wird (leider) auch mit viel Erfahrung nicht wirklich viel besser. Aber wenn du unbedingt willst, findest du Informationen zum VGA-Grafikmodus und zu VESA ebenfalls im Wiki. Ich vermute aber, dass dir das ohne viel zusätzliches Grundlagenwissen noch nicht viel bringen wird.
-
Wenn ich z.B. als Hintergrundfarbe jetzt schwarz will muss ich dann 0x0 oder 0x00 schreiben, weil ich hab ja nur drei Zeichen frei.
-
0x0
-
Okay