📄 8254.asm
字号:
PC8254_COUNT0 EQU 1440H ;计数器0的I/O地址
PC8254_COUNT1 EQU 1441H ;计数器1的I/O地址
PC8254_COUNT2 EQU 1442H ;计数器2的I/O地址
PC8254_MODE EQU 1443H ;计数器控制器的I/O地址
DATA SEGMENT
OBUF DB 8 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
CDB MACRO ;将二进制转换成十进制的宏
LOCAL LOOP1
MOV BX,OFFSET OBUF+7
MOV BYTE PTR[BX],'$'
DEC BX
MOV BYTE PTR[BX],10
DEC BX
MOV BYTE PTR[BX],13
MOV CX,10
LOOP1: MOV DX,0
DIV CX
ADD DL,30H
DEC BX
MOV [BX],DL
OR AX,AX
JNZ LOOP1
MOV DX,BX
MOV AH,09H
INT 21H
ENDM
MOV DX,PC8254_MODE ;向控制器写控制字,这里设的是计数器0、方式0、先低后高两个字节读/写
MOV AL,30H
OUT DX,AL
MOV AX,03H ;设置计数值
MOV DX,PC8254_COUNT0 ;向计数器0写计数值,先低后高两个字节写
OUT DX,AL
MOV AL,AH
OUT DX,AL
READC0: ;读计数器值,存于AX中
MOV DX,PC8254_MODE
MOV AL,0
OUT DX,AL
MOV DX,PC8254_COUNT0
IN AL,DX
MOV AH,AL
IN AL,DX
XCHG AL,AH
CDB ;将计数值显示出来
MOV CX,0FFFFH ;延迟
LOOP2: DEC CX
CMP CX,0
JNE LOOP2
MOV AH,06H ;是否有键盘输入,有则退出
MOV DL,0FFH
INT 21H
JE READC0
MOV AH,4CH
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -