我需要一些幫助才能使用emu8086在屏幕上反射字符。 屏幕尺寸是(80x25字符)。我已經設法沿對角方向移動它,但它並沒有反彈回來。相反,它在到達邊界(即第24行)後直接沿x軸移動。這是我迄今爲止所做的。如何在程序集中反彈字符
enter code here
Data_seg segment 'data'
char db 'A'
char2 db ' '
x1 db (1)
y1 db (1)
Data_seg ends
Code_seg segment 'code'
assume CS:Code_seg,DS:Data_seg
main PROC far
mov ax,Data_seg
mov ds,ax
mov cx,40
loop1:
;gotoxy
mov ah,02
mov dl,x1
mov dh,y1
mov bh,0
int 10H
;print a
mov al,char
mov dl,al
mov ah,02H
int 21H
;gotoxy
mov ah,02
mov dl,x1
mov dh,y1
mov bh,0
int 10H
;print " "
mov dl,char2
mov ah,02H
int 21H
inc x1
inc y1
;if(x1<2)||(x1>79)
mov al,x1
cmp al,2
jl ifPart
mov al,x1
cmp al,79
jge ifPart
;if(y1<2)||(y1>79)
y11:
mov al,y1
cmp al,2
jl ifPart2
mov al,y1
cmp al,24
jge ifPart2 ;jge for boundry(24)
jmp endif
ifPart:
dec x1
jmp y11
ifPart2:
dec y1
endif:
loop loop1
Code_seg ends
end main
通過移動矢量,角色現在正在彈跳。 Theres出現輕微的問題,當它彈回時出現。它顯示了第24行最左邊一列的字符,然後彈起。 –
修正:我設法通過將「cmp al,24」更改爲「cmp al,23」來解決問題(在評論中描述)。該計劃現在正在完美運作。感謝您的幫助。 –
@MUHAMMADAHMEDVOHRA大約24/23 ..是不是與您的DOS輸出中斷的使用問題,使屏幕「滾動」時使用最後一行?考慮直接寫入VRAM(默認情況下,文本模式從B800:0000開始,除非您重新配置顯卡內部),速度會更快,並且可以完全控制VRAM內容,因此您可以打印全部256個VGA字符並使用所有可能的顏色/眨眼組合。最後一行沒有滾動(您必須通過代碼手動滾動,無論是通過移動VRAM內容,還是更改視頻內存的開始)。 – Ped7g