📄 sy8-3.asm
字号:
; 实验八 D/A转换实验
; SY8-3.ASM
ADCS EQU 298H
ADPORT EQU 298H
DACS EQU 29CH
DATA SEGMENT
BUFFER1 DB 640 DUP(0)
BUFFER2 DB 640 DUP(0)
P1 DW 8FH
P2 DB 0FFH
FLAG DB 0
mess1 db 0dh,0ah,0dh,0ah
DB 'Press 1 for sawtooth wave',0DH,0AH
DB 'Press 2 for triangle wave',0DH,0AH
DB 'Press 3 for square wave',0DH,0AH
DB 'Press 4 for sin wave',0DH,0AH
DB 'Press 5 to quit DOS',0DH,0AH,'$'
db 0dh,0ah
MESS2 DB 'Please select again',0DH,0AH,'$'
db 0dh,0ah
MESS3 DB 'Press any key to quit main menu.',0DH,0AH,'$'
db 0dh,0ah
SINBUF1 DB 080H,08CH,098H,0A5H,0B0H,0BCH,0C7H,0D1H
DB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH
DB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH
DB 0D1H,0C7H,0BCH,0B0H,0A5H,098H,08CH,080H
DB 7FH, 73H, 67H, 5AH, 4FH, 43H, 38H, 2EH
DB 25H, 1DH, 15H, 0FH, 09H, 05H, 02H, 00H
DB 00H, 02H, 05H, 09H, 0FH, 15H, 1DH, 25H
DB 2EH, 38H, 43H, 4FH, 5AH, 67H, 73H, 7FH
SINBUF2 DB 128D,135D,141D,148D,155D,161D,167D,174D,180D,186D
DB 192D,198D,203D,209D,214D,219D,223D,227D,231D,235D
DB 239D,242D,245D,248D,250D,252D,253D,254D,255D
DB 255D,254D,253D,252D,250D,248D,245D,242D,239D
DB 235D,231D,227D,223D,219D,214D,209D,203D,198D,192D
DB 186D,180D,174D,167D,161D,155D,148D,141D,135D,128D
DB 121D,115D,108D,101D, 95D, 89D, 82D, 76D, 70D
DB 64D, 58D, 53D, 47D, 42D, 37D, 33D, 29D, 25D, 21D
DB 17D, 14D, 11D, 08D, 06D, 04D, 03D, 02D, 01D, 00D
DB 00D, 01D, 02D, 03D, 04D, 06D, 08D, 11D, 14D, 17D
DB 21D, 25D, 29D, 33D, 37D, 42D, 47D, 53D, 58D, 64D
DB 70D, 76D, 82D, 89D, 95D,101D,108D,115D,121D
DB 127D,126D,125D,124D,122D,120D,117D,114D,111D
DB 107D,103D, 99D, 95D, 91D, 86D, 81D, 75D, 70D, 64D
DB 58D, 52D, 46D, 39D, 33D, 27D, 20D, 13D, 07D, 00D
DB 00D, 07D, 13D, 20D, 27D, 33D, 39D, 46D, 52D, 58D
DB 64D, 70D, 75D, 81D, 86D, 91D, 95D, 99D,104D,107D
DB 111D,114D,117D,120D,122D,124D,125D,126D,127D
NUM DW ?
DATA ENDS
STAC SEGMENT PARA STACK 'STACK'
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STAC ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STAC,ES:DATA
START: MOV AX,DATA ;初始化
MOV DS,AX
MOV AX,STAC
MOV SS,AX
MOV AX,TOP
MOV SP,AX
BG: CALL CRTRST
LEA DX,MESS1
MOV AH,09H
INT 21H
MOV AH,08H
INT 21H
PUSH AX
LEA DX,MESS3
MOV AH,09H
INT 21H
POP AX
MOV AH,AL
CMP AL,'1'
JZ JCB
MOV AL,AH
CMP AL,'2'
JZ SJB
MOV AL,AH
CMP AL,'3'
JZ FB1
MOV AL,AH
CMP AL,'4'
JZ ZXB1
MOV AL,AH
CMP AL,'5'
JNZ WX
JMP QIT
ZXB1: JMP ZXB
WX: LEA DX,MESS2
MOV AH,09H
INT 21H
JMP BG
FB1: JMP FB
JCB: CALL CRTSET
MOV AX,00H
MOV NUM,AX
MOV DX,DACS
MOV AL,00H
BB: OUT DX,AL
INC DX
OUT DX,AL
DEC DX
CALL ADCDIS
ADD AL,01H
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG
POP DX
POP AX
cmp al,80h
jnz bb
mov al,0
JMP BB
SJB: CALL CRTSET
MOV AX,00H
MOV NUM,AX
MOV DX,DACS
MOV AL,00H
EE: OUT DX,AL
INC DX
OUT DX,AL
DEC DX
CALL ADCDIS
ADD AL,01H
CMP AL,7FH
JNE EE
FF: OUT DX,AL
INC DX
OUT DX,AL
DEC DX
CALL ADCDIS
SUB AL,01H
CMP AL,00H
JNE FF
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG2
POP DX
POP AX
JMP EE
BG2: JMP BG
FB: CALL CRTSET
MOV AX,00H
MOV NUM,AX
MOV DX,DACS
MOV AX,0000H
HH: OUT DX,AL
INC DX
OUT DX,AL
DEC DX
PUSH AX
CALL ADCDIS
POP AX
ADD AH,01H
CMP AH,60H
JNE HH
MOV AL,60H
II: OUT DX,AL
INC DX
OUT DX,AL
DEC DX
PUSH AX
CALL ADCDIS
POP AX
ADD AH,01H
CMP AH,0c0H
JNE II
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG1
POP DX
POP AX
MOV AX,0
JMP HH
BG1: JMP BG
ZXB: CALL CRTSET
MOV AX,00H
MOV NUM,AX
MOV DX,DACS
JJ: LEA SI,SINBUF2
MOV BL,116
KK: MOV AL,[SI]
shr al,1
OUT DX,AL
INC DX
OUT DX,AL
DEC DX
CALL ADCDIS
INC SI
DEC BL
JNZ KK
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG3
POP DX
POP AX
JMP JJ
BG3: JMP BG
QIT: MOV AX,4C00H
INT 21H
CRTSET PROC NEAR
PUSH AX
MOV AH,0
MOV AL,06H
INT 10H
POP AX
RET
CRTSET ENDP
ADCDIS PROC NEAR
S12: PUSH DX
PUSH CX
PUSH AX
PUSH BX
MOV DX,ADPORT
OUT DX,AL
CALL DELAY1
IN AL,DX
XOR AH,AH
MOV DL,160
MUL DL
MOV DL,255
DIV DL
XOR AH,AH
MOV DX,AX
MOV AX,160
SUB AX,DX
ADD AX,20
MOV DX,AX
MOV AX,NUM
MOV BX,AX
MOV CX,BX
MOV AH,0CH
MOV AL,1
INT 10H
INC BX
MOV NUM,BX
CMP BX,640
JNZ DISEND
MOV BX,00H
MOV NUM,BX
CALL CRTRST
CALL CRTSET
DISEND: POP BX
POP AX
POP CX
POP DX
RET
ADCDIS ENDP
CRTRST PROC NEAR
PUSH AX
MOV AH,0
MOV AL,3
INT 10H
POP AX
RET
CRTRST ENDP
DELAY1 PROC NEAR
PUSH CX
MOV CX,04000H
LOOP $
POP CX
RET
DELAY1 ENDP
DELAY2 PROC NEAR
PUSH AX
PUSH CX
MOV CX,10H
DL21: CALL DELAY1
LOOP DL21
POP CX
POP AX
RET
DELAY2 ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -