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

📄 music.asm

📁 用汇编语言写的生日快乐
💻 ASM
字号:
;---------------------data definition---------------------------
data segment
        freq_tab        dw 262,294,330,349,392,440,494,523,466
        tone            db '1A1A2Z1Z4Z3a1A1A2Z1Z5Z4a1A1A8Z6Z4Z3Z2z9A9A6Z1Z5Z4a',0,0
data ends
;----------------------------code-------------------------------
code segment
        assume cs:code,ds:data

main    proc near
        mov ax,data
        mov ds,ax

        mov si,offset tone
        call PlayMusic

        mov ax,4C00H
        int 21H
main endp




PlayMusic proc near
        lodsb
        cmp al,0
        jz exit
        sub al,'1'
        xor ah,ah
        mov di,ax
        shl di,1
        mov bx,freq_tab[di]

        lodsb
        sub al,40h
        xor cx,cx
        mov cl,al
        call sound
        jmp PlayMusic
exit:
      ret
PlayMusic endp




sound proc near
        push ax
        push bx
        push dx

        mov al,0B6H
        out 43H,al
        mov dx,12H
        mov ax,348CH
        div bx
        out 42H,al
        mov al,ah
        out 42H,al
        in al,61H
        mov ah,al
        or al,3
        out 61H,al
_wait:
        call delay100ms
        loop _wait
        mov al,ah
        out 61h,al
        pop dx
        pop bx
        pop ax
        ret
sound endp



delay100ms proc near
        push cx
        push ax
        mov cx,5500
     delay:
        in al,61H
        and al,10H
        cmp al,ah
        je delay
        mov ah,al
        loop delay
        pop ax
        pop cx
        ret
delay100ms endp

code ends
        end main



⌨️ 快捷键说明

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