微机原理实验 音乐发生器接口程序
push di ;寄存器压栈
push si
push bp
push bx
mov al,80h ;8255初始化0
mov dx,303h
out dx,al
mov al,06h
mov dx,303h
out dx,al
mov al,0eh
mov dx,303h
out dx,al
mov al,36h
mov dx,307h
out dx,al
mov dx,offset bg
mov ah,9
int 21h
mov si,offset freq
mov bp,offset time
pp: mov ah, 0bh
int 21h
cmp al,00
jne end_sing
mov di,[si]
cmp di,0
je end_sing
mov dx,12h
mov ax,34dch
div di
mov dx,304h
out dx,al
mov al,ah
out dx,al
mov dx,303h ;关闭8253的T2计数器(8255的PC6=0) ;关闭喇叭(8255的PC0=0) 初始化0 ;显示提示信息 ;设置频率指针→si ;设置延时指针→bp ;检测是否有任意键按下? ;若有,则结束演凑 ;取1个音符的频率→di ;检测是否是乐曲结尾 ;若是,则结束演凑 ;计算音符的频率所对应的8253计数初值;1.19318MHz ;向8253装入计数初值 ;先装低字节 ;再装高字节 ;打开喇叭(8255的PC0=1) ;8253