📄 8253-2.asm
字号:
;利用PC机的硬件定时8253, 编制秒表延时(0~9秒)程序.要求:
;按任意键,开始计时, 在屏幕上以1秒间隔从0到9显示;按ESC键,计时停止.
data segment
BCD1 db '0'
STR DB 0dh,0ah,'$'
data ends
STACK SEGMENT
DW 16 DUP(0)
STACK ENDS
code segment
assume cs:code,ds:data,SS:STACK
start:mov ax,data
mov ds,ax
MOV DL,BCD1
W1: MOV AH,0BH ;有键按下?
INT 21H
CMP AL,00H ;无键按下,转W1,否则,调用1S延时子程序
JZ W1
LOP: CALL SECOND
CALL DISP ;调显示
MOV AH,0BH ;检测有键按下否?
INT 21H
CMP AL,00H ;AL=0,无键按下
JZ LOP ;无键按下,转LOP
MOV AH,08H ;有键,读键值AL
INT 21H
CMP AL,1BH ;是ESC键?
JNZ LOP ;是,退出,否,转LOP
MOV ah,4ch
INT 21h
;-------------------------------
SECOND PROC NEAR ;1秒延时子程序
PUSH AX
PUSH BX
PUSH DX
MOV AH,00H
INT 1AH ;读计时单位
ADD DX,18
MOV BX,DX
L1: MOV AH,00H
INT 1AH
CMP DX,BX ;满1秒?,否,继续累计
JNZ L1
POP DX
POP BX
POP AX
RET
SECOND ENDP
;--------------------------------
DISP PROC NEAR ;入口:BCD1=DL=字符
PUSH AX
MOV DL,BCD1
MOV AH,02H ;DOS调用,显示一个字符
INT 21H
INC BCD1
CMP BCD1,'9'
JBE EXIT
MOV BCD1,'0'
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
EXIT: POP AX
RET
DISP ENDP
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -