piano.asm

来自「用PC机扬声器演奏音乐 了解PC机扬声器系统的电路结构」· 汇编 代码 · 共 38 行

ASM
38
字号
;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 + =
减小字号Ctrl + -
显示快捷键?