我正在玩程序集,在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进行相同的操作。然后,该程序应退出。但是,当我执行该程序时,它只等待一次鼠标单击。
我需要怎么做才能解决此问题?
提前致谢

最佳答案

我相信这样做(附评论)。
(代码未经测试)

基本上,现在有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)

10-07 16:34
查看更多