Frage

Ich habe ein ASM -Skript, das Datum (Tag, Monat, Jahr) und Uhrzeit (Stunden, Minuten, Sekunden) anzeigt.

Dies druckt die aktuelle DateTime in der DOS-Box. Sache ist, es ist statisch. Ich möchte es dynamisch machen, was bedeutet, dass ich den neuen Wert an der genauen Stelle schreiben muss, an der der aktuelle Wert auf dem Bildschirm steht. Wie machst du das in ASM?

Ich habe überhaupt keine Ahnung und Google war dafür nicht mein Freund.

War es hilfreich?

Lösung

Verwenden Sie den ASM -Code, um Ihren Cursor vor dem Drucken Ihrer Zeichenfolge zu positionieren. Zum Beispiel:

        MOV     DX,1629H                ; (LINE 16H, COL 29H)
        MOV     AH,2                    ; Move cursor to DH,DL
        INT     10H
        ; now print your string

Andere Tipps

Wenn Ihr DOS-Box vor Windows 2000 (neuerer CMD.exe keine ANSI-Unterstützung anbietet) ist Ihr DOS-Box oder cmd.exe), dann unterstützt dies ANSI-Escape-Sequenzen. Sie können verschiedene verwenden Cursorbefehle Um den Cursor zu Beginn Ihrer Uhr zu positionieren, bevor Sie die neue Zeit anzeigen.

Dies ist nicht wirklich ein sprachspezifisches Problem, sondern eher eine plattformspezifische. Sie sagten, Sie rennen auf einer DOS -Box, also könnten Sie eine der folgenden verwenden:

  1. Wenn Sie eine DOS -Druckroutine verwenden (z. B. int 21h mit AH = 9), können Sie ein Wagenrücklaufzeichen drucken (ASCII 13) ohne Ein nachfolgendes Newline -Zeichen (ASCII 10), um den Cursor zum Beginn der aktuellen Linie zurückzugeben. Wenn dies tatsächlich eine Konsolen-basierte Windows-App ist und Sie WriteConsole verwenden, sollten Sie den gleichen Effekt erzielen.
  2. Wenn Sie wirklich DOS verwenden, können Sie das BIOS verwenden, um die aktuelle Cursorposition mit int 10H, AH = 2 zu aktualisieren.
  3. Wie von Sparr erwähnt, können Sie "ANSI" Escape -Sequenzen (falls Ansi.sys geladen) senden, um den Cursor sowie andere Dinge wie Farbe zu steuern. Diese Escape -Sequenzen würden gedruckt (z. B. Ala int 21h, Ah = 9), genau wie Ihr Text.

Wenn Sie in DOS viel Assembly -Programmierung durchführen wollen, würde ich ein Lesezeichen behalten eines von mehrere unterbrechen Verweise.

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