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

📄 08a.asm

📁 录音子程序 mov dx,offset news_2 显示放音提示
💻 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 + -