con8279 equ 0492h
dat8279 equ 0490h
assume cs:code
code segment public
org 100h
start: jmp start1
segcod db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
start1: mov dx,con8279
mov al,10h
out dx,al ;编码扫描键盘,双键锁定
mov al,2ah ;10分频得到100KHz
out dx,al
call black
rkey: mov dx,con8279
disla2: in ax,dx ;读入状态字
and ax,07h
jz disla2 ;没有按键则等待!
mov dx,dat8279
in ax,dx ;读入键值
and ax,0ffh
mov bx,ax
nop ;设断点观察键值
call black ;总清显示RAM
nop
disp:mov di,offset segcod
<?xml:namespace prefix="o" ns="urn:schemas-microsoft-com:office:office"> </?xml:namespace>
mov ax,08h ;工作方式,16位,左入
mov dx,con8279
out dx,ax
mov ax,90h
mov dx,con8279
out dx,ax ;写显示RAM命令,地址自增
mov dx,dat8279
push bx
and bx,<?xml:namespace prefix="st1" ns="urn:schemas-microsoft-com:office:smarttags">0f0h</?xml:namespace>
mov cl,4
shr bx,cl
add di,bx
mov al,cs:[di]
mov ah,0
out dx,ax ;写RAM0
nop
nop
mov di,offset segcod
pop bx
and bx,0fh
add di,bx
mov al,cs:[di]
mov ah,0
out dx,ax ;写RAM1
nop
nop
push cx
jmp rkey
black: mov dx,con8279
mov ax,0d1h
out dx,ax ;显示RAM全部清零
mov cx,80h ;循环次数
clsb: nop
nop
loop clsb
ret
code ends
end start