📄 7.asm
字号:
PORT_A EQU 208H
PORT_B EQU 209H
PORT_C EQU 20AH
PORT_CW EQU 20BH
TRUE EQU 0FFH
FALSE EQU 0
EXIT_KEY EQU 10000000B ; K8
DATA SEGMENT
MESS DB 'PLEASE PRESS KEY',0DH,0AH,'$'
MESS2 DB 'END',0DH,0AH,'$'
DISP_BUF DB 0
DISP_FLAG DB 0
EXIT_FLAG DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,PORT_CW
MOV AL,89H
OUT DX,AL
LEA DX,MESS
MOV AH,09H
INT 21H
NEXT:
CALL KEY_INPUT
CALL DISP
CALL TEST_EXIT
CMP EXIT_FLAG,TRUE
JNZ NEXT
MOV DISP_BUF,0
CALL DISP
LEA DX,MESS2
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
TEST_EXIT:
MOV AL,DISP_BUF
CMP AL,20
JNZ TEST_EXIT_RET
MOV EXIT_FLAG,TRUE
TEST_EXIT_RET: RET
KEY_INPUT:
MOV DX,PORT_A
MOV AL,0
OUT DX,AL
MOV DX,PORT_C
IN AL,DX
AND AL,0FH
CMP AL,0FH
JZ KEY_INPUT_RET
INC DISP_BUF
CALL DELAY
KEY_INPUT_WAIT: MOV DX,PORT_C
IN AL,DX
AND AL,0FH
CMP AL,0FH
JNZ KEY_INPUT_WAIT
CALL DELAY
KEY_INPUT_RET: RET
DELAY:
PUSH BX
PUSH CX
MOV BX,20
NEXT2: MOV CX,0FFFFH
NEXT1: LOOP NEXT1
DEC BX
JNZ NEXT2
POP CX
POP BX
RET
DISP:
MOV AL,DISP_BUF
MOV BL,10
MOV AH,0
DIV BL
MOV CL,4
SHL AL,CL
ADD AL,AH
MOV DX,PORT_A
OUT DX,AL
RET
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -