Ich versuche ein Programm in Assemblersprache zu erstellen, in dem ich einen Text oder ein Zeichen wie einen Bildschirmschoner auf dem Bildschirm verschieben möchte, dh zuerst sollte es sowohl vorwärts als auch abwärts gehen Richtung. Wenn es die untere Grenze des Bildschirms erreicht, sollte es sich vorwärts und aufwärts bewegen und umgekehrt.Moving Text Programm in Assembler Sprache
Ich habe mich selbst versucht und ich war in der Lage, das Zeichen in Vorwärts- und Abwärtsrichtung gleichzeitig zu bewegen. Wenn der Charakter die untere Grenze des Bildschirms erreicht, möchte ich, dass er sich in Aufwärts- und Vorwärtsrichtung bewegt, aber ich kann mir nicht vorstellen, wie es geht.
Ich verwende emu8086 Assembler
.model small
.data
st1 db "O",13,10,'$'
.code
main proc
mov AX,@data
mov DS,AX
mov BL,0
label1:
mov AH,2H
mov BH,0 ;goto-XY
mov DH,BL
mov DL,BL
INT 10H
mov AH,9H
mov DX,offset st1 ;print
INT 21H
mov AH, 6H
mov AL, 0
mov BH, 7 ;clear screen
mov CX, 0
mov DL, 79
mov DH, 24
int 10H
ADD BL,1
cmp DH,23 ;conditional jump
jz label2
loop label1
label2:
; mov AH,2H
; mov BH,0 ;goto-XY
; mov DH,BL
; mov DL,BL
; INT 10H
mov AH,9H
mov DX,offset st1 ;print
INT 21H
mov AH, 6H
mov AL, 0
mov BH, 7 ;clear screen
mov CX, 0
mov DL, 79
mov DH, 24
int 10H
SUB BL,1
loop label2
mov AH,4CH
INT 21H
end main
Am Ende jeder Iteration der ersten Schleife, bin ich zu überprüfen, ob ‚DH‘ = 23, da der untere Grenzwert y-Achse das LCD-Display 23. Wenn niedriger ist Limit des Bildschirms ist erreicht, sollte es zu 'Label2' springen, aber es springt nicht auf 'Label2', die offensichtlich ist, weil ich 'Cmp' Anweisung nicht korrekt verwenden. Kann mir jemand helfen, dieses Problem zu lösen?
Hauptsache, ich möchte Hilfe mit, welche Bedingung sollte ich einchecken "label1" zu "label2" zu springen.
PS. Nur ein Anfänger in der Assemblersprache, also wenn Sie eine Lösung vorschlagen, bitte halten Sie es einfach und leicht zu verstehen. Hier ist, was ich bisher versucht habe.
Welche Version der Assembly verwenden Sie? –
Ich bin mir nicht sicher, was Sie mit der Version der Baugruppe meinen. Kannst du es ausarbeiten? – Yousaf
Abhängig von Ihrer Architektur gibt es viele verschiedene Versionen der Assemblersprache. Einer der beliebtesten Assembler in Nasm. –