📄 mouse.asm
字号:
data segment
mousex dw ?
mousey dw ?
data ends
code segment
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
CALL MOUSE
mouse proc near
;保存现场
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AX,00H ;初始化鼠标
INT 33H
CMP AX,0FFFFH ;当AX不为FFFF时初始化失败结束
JNZ END_PR
;读取鼠标位置
lp1: MOV AH,03H ;读取鼠标位置
INT 33H
CMP BX,1
JE DONE
CMP CX,MOUSEX
JNE LP2
CMP DX,mousey
JE LP1
LP2: MOV MOUSEX,CX
MOV MOUSEY,DX
MOV AX,01H
INT 33H
JMP LP1
DONE:
MOV BX,CX
MOV CL,03H
SHR BX,CL
SHR DX,CL
MOV CX,BX
mov bh,0
mov dh,cl
mov AH,02h
INT 10H
MOV AH,03H
INT 10H
;恢复现场
POP DX
POP CX
POP BX
POP AX
ret
end_pr: MOV AX,4C00H
INT 21H ;返回DOS
mouse endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -