📄 gangqing.asm
字号:
code segment
assume cs:code
D1 = 131
D2 = 147
D3 = 165
D4 = 175
D5 = 196
D6 = 220
D7 = 247
Z1 = 262
Z2 = 294
Z3 = 330
Z4 = 349
Z5 = 392
Z6 = 440
Z7 = 494
G1 = 523
G2 = 587
G3 = 659
G4 = 714
G5 = 784
G6 = 880
G7 = 988
oldint8 dd ?
oldint9 dd ?
time dw 0
ascii db 10H,11H,12H,13H,14H,15H,16H
db 1EH,1FH,20H,21H,22H,23H,24H
db 2CH,2DH,2EH,2FH,30H,31H,32H
music dw d1,d2,d3,d4,d5,d6,d7
dw z1,z2,z3,z4,z5,z6,z7
dw g1,g2,g3,g4,g5,g6,g7
newint8:
dec cs:word ptr time
jz closev
new8_0:
jmp cs:oldint8
closev:
push ax
in al,61h
and al,0fdh
out 61h,al
pop ax
jmp new8_0
voice:
mov cx,ax
mov dx,12h
mov ax,34dch
div cx
push ax
mov al,0b6h
out 43h,al
pop ax
out 42h,al
mov al,ah
out 42h,al
in al,61h
or al,03h
out 61h,al
ret
newint9:
in al,60h
push ax
in al,61h
or al,80h
out 61h,al
and al,7fh
out 61h,al
mov al,20h
out 20h,al
sti
pop ax
push ax
cmp al,80h
jb new90
mov cs:word ptr time,04h
jmp quit
new90:
push cs
pop es
mov di,offset ascii
mov cx,22d
cld
repnz scasb
jcxz quit
sub di,offset ascii
dec di
shl di,1
mov ax,es:[di+music]
mov cs:word ptr time,0h
call voice
quit:
pop ax
cmp al,01h
jnz menu
lds dx,cs:oldint8
mov ax,2508h
int 21h
lds dx,cs:oldint9
mov ax,2509h
int 21h
mov ax,4c00h
int 21h
menu:
sti
jmp menu
start:
mov ax,cs
mov ds,ax
mov ax,3508h
int 21h
mov cs:word ptr oldint8,bx
mov cs:word ptr oldint8+2,es
mov ax,3509h
int 21h
mov cs:word ptr oldint9,bx
mov cs:word ptr oldint9+2,es
mov ax,2508h
mov dx,offset newint8
int 21h
mov ax,2509h
mov dx,offset newint9
int 21h
jmp menu
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -