zj1.asm
来自「一个在MASM环境下开发的键盘模拟钢琴按键的汇编程序,本程序由三个模块组成:八度」· 汇编 代码 · 共 89 行
ASM
89 行
dseg segment para 'data'
table dw 262
dw 294
dw 330
dw 349
dw 392
dw 440
dw 494
dw 523
dseg ends
cseg segment para 'code'
assume cs:cseg,ds:dseg
main proc far
start:
mov ax,dseg
mov ds,ax
new_note:
mov ah,0
int 16h
cmp al,03h
je exit
cmp al,'0'
je stop
cmp al,0dh
je stop
mov bx,offset table
cmp al,'1'
jb new_note
cmp al,'8'
ja new_note
and ax,0fh
shl ax,1
sub ax,2
mov si,ax
mov di,[bx][si]
mov bx,10
call soundf
jmp new_note
exit:
mov ax,4c00h
int 21h
stop:
mov al,0fdh
out 61h,al
jmp new_note
main endp
soundf proc near
mov al,0b6h
out 43,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
wait1:
mov cx,33333
call waitf
soundf endp
waitf proc near
waitf1:
in al,61h
and al,10h
cmp al,ah
je waitf1
mov ah,al
loop waitf1
ret
waitf endp
cseg ends
end start
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?