Я создал очень короткий и простой код с двумя процессами, которые должны получить координаты от щелчка мыши, а затем распечатать цвет в этом пикселе точных координат.
Я не могу найтигде проблема;он печатает 0 независимо от того, где находится щелчок на экране.
CODESEG:
;---------------------------------------------------------
proc printpixel
mov cx,8d ; x coordinates
mov dx,8d; y coordinates
mov al,4 ;color that is supposed to be printed at the end
;print pixel:
mov bh,0h
mov ah,0ch
int 10h
ret
endp printpixel
;---------------------------------------------------------
PROC LeftButtonClick
mov ax, 0000h ; reset mouse
int 33h
cmp ax,0FFFFh
jne NoMouse
mov ax, 0001h ; show mouse
int 33h
MouseLP: ; till cx= x of click & dx= y
mov ax, 0003h ; get mouse position and buttonstatus
int 33h
cmp bx, 1 ; check left mouse click
jne MouseLP ; Loop until mouse click
call findcolor
NoMouse:
ret
ENDP LeftButtonClick
;---------------------------------------------------------
proc findcolor
xor bh,bh
mov ah,0dh
int 10h ;al=pixel number colour
mov dl,al
add dl,'0'
mov ah,02h
int 21h
ret
endp findcolor
start:
mov ax, @data
mov ds, ax
; Graphic mode
mov ax, 13h
int 10h
call printpixel
call LeftButtonClick
; Wait for key press
mov ah,00h
int 16h
; Return to text mode
mov ah, 0
mov al, 2
int 10h
exit:
mov ax, 4c00h
int 21h
END start
Предполагается, что отпечаток будет 4 (номер цвета с самого начала), но он продолжает печатать 0 ... почему?что не так в коде?