组件获取鼠标位置(TASM)

时间:2018-12-03 15:00:30

标签: assembly x86-16 tasm mouse-position mouse-pointer

我的程序无法正确获取鼠标位置。 我尝试了两种情况,第一种: -没有鼠标重置 -代码:

WAIT_FOR_CLICK:
    ; CHECK IF THE MOUSE IS CLICKED
    MOV AX,3H
    MOV BX, 0
    INT 33H
    CMP BX, 0
JZ WAIT_FOR_CLICK
; DISPLAY CLICK POSITION
MOV AL, 5
MOV AH, 0CH
INT 10H

无论我在哪里单击,这种情况下总是产生相同的坐标。

第二种情况,使用鼠标重置:

; RESET THE MOUSE
MOV AX, 0
INT 33H
; SHOW THE MOUSE POINTER
MOV AX, 1
INT 33H

WAIT_FOR_CLICK:
    ; CHECK IF THE MOUSE IS CLICKED
    MOV AX,3H
    MOV BX, 0
    INT 33H
    CMP BX, 0
JZ WAIT_FOR_CLICK
MOV AL, 5
MOV AH, 0CH
INT 10H

在这种情况下,鼠标位置会有所不同。它根本不准确(可能是因为我使用的是800x600分辨率的超级VGA视频模式),但我认为可以通过一定的缩放比例来解决。问题是,每当我单击鼠标时,指针就会消失并且不会记录鼠标单击。但是,记录第二次单击。无论执行什么操作,鼠标指针都保持隐藏状态(我在代码中的任何地方都将INT 33H,1的调用置为1,单击仍将其隐藏)。 我正在使用Turbo GUI汇编程序,请帮忙吗?

p.s我尝试使用dosbox而不是在GUI汇编器中运行可执行文件,结果相同。我还尝试了其他不同的汇编器。

0 个答案:

没有答案