📄 pcad1.asm
字号:
; FILENAME: PCAD1.ASM
; 内容: A/D转换
PAGE 60, 78
CRLF MACRO ;回车换行宏定义
MOV DL,0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H
ENDM
DATA SEGMENT
INR DB ?
RESULT DB ?
DATA ENDS
STACK SEGMENT STACK 'STACK'
DB 50 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL, 0AH
MOV AH, 35H
INT 21H ;取IRQ2中断服务程序入口地址放ES:BX
PUSH ES ;保护ES,BX,DS
PUSH BX
PUSH DS
MOV AX,SEG ADINT ;填写中断向量表(N=0AH)
MOV DS, AX
MOV DX,OFFSET ADINT
MOV AL, 0AH
MOV AH, 25H
INT 21H
POP DS ;恢复DS
IN AL,21H
MOV BP,AX ;保护中断屏蔽寄存器内容于BP中
AND AL,11111011B
OUT 21H,AL ;允许IRQ2中断
MOV CX, 300H
MOV DX, 203H ;8253初始化,0通道方式3
MOV AL, 36H
OUT DX, AL
MOV DX, 200H
MOV AL, 10H ;初值0010H
OUT DX, AL
MOV AL, 00H
OUT DX, AL
CCC : STI
MOV DX, 220H
OUT DX,AL ;启动一次A/D转换
HLT
CLI ;关中断
MOV AX,SI ;取A/D转换结果
PUSH DS
MOV BX,6000H ;写入6000H:0~2FFH区域
MOV DS, BX
MOV BX, CX
DEC BX
MOV [BX], AL
AND AL,0F0H ;高位十六进制转ASCII码
PUSH CX
MOV CL, 04H
SHR AL ,CL
POP CX
ADD AL, 30H
CMP AL, 39H
JBE AS1
ADD AL, 07H
AS1: MOV DL,AL ;显示高位
MOV AH, 02H
INT 21H
MOV AL, [BX]
AND AL, 0FH
ADD AL, 30H
CMP AL, 39H
JBE AS2
ADD AL, 07H
AS2: MOV DL, AL ;显示低位
MOV AH, 02H
INT 21H
MOV DL,20H ;显示两个空格
MOV AH, 02H
INT 21H
INT 21H
POP DS
LOOP CCC
POP DX ;恢复IRQ2中断向量
POP DS
MOV AL, 0AH
MOV AH, 25H
INT 21H
MOV AX,BP ;恢复中断屏蔽寄存器内容
OUT 21H,AL
MOV AX, 4C00H ;结束
INT 21H
ADINT PROC NEAR ;中断服务程序
PUSH AX ;保护AX
PUSH DX ;保护DX
MOV DX,220H ;读A/D转换结果
IN AL ,DX
MOV SI,AX ;送SI
MOV AL, 20H
OUT 20H,AL ;发中断结束命令
POP DX
POP AX ;恢复
IRET
ADINT ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -