[Asm] Программа регистрации движения мыши

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Dober'man, 2 Jul 2008.

  1. Dober'man

    Dober'man Banned

    Joined:
    16 Jul 2007
    Messages:
    70
    Likes Received:
    94
    Reputations:
    -8
    Начитался я про трои, вирусы, черви, которые срабатывают на элементарное наведение указателя мыши на ярлык exe'шника и решил родить программу, которая выполняет отслеживание перемещения текстового указателя мыши.
    Вдобавок добавил в код (ну это уже наверное лишнее, но убрать то можно =) ) визуальное отображение, в правом нижнем углу экрана, горизонтальных и вертикальных ( X и Y ) координат перемещения указателя, и еще немного API. При нажатии левой кнопки мыши её координаты фиксируются в левом нижнем углу экрана (эт всё WinAPI).

    Исходник:
    Code:
    TITLE Программа регистрации движения мыши (mouse.asm)
    
    INCLUDE Irvine16.inc
    
    .data
    ESCkey = 1Bh
    GreetingMsg BYTE "Для выхода нажмите <Esc>",0dh,0ah,0
    StatusLine BYTE "Левая кнопка:
    "
               BYTE "Положение мыши: ",0
    blanks BYTE "      ",0
    Xcoordinate WORD 0
    Ycoordinate WORD 0
    Xclick WORD 0
    Yclick WORD 0
    
    .code
    main PROC
    
    mov ax,@data
    mov ds,ax
    call HideCursor
    mov dx,OFFSET GreetingMsg
    call WriteString
    call ShowMousePointer
    mov dh,24
    mov dl,0
    call GotoXY
    mov dx,OFFSET StatusLine
    call Writestring
    
    L1:
    call ShowMousePPosition
    call LeftButtonClick
    mov ah,11h
    int 16h
    jz L2
    mov ah,10h
    int 16h
    cmp al,,ESCkey
    je quit
    
    L2:
    jmp L1
    
    quit:
    call HideMousePointer
    call ShowCursor
    call ClrScr
    call WaitMsg
    exit
    main ENDP
    
    GetMousePosition PROC
    
    push ax
    mov ax,3
    int 33h
    pop ax
    ret
    GetMousePosition ENDP
    
    HideCursor proc
    
    mov ah,3
    int 10h
    or ch,30h
    mov ah,1
    int 10h
    ret
    
    HideCursor ENDP
    
    ShowCursor PROC
    
    mov ah,3
    int 10h
    mov ah,1
    mov cx,0607h
    int 10h
    ret
    
    ShowCursor ENDP
    
    
    HideMousePointer PROC
    
    push ax
    mov ax,2
    int 33h
    pop ax
    ret
    
    HideMousePointer ENDP
    
    ShowMousePointer PROC
    
    push ax
    mov ax,1
    int 33h
    pop ax
    ret
    
    ShowMousePointer ENDP
    
    LeftButtonClick PROC	
    
    pusha
    mov ax,5
    
    mov bx,0
    int 33h
    cmp cx,Xclick
    jne LBC1
    cmp dx,Yclick
    je LBC_exit
    LBC1:
    mov Xclick,cx
    mov Yclick,dx
    
    
    mov dh, 24
    mov dl,15
    call GotoXY
    
    push dx
    mov dx,OFFSET blanks
    call WriteString
    pop dx
    
    
    call GotoXY
    mov ax,Xcoordinate
    call WriteDec
    mov dl,20
    call GotoXY
    mov ax,Ycoordinate
    call WriteDec
    LBC_exit:
    popa
    ret
    
    LeftButtonClick ENDP
    
    SetMousePosition PROC
    
    mov ax,4
    int 33h
    ret 
    
    SetMousePosition ENDP
    
    ShowMousePosition PROC 
    
    pusha
    call GetMousePosition
    cmp cx,Xcoordinate
    jne SMP1
    cmp dx, Ycootdinate
    je SMP_exit
    SMP1:
    mov Xcoordinate,cx
    mov Ycoordinate,dx
    
    mov dh,24
    mov dl,60
    call GotoXY
    
    push dx
    mov dx,OFFSET blanks
    call WriteString
    pop dx
    
    call GotoXY
    mov ax,Xcoordinate
    call WriteDec
    
    mov dl,65
    call GotoXY
    mov ax,Ycoordinate
    call WriteDec
    
    SMP_exit:
    popa
    ret
    
    ShowMousePosition ENDP
    
    END main
    
    Делал асм. вставки в Delphi - все фурычит =)
    p.s.: исходник карявить не стал, но и exe не выложил
     
    4 people like this.
  2. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Цель? Какова цель...?
     
  3. Dober'man

    Dober'man Banned

    Joined:
    16 Jul 2007
    Messages:
    70
    Likes Received:
    94
    Reputations:
    -8
    Блин малоли...
    Может кому понравится, пригодится, для лабораторки, контрольной и т.д. и т.п.
    Это же не калькулятор...
     
  4. Exile1985

    Exile1985 Elder - Старейшина

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1

    сурьезная болезнь.....
     
  5. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    в программы от скуки засунь