📄 ad转换-lix.asm
字号:
.MODEL SMALL
.DATA
KEEP DB ?
STR DB 6 DUP(?)
.CODE
.STACK
START:
MOV AX,@DATA
MOV DS,AX
CLI
MOV AH,35H
MOV AL,0FH ;保存IRQ7的原中断向量
INT 21H
PUSH BX
PUSH ES
PUSH DS ;保存系统原中断向量
MOV AX,SEG loop1 ;送新的中断向量
MOV DS,AX
MOV DX,OFFSET loop1 ;送IRQ7类型码0fh
MOV AH,25H
MOV AL,0FH
INT 21H
POP DS
IN AL,21H
MOV KEEP,AL
AND AL,07FH
OUT 21H,AL
MOV AH,06H
MOV AL,0
MOV BH,12
MOV CX,0
MOV DH,24
MOV DL,79
INT 10H
LOOP:
MOV DX,230H
OUT DX,AL ; 启动AD转换
MOV CX,10
NEXT:
NOP
LOOP NEXT
STI
MOV AH,01H
INT 16H
JZ LOOP
MOV AL,KEEP
OUT 21H,AL
POP DS
POP DX
MOV AH,25H
MOV AL,0FH
INT 21H
MOV AH,4CH
INT 21H
loop1:
PUSH AX
PUSH BX
PUSH DS
MOV AX,@DATA
MOV DS,AX
MOV DX,230H
IN AL,DX
MOV DX,210H ; 启动DA转换并输出数据
OUT DX,AL
MOV DX,211H
OUT DX,AL
MOV DX,0A0AH
MOV BH,0
MOV AH,02H
INT 10H
MOV AH,0
MOV BX,500
MUL BX
MOV BX,255
DIV BX
MOV BX,100
MOV DX,0
DIV BX
OR AL,30H ; 获得个位数值
MOV STR,AL ; 保存个位数值
MOV STR+1,'.'
MOV AX,DX
MOV BX,10
MOV DX,0
DIV BX
OR AL,30H ; 获得十分位数值
MOV STR+2,AL
OR DL,30H ; 获得百分位数值
MOV STR+3,DL
MOV STR+4,'$'
MOV DX,OFFSET STR
MOV AH,09H
INT 21H
MOV AL,20H
OUT 20H,AL
POP DS
POP BX
POP AX
IRET
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -