📄 键盘驱动.txt
字号:
; #########################################################################
.386
.model flat, stdcall
option casemap :none
; #########################################################################
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\masm32.lib
; #########################################################################
SetTimer proto :DWORD,:DWORD,:DWORD,:DWORD ;创建定时器函数声明
.const
IDC_EDIT equ 100
ID_TIMER equ 1
.data
dlgname db "MyDialog",0
row db 0
col db 0
show db " ",0
.data?
hInstance HINSTANCE ?
.code
WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD
.if uMsg == WM_INITDIALOG
mov al,81h
mov DX,213h
OUT DX,al
invoke SetDlgItemText,hWin,IDC_EDIT,ADDR show
.elseif uMsg == WM_COMMAND
.if wParam == 1000 ;"开始接收"
invoke SetTimer,hWin,ID_TIMER,1,NULL
.elseif wParam==1001 ; "暂停"
invoke KillTimer,hWin,ID_TIMER
.elseif wParam==1002 ; "清除"
mov show," "
invoke SetDlgItemText,hWin,IDC_EDIT,ADDR show
.elseif wParam==1003 ;"退出"
invoke EndDialog,hWin,0
.endif
.elseif uMsg == WM_CLOSE
invoke EndDialog,hWin,0
.elseif uMsg==WM_TIMER
mov DX,210h
mov AL,0
OUT DX,al
mov DX,212h
IN al,DX
mov row,al
and al,7
cmp al,7
jz undo
mov col,0feh
lop:
mov al,col
mov DX,0210h
OUT DX,al
mov DX,0212h
IN al,DX
cmp al,row
jz next
ROL col,1
jmp lop
next:
XOR col,0ffh
and row,7
XOR row,7
mov show,0
mov al,row
mov row,1
turn1: cmp al,1
jz marka
ror al,1
inc row
jmp turn1
marka:
mov al,8
dec row
mul row
mov show,al
mov al,col
mov col,1
turn:cmp al,1
jz markb
ror al,1
inc col
JMP turn
markb: mov al,col
dec al
add show,al
cmp show,10
jb shu
add show,7
shu: add show,30h
invoke SetDlgItemText,hWin,IDC_EDIT,ADDR show
undo:
.endif
xor eax, eax
ret
WndProc endp
;########################################################################
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0
invoke ExitProcess,eax
end start
; #########################################################################
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -