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

📄 sy3-3.asm

📁 硬件电路测试参考数据包
💻 ASM
字号:
;      实验三:键盘实验

;       SY3-3.ASM

PA55    EQU     280H
PB55    EQU     281H
PC55    EQU     282H
P55CTL  EQU     283H

DATE    SEGMENT
R2      DB      ?
R4      DB      ?
TABLE   DB      0EEH,0DEH,0BEH,07EH,0EDH,0DDH,0BDH,07DH
	DB      0EBH,0DBH,0BBH,07BH,0E7H,0D7H,0B7H,077H
MES     DB      'Press any key on the small keyboard!',0DH,0AH
	DB      'It will be display on the LED !',0DH,0AH
	DB      'Press any key quit to DOS !',0dh,0ah,'$'
DCTBL   DB      3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h
KEYC    DB      ?
KEYR    DB      ?
KEYLS   DB      ?
NUM     DW      ?
DATE    ENDS

STAC    SEGMENT
STA     DW      32 DUP(?)
TOP     EQU     LENGTH STA
STAC    ENDS

CODE    SEGMENT
MAIN    PROC FAR
ASSUME  CS:CODE,DS:DATE,SS:STAC
START:  MOV     AX,DATE
	MOV     DS,AX
	MOV     DX,OFFSET MES
	MOV     AH,09
	INT     21H

LOP1:   CALL    TESTKEY
	CALL    DISP
	MOV     DL,0FFH
	MOV     AH,06H
	INT     21H
	JZ      LOP1
	MOV     AX,4C00H
	INT     21H
	RET
MAIN    ENDP

TESTKEY PROC NEAR
KEY0:   MOV     AL,93H
	MOV     DX,P55CTL
	OUT     DX,AL
WAIT1:  MOV     AL,00
	MOV     DX,PC55
	OUT     DX,AL
	MOV     DX,PC55
	IN      AL,DX
	AND     AL,0F0H
	CMP     AL,0F0H
	JE      WAIT1
	CALL    DELAY1
	MOV     DX,PC55
	IN      AL,DX
	MOV     KEYC,AL
	AND     AL,0F0H
	CMP     AL,0F0H
	JE      WAIT1

KEY1:   MOV     AL,9aH
	MOV     DX,P55CTL
	OUT     DX,AL
WAIT2:  MOV     AL,00
	MOV     DX,PC55
	OUT     DX,AL
	MOV     DX,PC55
	IN      AL,DX
	AND     AL,0FH
	CMP     AL,0FH
	JE      WAIT2
	CALL    DELAY1
	MOV     DX,PC55
	IN      AL,DX
	MOV     KEYR,AL
	AND     AL,0FH
	CMP     AL,0FH
	JE      WAIT2

KEY3:   MOV     AL,KEYC
	OR      AL,KEYR
	MOV     KEYLS,AL
	MOV     SI,OFFSET TABLE
	MOV     CX,16
	MOV     DL,00H
KEY4:   CMP     AL,[SI]
	JZ      KEY5
	DEC     CX
	JZ      KEYEND
	ADD     SI,1
	INC     DL
	JMP     KEY4
KEY5:   NOP
	MOV     AL,DL
	MOV     CL,04H
	SHL     AL,CL
	OR      AL,DL
	MOV     AH,00H
	MOV     NUM,AX
KEYEND: NOP
	RET
TESTKEY ENDP

DISP    PROC    NEAR
	PUSH    DS
	PUSH    CX
	PUSH    AX

DISP0:  MOV     CX,NUM
	MOV     AX,CX
	AND     AL,0FH
	MOV     AH,AL
	MOV     AL,CL
	MOV     CL,04H
	SHR     AL,CL
	MOV     CH,AL
	MOV     CL,AH

DISPL:  mov     dx,288h
	mov     al,02h
	out     dx,al
	mov     dx,284h
	mov     al,cl
	mov     ah,0
	lea     bx,dctbl
	mov     si,ax
	mov     al,[bx+si]
	out     dx,al
	CALL    DELAY1
DISPH:  mov     dx,288h
	mov     al,01h
	out     dx,al
	mov     dx,284h
	mov     al,ch
	mov     ah,0
	lea     bx,dctbl
	mov     si,ax
	mov     al,[si+bx]
	out     dx,al
	CALL    DELAY1
	POP     AX
	POP     CX
	POP     DS
	RET
DISP    ENDP

DELAY1  PROC    NEAR
	PUSH    CX
	MOV     CX,0F00H
	LOOP    $
	POP     CX
	RET
DELAY1  ENDP
DELAY2  PROC    NEAR
	PUSH    AX
	PUSH    CX
	MOV     CX,030H
DL21:   CALL    DELAY1
	LOOP    DL21
	POP     CX
	POP     AX
	RET
DELAY2  ENDP
CODE    ENDS
	END     START

⌨️ 快捷键说明

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