我想用匯編語言編寫一個程序,其中我想在屏幕上移動文本或字符,就像屏幕保護程序一樣,即首先它應該向前或向下移動方向。當它達到屏幕的下限時,它應該開始向前和向上的方向移動,反之亦然。以彙編語言移動文本程序
我已經嘗試過自己,我已經能夠同時向前和向下的方向移動角色。當角色達到屏幕下限時,我希望它向上和向前移動,但我似乎無法想象如何去做。
我使用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
在第一循環的每次迭代結束時,我檢查如果「DH」 = 23,因爲我的屏幕的y軸的下限是23。如果下屏幕的限制已達到,它應該跳轉到'label2',但它不會跳轉到'label2',這顯然是因爲我沒有正確使用'cmp'語句。 任何人都可以幫我解決這個問題嗎?
我想幫忙的主要事情是我應該檢查'label1'以跳到'label2'。
PS。只是彙編語言的初學者,所以如果您提出解決方案,請保持簡單易懂。 這是我到目前爲止嘗試過的。
什麼版本的組件您使用的是? –
我不確定你的裝配版本是什麼意思。你能詳細說明嗎? – Yousaf
根據您的架構,有許多不同版本的彙編語言。 nasm中最受歡迎的彙編程序之一。 –