DATA SEGMENT
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
7FH,6FH,77H,7CH,58H,5EH,79H,71H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
E:
MOV AL,F1H
OUT 66H,AL ;控制字送入控制端口
;写行读列
ABC:MOV AL,00000000B
OUT 62H,AL
IN AL,64H
AND AL,0FH
CMP AL,0FH
JNC ABC
;去抖动
mov cx,03000h
LOOP $
;写行读列
MOV AL,00000000B
OUT 62H,AL
IN AL,64H
AND AL,0FH
CMP AL,0FH
JNC ABC
;确定列号
MOV DL,0
X2:MOV CX,4
SHR AL,1
JNC X1
INC DL
LOOP X2
X1:MOV BL,DL
MOV AL,10000010B
OUT 66H,AL ;控制字送入控制端口
;写列读行
DEF:MOV AL,00000000B
OUT 64H,AL
IN AL,62H
AND AL,0FH
CMP AL,0FH
JNC DEF
;去抖动
mov cx,03000h
LOOP $
;写行读列
MOV AL,00000000B
OUT 64H,AL
IN AL,62H
AND AL,0FH
CMP AL,0FH
JNC DEF
;确定列号
MOV DL,0
X3:MOV CX,4
SHR AL,1
JNC X4
INC DL
LOOP X3
X4:MOV AL,DL
SHL AL,1
SHL AL,1
ADD AL,BL
OUTPUT:MOV BX,OFFSET TABLE
XLAT
OUT 60H,AL
mov cx,30000h
LOOP $
JMP E
MOV AH,4CH
INT 21H
ENDLESS:
JMP ENDLESS
CODE ENDS
END START