Schreiben Sie Grafiken Pixel in 16-bit-Montage

Ich versuche, mich zu entwickeln, mein eigenes, sehr grundlegende Betriebssystem für pädagogische Zwecke. Während die Kodierung der kernel, ich habe versucht, legen Sie Farbe auf einige Pixel auf dem Bildschirm, um es besser Aussehen, aber ich nicht.

Ich verwendet INT 10h mit AH = 0CH mit der video-Modus 13h (320x200 Grafik, 256 Farben, 1 Seite) und habe versucht, einige andere Modi wie 01h und 03h aber Sie funktionieren nicht.

Dies ist mein vollständiger code:

;set video mode
mov ah, 00h
mov al, 13h

int 10h

;write pixels on screen
mov ah, 0ch
mov bh, 0
mov dx, 5
mov cx, 5
mov al, 0100b

int 10h

Was ist falsch an meinem code?

  • Umm, video-Modus 03h ist ein Textmodus mit 80 Spalten und 25 Zeilen. Sie sagen, Sie wollen Modus 13h (und Sie tun), aber dein code sagt 03h.
  • Ich denke, 16b VGA-es kann sicher davon ausgegangen werden, diese ist x86, aber tag und vollständige info würde definitiv helfen.
  • ich verwendet 13h dann versucht, mehrere Modi, und wenn ich es kopiert den code hier habe ich vergessen zu ändern, den Modus des Modus, den ich bereits in der Frage..ich werde Bearbeiten Sie die Frage und ändern Sie es
  • ich habe versucht, verschiedene Farben, aber es druckt keine nichts
  • seine x86 ja, aber ich habe vergessen zu erwähnen, dass in der Frage, sorry
  • ich vergaß zu erwähnen, dass in der Frage
  • Sind Sie sicher, dass Ihre komplette komplette code? Erzählen Sie uns etwas über den compiler, den Sie verwenden.
  • sicher ist es nicht der vollständige code, es ist ein kernel, so ich kann nicht nach eine von Hunderten von Zeilen, um Fragen über einfach mal ein bisschen code, ich bin mit nasm und testen Sie meinen kernel auf bochs
  • So kann man irgendwie bestätigen der Modus geändert wird? Finden Sie den LCD-info-box? Die Auflösung oder vertikale/horizontale freq. wird wahrscheinlich ganz anders aus native-Modus. Und 13h-Modus verfügt über die Bildwiederholfrequenz auf 60 Hz. Wenn der Modus eingestellt ist, können Sie versuchen, zeichnen von Pixeln direkt in den VRAM. (unter DOS zugeordnet ist a000:0000 für 13h-Modus, aber ich bin mir nicht sicher, wie wirkt sich dies auf Ihre eigenen operating system, wenn Sie Karte-VGA-Speicher ersten, oder das BIOS machen das für Sie).
  • Löschen Sie die meisten von Ihr Hunderte von Zeilen und lassen Sie nur den notwendigen code, um eine pixel-Sie sehen, bis Sie auf dem Bildschirm.
  • Haben Sie sichergestellt, dass diese code-Zeilen sind tatsächlich erreicht wird, z.B. durch single-stepping mit dem Bochs internen debugger? (Nur Urteil heraus Ursachen hier.)
  • Coole Idee, es wird mir helfen, herauszufinden, wo ist das falsch..danke
  • Nein, aber ich werde versuchen, dies jetzt zu tun

InformationsquelleAutor Kordy | 2016-07-08
Schreibe einen Kommentar