组件 8086 鼠标第二个输入问题



im 正在为学校做项目。我的项目是一个计算器,其中包括一些电子操作。我绘制了一个位图并将其加载到屏幕中,一旦我要求输入,一切正常。第二次我要求输入什么也没发生我附上相关程序非常感谢

`proc ActiveMouse
push ax
xor ax,ax
int 33h;starting mouse
mov ax,1
int 33h;Mouse Pointer active
pop ax
ret
endp ActiveMouse

proc getClick
push ax
push bx
push dx
push cx
ror bx,1
LeftClickStatus:
rol bx,1
mov ax,3h
int 33h;get click status
ror bx,1
jnc LeftClickStatus
mov [word ptr YCoordinate],dx;dx is max 200
mov ax,cx
mov cx,2
xor dx,dx
div cx
mov [XCoordinate],ax
pop cx
pop dx
pop bx
pop ax
ret
endp getClick`

您提供的代码不包含太多问题。
以下是一些观察结果:

proc ActiveMouse
 push ax
 xor ax,ax
 int 33h;starting mouse
 mov ax,1
 int 33h;Mouse Pointer active
 pop ax
 ret
endp ActiveMouse

ActiveMouse 过程还应保留BX,因为 AX =0 调用在其中返回按钮计数。


mov ax,cx
mov cx,2
xor dx,dx
div cx
mov [XCoordinate],ax

你为什么不把这个划分简化 2 ???

shr cx, 1
mov [XCoordinate], cx

ror bx,1
LeftClickStatus:
rol bx,1

这些BX操作不会做任何有用的事情。 BXAX =3 调用返回,但不是其输入参数之一。


确保 GetClick 过程有权访问DS段。如果需要,请在以下位置使用分段覆盖前缀:

mov [cs:YCoordinate], dx
mov [cs:XCoordinate], cx

相关内容

最新更新