Ich lerne 8086 Assembly. Ich muss die Hintergrundfarbe des Bildschirms mit 8086 Assembly ändern. Ich sah ein paar Tutorials, wo sie nur einen Teil des Bildschirms einstellen konnten. Ich möchte dies nicht mit DOS Interrupts machen, während alle Tutorials in DOS Interrupts sind. Es wäre gut, wenn mir jemand den Code zeigen würde, um den ganzen Teil des Bildschirms (Hintergrundfarbe) mit BIOS Interrupts zu setzen.Wie ändert man oder Hintergrundfarbe in 8086 Versammlung?
Antwort
können Sie den Hintergrund ändern und Vordergrundfarbe für alle dem Bildschirm durch BIOS-Funktion 06h mit
MOV AH, 06h ; Scroll up function
XOR AL, AL ; Clear entire screen
XOR CX, CX ; Upper left corner CH=row, CL=column
MOV DX, 184FH ; lower right corner DH=row, DL=column
MOV BH, 1Eh ; YellowOnBlue
INT 10H
Die Zahlen den Text Videomodus von 80x25 passen.
Eine der besten Informationsquellen für BIOS und DOS Interrupts für den IBM PC ist Ralf Brown's Interrupt List. INT 10h ist der allgemeine BIOS-Interrupt für Videoroutinen. Eine vollständige Liste der INT 10h Routinen finden Sie here. Ich habe die BIOS-Routine INT 10h/AH=06 verwendet, die als dokumentiert ist:
VIDEO - SCROLL UP FENSTER
AH = 06h AL = number of lines by which to scroll up (00h = clear entire window) BH = attribute used to write blank lines at bottom of window CH,CL = row,column of window's upper left corner DH,DL = row,column of window's lower right corner Return: Nothing
Ja, es macht ein Bildlauf des Fensters. Wie kann ich es machen, nicht zu scrollen? –
@CameraJohn Also, was Sie fragen, ist, wie man die Hintergrundfarbe des Bildschirms aktualisiert, ohne den Text zu überschreiben, der bereits existiert? –
@CameraJohn: Wenn Sie NASM verwenden, sollte diese Antwort funktionieren: http://StackOverflow.com/a/32686665/3857942. Dieser Code wurde als Funktion geschrieben. Sie legen _AL_ auf die gewünschte Vorder-/Hintergrundfarbe fest. 'mov al, 01eh' wäre gelb auf blau. Dann machst du 'setTextAttributes' aufrufen. Dieser Code geht von einem 80x25-Bildschirmlayout aus (Videomodus 3) –
- 1. Wie ändert man die Hintergrundfarbe in HTML?
- 2. Wie ändert man ListBox Auswahl Hintergrundfarbe?
- 3. xterm: Wie ändert man die Hintergrundfarbe?
- 4. Wie ändert man die Hintergrundfarbe eines ganzen Abschnitts in UICollectionView?
- 5. Wie man die Hintergrundfarbe einer Spinnerliste in Android ändert
- 6. Wie ändert man die Hintergrundfarbe einer Zelle in Devexpress Grid?
- 7. Wie ändert man die Hintergrundfarbe zufällig in HTML mit JavaScript?
- 8. IonicPopup ändert Hintergrundfarbe, wenn
- 9. Metro App - ListView - Wie man die Hintergrundfarbe von ListViewItems ändert
- 10. Javascript: Wie man ein neues div erzeugt und Hintergrundfarbe ändert
- 11. eckig-nvd3 Wie man die Hintergrundfarbe des Diagramms ändert
- 12. iOS Swift - Wie ändert man die Hintergrundfarbe der Tabellenansicht?
- 13. Wie ändert man Polymer (1.0) Papier-Toolbar Hintergrundfarbe?
- 14. Wie ändert man die Hintergrundfarbe des PyCharm-Code-Editors?
- 15. Vergleicht man Strings in 8086 real-Modus
- 16. Wie generiert man eine Zufallszahl in 8086 Assembly?
- 17. Hintergrundfarbe ändert von JQuery Slider
- 18. Wie ändert man die Vorder- oder Hintergrundfarbe einer Tkinter-Taste auf Mac OS X?
- 19. Textfield-Hintergrundfarbe ändert sich nicht
- 20. x86 Versammlung - über Verfahren
- 21. Versammlung, hallo Welt Frage
- 22. Hintergrundfarbe ändert mobile megamenu Dropdown
- 23. Maven: Wie man Versammlung mit Schnappschussartefakten ohne Zeitstempeldateinamen verursacht?
- 24. ADC Anweisung in ASM 8086
- 25. Versammlung über TCP übertragen
- 26. PHPExcel: Hintergrundfarbe der Zellen ändert sich
- 27. Drucken Fließkommazahl Assembler 8086
- 28. IE ändert die Hintergrundfarbe meines Bildes ... huh?
- 29. Wie ändert man Characters in PHP oder HTML?
- 30. Wie ändert man die Hintergrundfarbe der Schaltfläche in UWP Apps in C#?
Sie schreiben direkt an Videospeicher. Angenommen, Ihr Bildschirm zeigt Seite 0 an (und standardmäßig wird der Videospeicher die physikalische Adresse 0xb8000 (oder 0xb800: 0x0000) haben. Jede Zelle auf dem Bildschirm hat ein Zeichen- und Attributbyte (bildet ein 16-Bit _WORD_ Paar) Das Zeichen kommt zuerst im Speicher, dann das Attribut (Vordergrund-/Hintergrundfarbe). Die Adresse 0xb8000 würde das Zeichen enthalten, das bei Koord 0,0 angezeigt werden soll. 0xb8001 würde das Attributbyte enthalten, 0xb8002 wäre ein Zeichen bei Koord Attribut bei 0xb8003 usw. –
Wenn ein Bildschirm 80x25 ist, würde das 2 Bytes für jedes der Zeichen auf dem Bildschirm erfordern, also ist (80 * 25) * 2 = 4000. –
jeder Code wird groß sein pls –