⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lll.asm

📁 微机原理——接口应用编程源码
💻 ASM
字号:

;
STACK SEGMENT STACK
      DB 64 DUP(?)
STACK ENDS
;
DATA SEGMENT
 
mus_freq DW 330,392,330,294,330,392,330,294,330
         DW 330,392,330,294,262,294,330,392,294
         DW 262,262,220,196,196,220,262,294,330,262
         DB -1
mus_time DB 3 dup(50),25,25,50,25,25,100
         DB 2 dup(50,50,25),25,100
         DB 3 dup(50,25,25),100

DATA ENDS
;
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA
;乐曲主程序
music: MOV AX,DATA
       MOV DS,AX
 
A:     mov dx, 43h         
       mov al,10110000B
       out 43H,al
       mov dx,63h
       mov al,90H       
       out dx,al
aa:    MOV AL,0FFH
       out 42h,al
       mov al,0FFH
       out 42h,al
       MOV DX,60H
       IN AL,DX
       MOV AH,AL
      AND AL,1
      JNE  freq
       jmp   aa  


       LEA BP,mus_time
       LEA SI,mus_freq
     
 
freq:  MOV DI,[SI]
       CMP DI,-1
       JE A
       MOV BX,[BP] 
       CALL soundf
       ADD SI,2
       ADD BP,2
       JMP freq
end_mus: MOV AL,20H
         OUT 20H,AL
         RET


;
soundf  PROC NEAR
        PUSH AX
        PUSH BX 
        PUSH CX 
        PUSH DX
	PUSH DI
        MOV AL,0B6H
        OUT 43H,AL
        MOV DX,11H
        MOV AX,0BD04H
        DIV DI 
        OUT 42H,AL
        MOV AL,AH
        OUT 42H,AL
;延时程序
wait:   MOV CX,663D
        PUSH AX
waitf1: IN AL,61H
        AND AL,10H
        CMP AL,AH
        JE waitf1
        MOV AH,AL
        LOOP waitf1 
        POP AX        
        DEC BX
        JNE wait
        POP DI
        POP DX
        POP CX 
        POP BX
        POP AX
        RET
soundf ENDP

CODE ENDS 
     END music

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -