Autor Thema: In Videospeicher schreiben  (Gelesen 9303 mal)

Paula

  • Gast
Gespeichert
« am: 02. May 2014, 17:17 »
Hallo,
wie schreibt man in denn Videospeicher die Hintergrundfarbe und Vordergrundfarbe für den Text?

LG

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 02. May 2014, 17:48 »
Hast du schon den Artikel dazu gelesen?
Dieser Text wird unter jedem Beitrag angezeigt.

Paula

  • Gast
Gespeichert
« Antwort #2 am: 02. May 2014, 22:23 »
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
« Letzte Änderung: 03. May 2014, 01:35 von Paula »

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 03. May 2014, 02:02 »
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.)
Dieser Text wird unter jedem Beitrag angezeigt.

Paula

  • Gast
Gespeichert
« Antwort #4 am: 03. May 2014, 09:14 »
Hab da noch ne Frage, im Wiki steht
Zitat
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?
« Letzte Änderung: 03. May 2014, 10:17 von Paula »

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 03. May 2014, 11:32 »
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.

Paula

  • Gast
Gespeichert
« Antwort #6 am: 03. May 2014, 11:44 »
Das versteh ich jetzt nicht, rechen nicht drei Y?
Die Farben sind doch alle hexadezimale Darstellungen.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 03. May 2014, 14:31 »
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 Artikel zum Zehner-, Binär- und Hexadezimalsystem.
Dieser Text wird unter jedem Beitrag angezeigt.

Paula

  • Gast
Gespeichert
« Antwort #8 am: 03. May 2014, 20:42 »
Muss ich jetzt die Binärzahl oder Hexadezimale Zahl in den Videospeicher schreiben? Also für die Hintergrundfarbe ... Das verwirrt alles grade ein bisschen

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 03. May 2014, 21:30 »
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.
« Letzte Änderung: 03. May 2014, 21:34 von Jidder »
Dieser Text wird unter jedem Beitrag angezeigt.

Paula

  • Gast
Gespeichert
« Antwort #10 am: 03. May 2014, 21:39 »
Achso, ich hab es so verstanden das es Pflicht ist Vordergrundfarbe in Binärzahlen darzustellen :)
Danke für die Aufklärung!

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 03. May 2014, 21:51 »
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.)

Paula

  • Gast
Gespeichert
« Antwort #12 am: 03. May 2014, 22:53 »
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...
« Letzte Änderung: 04. May 2014, 00:23 von Paula »

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 04. May 2014, 00:48 »
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.

Paula

  • Gast
Gespeichert
« Antwort #14 am: 04. May 2014, 17:04 »
Wenn ich z.B. als Hintergrundfarbe jetzt schwarz will muss ich dann 0x0 oder 0x00 schreiben, weil ich hab ja nur drei Zeichen frei.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 04. May 2014, 17:15 »
0x0
Dieser Text wird unter jedem Beitrag angezeigt.

Paula

  • Gast
Gespeichert
« Antwort #16 am: 04. May 2014, 17:45 »
Okay

 

Einloggen