アセンブリ言語で、スクリーンセーバーのように画面上のテキストまたは文字を移動したいプログラムを作成しようとしています。つまり、最初は前方および後方に移動する必要があります方向。画面の下限に達すると、それは前方向および上方向に動き始め、逆もまた同様である。アセンブリ言語でテキストプログラムを移動する
私は自分自身を試してみましたが、同時にキャラクターを上下に動かすことができました。キャラクターが画面の下限に当たったら、それを上向きと前向きに移動したいが、それをどうやって行うかわからない。
Iは最初のループの各反復の終わりemu8086アセンブラ
.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
を使用しています私の画面のy軸の下限が23であれば低い「DH」= 23であるのであれば、私は確認してい限界に達すると、それは 'label2'にジャンプするはずですが、 'cmp'文を正しく使用していないため明らかに 'label2'にジャンプしません。 誰でもこの問題を解決する手助けはできますか?
私が助けたい主なものは、 'label1'をチェックして 'label2'にジャンプする必要があります。
PS。初心者だけのアセンブリ言語ですので、解決策を提案したら、簡単に理解してください。 これまで私が試したことがあります。
どのバージョンを使用していますか? –
アセンブリのバージョンがどういう意味かわかりません。あなたは精緻化できますか? – Yousaf
アーキテクチャに応じて、さまざまなバージョンのアセンブリ言語があります。 nasmのより一般的なアセンブラの1つ。 –