📄 piano.asm
字号:
;piano
STACK SEGMENT
DB 256 DUP (0)
STACK ENDS
DATA SEGMENT
NOTES DW 9108,8116,7231,6818,6088,5423,4831,4554
;8个字类型数裾分别刘应于l,2,3,4,5,6,7, i发声频率的计数初值
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA, SS:STACK
BEGIN: MOV AX, DATA
MOV DS, AX
NEXT: MOV AH,0
INT 16H ; 等待键入字符
CMP AL, 30H
JZ EXIT ; 判断为0则转结束
SUB AL,31H ;将键入字符转换为数字l,2,3,…,8
MOV CL, 2
MUL CL ;转换后的数字乘以2
MOV SI,AX
MOV DX, NOTES [SI] ;根据计算结果查表取出计时器计数初值 ;打开扬声器
IN AL, 61H
OR AL,3
OUT 61H, AL
MOV AL, 0B6H ;重新初始化汁数器2
OUT 43H,AL
MOV AL, DL
OUT 42H, AL
MOV AL, DH
OUT 42H,AL
JMP NEXT
EXIT: IN AL,61H
AND AL, 0FCH
MOV AH, 4CH
INT 21H
CODE ENDS
END BEGIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -