📄 08a.asm
字号:
DATA SEGMENT
ioport equ 0c000h-280h ;实验箱驱动默认中断地址为C000H,此处设置偏移量
ioport1 equ ioport+280h
ioport2 equ ioport+281h
ioport3 equ ioport+283h
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
SUB AX,AX
PUSH AX
;==============================
MOV AX,DATA
MOV DS,AX
FORMAT: MOV DX,ioport3 ;写控制字,寄存器0,只读写低8位,工作方式0,二进制计数
MOV AL,00010000B
OUT DX,AL
MOV DX,ioport1 ;设置初始计数值,F
MOV AL,0FH
OUT DX,AL
CONTROL:MOV DX,ioport3 ;写控制字使其所存以便读当前计数值
MOV AL,00000000B
OUT DX,AL
MOV DX,ioport1 ;读当前计数值
IN AL,DX
CMP BL,AL ;判断是否与上次读入的计数值相同,即是否给了一个新的时钟脉冲,如果没有,则跳过显示程序
JE NEXT
MOV BL,AL
CALL HEX2ASCII ;调用16进制转ASCII码子程序
CALL DISPLAY ;调用显示子程序
NEXT: MOV AH,0BH ;判断是否有健按下,如有则退出,否则循环
INT 21H
CMP AL,00H
JNE EXIT
JMP CONTROL
EXIT: MOV AH,4CH
INT 21H
;==============================
RET
START ENDP
HEX2ASCII PROC NEAR
;16进制转ASCII码子程序
CLC
DAA
ADD AL,0F0H
ADC AL,40H
RET
HEX2ASCII ENDP
DISPLAY PROC NEAR
;数据显示子程序
PUSH DX
MOV DL,AL
MOV AH,2
INT 21H
MOV DL,13
INT 21H
MOV DL,10
INT 21H
POP DX
RET
DISPLAY ENDP
CODE ENDS
END STT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -