Frage

schrieb ich ein Programm in Assembler und zusammengestellt. Es soll ein blaues Smiley-Gesicht drucken und dann für den Benutzer warten, um eine Taste zu drücken, bevor sie beendet wird. Es geht das letzte Stück tun, aber es ist nicht das Smiley-Gesicht zu drucken. Kann jemand erklären, was habe ich falsch gemacht?

CSEG segment
org 100h
Begin:

mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end Begin

ich kompiliert es mit MASM mit einem 16-Bit-Linker

War es hilfreich?

Lösung

Sie können nur den Videopuffer stecken direkt, wenn Sie in einem Nur-Text-Video-Modus sind. Ich vermute, dass Sie Windows irgendeine Art verwenden und nicht wirklich DOS booten, so dass Sie wahrscheinlich in einem Grafikmodus sind.

Was Sie können der Lage sein, ein Konsolenfenster zu tun ist, öffnen und dann Alt Enter zu einem Vollbild-Textmodus zu gehen. Versuchen Sie, Ihr Programm gibt.

Andere Tipps

Es ist schon über ein Jahr oder so, da ich mit MASM und das einzige Nachschlagewerk arbeitete ich zu Hause habe MIPS ist, so dass ich zwar ein wenig eingerostet bin jedoch drucken, auf Bildschirm erfordert ein System-Interrupt (int 21h), noch das einzige System Interrupt-I ist der Programmabbruch Anruf nach dem Tastatur-Interrupt zu sehen bin.

Der Code ist ok, man muss nur entweder laufen Vollbild als Greg Hewgill vorgeschlagen, oder richten Sie das Befehlsfenster ein altes Rasterschriftart (wie SYSTEM) zu verwenden. Rechtsklick auf die Titelleiste des Fensters und haben einen Blick auf die Registerkarte Schrift.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top