我正在玩装配,在Windows 7上使用NASM编译.com文件。出于某种原因,这不起作用:
org 100h
run1:
mov ax, 3
int 33h
cmp bx, 0
je run1
xor bx, bx
run2:
mov ax, 3
int 33h
cmp bx, 0
je run2
int 20h
我认为这应该重复run1
,直到鼠标单击,然后对run2
执行相同操作。然后,程序应该退出。但是,当我执行程序时,它只等待一次鼠标点击。
我需要做些什么来解决这个问题?
提前致谢
答案 0 :(得分:4)
问题是鼠标按键保持按下一段时间。因此,在run1
之后,您需要等到按钮再次释放,然后您可以再次开始检查第二次点击。
答案 1 :(得分:4)
我相信这样做(带评论) (代码未经测试)
基本上,现在有3个循环
1.)等待按下按钮
2.)等待按钮被释放
3.)等待再次按下按钮。
org 100h
run1:
mov ax, 3
int 33h #Check the mouse
cmp bx, 0 #See if button is pressed
je run1 #If Not pressed, go back and check again
xor bx, bx #Okay, button is pressed, clear the result
run1a:
mov ax, 3
int 33h #Check the mouse
cmp bx, 0 #See if button is released
jne run1a #If NOT equal, then not released, go check again.
xor bx, bx #button is released, clear the result
run2:
mov ax, 3
int 33h #Check the mouse
cmp bx, 0 #if button is pressed (2nd time)
je run2 #If NOT pressed, go to top.
int 20h #Button was pressed. All done (we don't care when its released)