Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编8086鼠标第二次输入问题_Assembly_Input_Mouse_X86 16 - Fatal编程技术网

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