汇编和emu8086相当新,我试图让ASCII字符(星号*)从某个点开始在不同方向上移动屏幕。
我可以让星号向右移动(请参阅代码段),但是如何让它向左移动?上,下?
count = 0
for i in unique_digits:
if count.has_key(i):
count[i] += 1
else:
count[i] = count + 1
此外,我一直在尝试在输出后立即删除*,因此看起来它正在移动,但正如您从注释部分中看到的那样,它无法正常工作。我该怎么办?
答案 0 :(得分:1)
此外,我一直在尝试在输出后立即删除*,因此看起来它正在移动,但正如您从评论部分中看到的那样,它无效。
;mov dl, 20h ;space ;int 21h ;mov dl, 08h ;int 21h
如果你先输出退格(8)然后输出空格(32),这就接近成功。
mov dl, 08h
int 21h
mov dl, 20h ;space
int 21h
我试图让ASCII字符(星号*)从某个点开始在不同的方向上移动屏幕。
执行这些操作的程序遵循以下步骤:
此示例从左向右移回:
Top:
mov dh, Row
mov dl, Column
mov bh, 0
mov ah, 02h ;SetCursor
int 10h
mov cx, 1
mov bh, 0
mov al, "*"
mov ah, 0Ah ;DrawCharacter
int 10h
mov dx, 0 ;Approximately 1/8 second
mov cx, 2
mov ah, 86h ;Delay
int 15h
mov cx, 1
mov bh, 0
mov al, " "
mov ah, 0Ah ;DrawCharacter
int 10h
mov al, Sense ;Is +1 to go right, is -1 to go left
test al, al
js GoLeft
GoRight:
inc Column
cmp Column, 80
jb Top
mov Column, 78
neg Sense
jmp Top
GoLeft:
dec Column
jns Top
mov Column, 1
neg Sense
jmp Top
Column db 20
Row db 12
Sense db -1
这应该可以让您了解如何解决问题。