12a.asm

来自「录音子程序 mov dx,offset news_2 显示放音提示」· 汇编 代码 · 共 101 行

ASM
101
字号
DATA SEGMENT

    ioport equ 0c000h-280h              ;实验箱驱动默认中断地址为C000H,此处设置偏移量
    ioport1 equ ioport+298h
    ioport2 equ ioport+299h

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

CONTROL:MOV DX,ioport1
    MOV AL,0FFH
    OUT DX,AL
    CALL DELAY1S
    IN AL,DX

    MOV AH,0
    MOV BX,0
    MOV BL,AL            ;分离AL的高4位和低4位,分离后AL中为高4位,BL中为低4位
    AND AL,0F0H
    MOV CL,4
    SHR AL,CL
    AND BL,0FH

    CALL HEX2ASCII       ;调用HEX2ASCII
    CALL DISPLAY         ;调用DISPLAY子程序
    MOV AL,BL
    CALL HEX2ASCII
    CALL DISPLAY
    MOV DL,48H
    MOV AH,2
    INT 21H
    MOV DL,20H
    INT 21H
    
;==============================
    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

    POP DX
    RET
DISPLAY ENDP

DELAY1S PROC NEAR
;8086延时1S子程序
     PUSHF
     PUSH BX
     PUSH CX

     MOV BX,3E8H
LP2: MOV CX,0BAH
LP1: PUSHF
     POPF
     LOOP LP1
     DEC BX
     JNZ LP2

     POP CX
     POP BX
     POPF
       
     RET
DELAY1S ENDP

CODE ENDS
END STT

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?