Assembly 汇编8086鼠标第二次输入问题
我正在做去学校的计划。我的项目是一个计算器,其中包括一些基本动作。我画了一个位图,并将其加载到屏幕上,一旦我要求输入,一切正常。在第二次我要求输入时,什么也没有发生 我附上相关程序 多谢各位Assembly 汇编8086鼠标第二次输入问题,assembly,input,mouse,x86-16,Assembly,Input,Mouse,X86 16,我正在做去学校的计划。我的项目是一个计算器,其中包括一些基本动作。我画了一个位图,并将其加载到屏幕上,一旦我要求输入,一切正常。在第二次我要求输入时,什么也没有发生 我附上相关程序 多谢各位 `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
`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`
您提供的代码没有包含太多关于您可能遇到的问题的内容。
以下是一些观察结果: ActiveMouse过程还应该保留
BX
,因为AX
=0调用会返回其中的按钮计数
你为什么不把这个除法简化2
shr cx, 1
mov [XCoordinate], cx
这些
BX
操作没有任何用处BX
由AX
=3调用返回,但不是其输入参数之一
确保GetClick过程可以访问
DS
段。如果需要,在以下位置使用段替代前缀:
mov [cs:YCoordinate], dx
mov [cs:XCoordinate], cx
shr cx, 1
mov [XCoordinate], cx
ror bx,1
LeftClickStatus:
rol bx,1
mov [cs:YCoordinate], dx
mov [cs:XCoordinate], cx