⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pckey.asm

📁 汇编终结....此程序讲述了在软件开发的底层,如何通过汇编来开发高效的驱动程序
💻 ASM
字号:
pa55    equ 218h		;A口地址
pb55    equ 219h		;B口地址
p55ctl  equ 21bh		;控制口地址
; 
data 	segment
table 	dw 0101h,0102h,0104h,0108h,0110h,0120h,0140h,0180h
       	dw 0201h,0202h,0204h,0208h,0210h,0220h,0240h,0280h
	dw 0401h,0402h,0404h,0408h,0410h,0420h,0440h,0480h
char  	db 'CDEFBA9845673210    RPMG'
mes 	db 'PLAY ANY KEY IN THE SMALL KEYBOARD! ',0ah,0dh
       	db 'IT WILL BE ON THE SCREEN! END WITH R',0ah,0dh,'$'
data 	ends
; 
code 	segment
main 	proc far
	assume cs:code,ds:data
start:	mov ax,data
	mov ds,ax
	mov dx,offset mes
	mov ah,09
	int 21h
ky:  	call key		;调键盘子程序,在(dl)中,并显示 
       	cmp dl,'R'              
	jnz ky	  
	mov ax,4c00h            ;'R' 返回dos
	int 21h
       	ret
main 	endp
;  
key 	proc near
kst:	mov al,82h		;设8255命令字
	mov dx,p55ctl		;A口输出,B口输入
	out dx,al		
wait1:  mov al,00
	mov dx,pa55
	out dx,al               ;A口输出00
	mov dx,pb55
	in al,dx                ;读入列值
	cmp al,0ffh
	jz wait1                ;无键等待
      	push ax                 ;存列值
	push ax
	mov cx,1000h            ;延时
dly:    loop dly
	mov dx,p55ctl
	mov al,90h              ;设8255命令字
	out dx,al               ;A口输入,B口输出
	mov dx,pb55
	pop ax
	out dx,al               ;B口输出列值
	mov dx,pa55
	in al,dx                ;A口读入行值(AL)
	pop bx			;取列值
	mov ah,bl               ;(AH) 为列值
        not ax			;键值取反
	mov si,offset table	;指向键值表
	mov di,offset char	;指向字符表
	mov cx,24
tt:	cmp ax,[si]             ;cmp (列值,行值)
	jz nn                   ;找到,转移
	dec cx
	jz kst			;CX=0,转移
      	add si,2		;修改指针
	inc di
	jmp tt			;继续
nn:	mov dl,[di]		;从字符表取字符
	mov ah,02		;显示
	int 21h
	push dx
      	mov al,82h		;设8255命令字
	mov dx,p55ctl		;A口输出,B口输入
	out dx,al                                         
wait2:  mov al,00
	mov dx,pa55
	out dx,al               ;A口输出00
	mov dx,pb55
	in al,dx                ;读入列值
	cmp al,0ffh
	jnz wait2               ;等待键释放
	pop dx
	ret 
key 	endp	 
code 	ends
end 	start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -