?? sy10-0832-2.asm
字號:
; IO EQU 0C400H-0280H
;IO_DAC EQU IO+0290H
DATA SEGMENT
SIN DB 1,2,4,7,12,17,24,31,40,50,60,71,82,95,107,120,132,145,157
DB 170,181,193,203,213,222,230,237,243,248,252,254,255,255,254
DB 251,247,242,236,229,221,212,202,191,179,168,155,143,130,117
DB 105,92,80, 69,58,48,38, 30,22,16,11,7,4,2,1
OVER DB 'Transfer Over?(Y/N)','$'
CHOOSE DB 'Input(1-3)(ESC->out)1.鋸齒波 2.三角波 3.正弦波 :',10,13,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
RESTART: MOV DX,OFFSET CHOOSE ;顯示選擇語句
MOV AH,09H
INT 21H
MOV AH,01H ;AL=
INT 21H
CMP AL,1BH ;若為ESC,則跳到EXIT
JZ EXIT
CMP AL,31H ;若輸入1,跳到W1
JZ W1
CMP AL,32H ;若輸入2,跳到W2
JZ W2
CMP AL,33H ;若輸入3,跳到W3
JZ W3
JMP EXIT
W1: MOV AL,0 ;產生鋸齒波
L1: MOV DX,0C410H
OUT DX,AL
INC AL
CMP AL,0FFH
JNZ L1
MOV AH,0BH ;若鍵盤有輸入,則轉到RESTART
INT 21H
CMP AL,0FFH
JZ RESTART
JMP L1 ;循環輸出鋸齒波
W2: MOV AL,0 ;產生三角波
L2: MOV DX,0C410H
OUT DX,AL
INC AL
CMP AL,0FFH
JNZ L2
L22: OUT DX,AL
DEC AL
CMP AL,0
JNZ L22
MOV AH,0BH ;若鍵盤有輸入,則轉到RESTART
INT 21H
CMP AL,0FFH
JZ RESTART
JMP L2 ;循環輸出三角波
W3: MOV BX,OFFSET SIN ;輸出正弦波
L3: MOV SI,0
L33: MOV DX,0C410H
MOV AL,[BX+SI]
OUT DX,AL
INC SI
CMP SI,65
JNZ L33
MOV AH,0BH ;若鍵盤有輸入,則轉到RESTART
INT 21H
CMP AL,0FFH
JZ RESTART
JMP L3 ;循環輸出正弦波
EXIT: MOV DX,OFFSET OVER
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
CMP AL,'N'
JZ RESTART
MOV AH,4CH
INT 21H
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -