📄 electronic piano.asm
字号:
stack segment stack
dw 64 dup(?)
stack ends
data segment
msg db 'This is the electronic piano program $'
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
push ds
mov ah,06h
mov bx,offset msg
int 10h
mov dx,63h ;8255 PB:in PA:out 0
mov al,10000010B
out dx,al
aa: mov al,00h
out 60h,al
mov dx,43h ;8253 counter 2,way 2
mov al,10110101B ;put in bcd code
out dx,al
mov dx,61h
in al,dx
out 60h,al
jz aa
mov ah,al
mov ah,01h ;out pa=o1h ,pa0=gate2
out 60h,al
mov al,ah
mov cl,1
mov bl,00000001B
cmp al,bl
je do
shl bl,cl
cmp al,bl
je re
shl bl,cl
cmp al,bl
je me
shl bl,cl
cmp al,bl
je fa
shl bl,cl
cmp al,bl
je so
shl bl,cl
cmp al,bl
je la
shl bl,cl
cmp al,bl
je ti
do: mov dx,42h
mov al,48h ;1.19MHZclock
out dx,al
mov al,45h
out dx,al
jmp over
re: mov dx,42h
mov al,52h
out dx,al
mov al,42h
jmp over
me: mov dx,42h
mov al,10h
out dx,al
mov al,36h
jmp over
fa: mov dx,42h
mov al,07h
out dx,al
mov al,34h
jmp over
so: mov dx,42h
mov al,36h
out dx,al
mov al,30h
jmp over
la: mov dx,42h
mov al,04h
out dx,al
mov al,27h
jmp over
ti: mov dx,42h
mov al,13h
out dx,al
mov al,24h
jmp over
over:
jmp aa
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -