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

📄 fmq.asm

📁 键盘实现电子琴功能....用61h和1ah端口实现
💻 ASM
字号:
stack1 segment
 db 64 dup(?)
stack1 ends
dseg segment
 table1 dw 262
       dw 294
       dw 330
       dw 349
       dw 392
       dw 440
       dw 494
       dw 523    ;12345678
dseg ends
cseg segment
 assume cs:cseg,ds:dseg,ss:stack1
main proc far
start: mov ax,dseg
     mov ds,ax
get_char:
     mov ah,0        ;读键盘缓冲区数据
     int 16h
     cmp al,0dh
     je exit
     mov bx,offset table1
     cmp al,'1'
     jb get_char    ;小于1无效,循环读音调
     cmp al,'8'
     ja get_char    ;大于8无效,循环
     shl ax,1
     sub ax,2
     ;sub ax,'1'
     ;shl ax,1
     mov si,ax
     mov di,[bx][si]
     mov bx,00ffh
     call fasheng
     jmp get_char
exit:
     mov ah,4ch
     int 21h
  main endp

fasheng proc near
        push ax
        push bx
        push cx
        push dx
        push di
        mov al,0b6h
        out 43h,al
        mov dx,12h
        mov ax,348ch
        div di
        out 42h,al
        mov al,ah
        out 42h,al
        in al,61h
        mov ah,al
        or al,3
        out 61h,al
        call delay
        mov al,ah
        out 61h,al
        pop di
        pop dx
        pop cx
        pop bx
        pop ax
        ret
fasheng endp

delay proc near
        push ax
        push bx
        push cx
        push dx
        mov ax,00h
        mov dx,ax
  loop1:mov ah,2
        int 1ah
        mov ax,dx
        cmp al,bl
        jl loop1
        pop dx
        pop cx
        pop bx
        pop ax
        ret
delay endp
  cseg ends
  end start

⌨️ 快捷键说明

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