2017-05-12 1 views
0

메신저 프로젝트에서 학교에 근무하고 있습니다. 내 프로젝트는 몇 가지 전자 동작을 포함하는 계산기입니다. 나는 BitMap을 끌어 와서 화면에로드합니다. 일단 입력을 요청하면 모든 것이 올바르게 작동합니다. 입력 아무것도 요구하는 두 번째 메신저에 감사 relevantic 절차를 부착 메신저어셈블리 8086 마우스 두 번째 입력 문제

`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` 

답변

0

당신이 당신이 가진 수있는 문제에 대한 많은을 포함하지 않는 제공하는 코드를 alot을 발생합니다.
다음은 그러나 일부 관측과 같습니다 AX = 0 호출이 그 안에 버튼 수를 반환으로

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을 유지해야한다.


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

왜 2로이 부문을 단순화하지 ???


ror bx,1 
LeftClickStatus: 
rol bx,1 

BX 조작 유용한 아무것도하지

shr cx, 1 
mov [XCoordinate], cx 
. BXAX = 3 호출에 의해 반환되지만 입력 매개 변수 중 하나가 아닙니다.

GetClick 절차는 DS 세그먼트에 대한 액세스 권한이 있는지 확인합니다. 필요한 경우 세그먼트 오버라이드 프리픽스를 사용 :

mov [cs:YCoordinate], dx 
mov [cs:XCoordinate], cx 
관련 문제