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

📄 keyboard.asm

📁 汇编语言实现的控制小键盘的小程序
💻 ASM
字号:
ioport equ 5400h-280h
DATA SEGMENT
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
      DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATA ENDS
STACK SEGMENT STACK
      DW 50 DUP(0)
STACK ENDS
CODE SEGMENT
      ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
      MOV DS,AX

      MOV DX,ioport+2B1H			;控制端口地址
      MOV AL,00000000B		;键盘显示方式命令字  左进显示16个字符
      OUT DX,AL
      MOV AL,00101010B		;分频基频为100KHz
      OUT DX,AL
      MOV AL,11010011B		;清除命令
      OUT DX,AL
      MOV AL,10010000B		;写显示RAM,地址自动加1
      OUT DX,AL
;PRES:     MOV DX,ioport+2B1H
      ;MOV AL,10010000B		;写显示RAM,地址自动加1
      ;OUT DX,AL
      MOV CX,6
O:    MOV DX,ioport+2B1H
      IN AL,DX
      TEST AL,1H
      JE O				;检测是否有键值输入
      MOV DX,ioport+2B0H			;数据端口地址
      IN AL,DX				;把键值送入AL
      MOV BL,AL
      AND AL,38H			;得到hang号
      ;MOV ,3
      SHR AL,1			    ;得到行号
      SHR AL,1
      SHR AL,1
      CMP AL,1
      JNE NZ				;不是第一行,跳转NZ,判断是否为第零列
      MOV AL,BL
      AND AL,07H			;得到具体键值
      XOR AH,AH                         ;清0
      MOV DX,ioport+2B0H                      ; ;数据端口
      MOV BX,OFFSET TABLE
      XLAT					;显示
      OUT DX,AL		    ;循环显示6次
      LOOP O				;继续检测键值
  NZ: CMP AL,0				;检查是否为第零列
      JNE ISP				;不是第零列也不是第一行,跳转ISP
      MOV AL,BL
      AND AL,07H			;得到具体键值
      XOR AH,AH
      ADD AX,08H			;把第一列键值加8,变成第二行键值
      MOV DX,ioport+2B0H
      MOV BX,OFFSET TABLE
      XLAT					;显示
      OUT DX,AL		    ;循环显示6次
      LOOP O				;等待键盘输入
   ISP: MOV AL,BL
      AND AL,07H			;判断是0-7列中的哪一列
      CMP AL,02H			;比较是否为第二行
      JNE O				;输入为第二行,则继续检测键值
      MOV AH,4CH
      INT 21H
CODE  ENDS
      END START

⌨️ 快捷键说明

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