Не удается перевести координаты x, y от щелчка мыши до цвета пикселя в сборке - PullRequest
0 голосов
/ 21 апреля 2019

Я создал очень короткий и простой код с двумя процессами, которые должны получить координаты от щелчка мыши, а затем распечатать цвет в этом пикселе точных координат.

Я не могу найтигде проблема;он печатает 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 ... почему?что не так в коде?

...