shift_8 equ 2Ah
ends
stack
data
ss_seg segment
db 256 dup(?)
ss_seg ends code
segment
assume cs:code,ds:data,ss:ss_seg main
proc push xor push mov mov
far ds ax, ax ax
ax, data ds, ax ah, 0
;ÀûÓÃbiosµÄ16ºÅÖжϣ¬É¨Ãè¼üÅ̰´¼ü ;ALÖзµ»Ø°´¼üASCIIÂ룬AHÖзµ»Ø°´¼üɨÃèÂë ;ÅжÏÊÇ·ñΪ»Ø³µ¼ü£¬Êǻسµ¼ü¾ÍÍ˳ö ;×°ÔØÊý¾Ý¶Î¼Ä´æÆ÷ds,ʹָ֮Ïòµ±Ç°Êý¾Ý¶Î
;½«psp+0h´¦¶ÎµØÖ·ºÍÆ«ÒÆÁ¿Ñ¹Èë¶ÑÕ»ÒԱ㷵»ØOS
main_1: mov
int cmp jz cmp jb cmp ja and
16h
al, 0dh
main_exit
al, '1'
main_2
al, '8'
main_2 ax, 000fh
;˵Ã÷°´ÏµÄÊǵÍÒô1-7£¬Óë²Ù×÷½«ASCII ;Âëת»»µ½Êý×Ö1-8
dec shl lea
al al, 1
;½«Êýֵת»»³ÉÒÔ0¿ªÊ¼µÄÊý×Ö£¬ÒÔ±ã´Ó±íÖвéÕÒÆµÂÊÖµ ;½«ÊýÖµ³ËÒÔ2£¬Òòÿ¸öƵÂÊÖµÊÇ×Ö±äÁ¿
bx, Table_L
si, ax di, [bx+si] bx, 5000
;´Ó±íÖÐȡƵÂÊÖµ ;·¢Éùʱ¼ä
main_12:mov
mov mov
call GenSound jmp
main_1
al, shift_1
;ÅжÏÊÇ·ñ°´ÏÂshift+1¼ü
main_2: cmp
jnz mov
main_3
ax, 0
16
jmp main_11 main_3: cmp jnz mov
jmp
main_4: cmp jnz mov
jmp
main_5: cmp jnz mov
jmp
main_6: cmp jnz mov
jmp
main_7: cmp jnz mov
jmp
main_8: cmp jnz mov
jmp
main_9: cmp jnz mov
jmp
main_10:jmp main_11:lea
jmp
main_exit:
ret
al, shift_2
main_4
ax, 2
main_11
al, shift_3
main_5
ax, 4
main_11
al, shift_4
main_6
ax, 6
main_11
al, shift_5
main_7
ax, 8
main_11
al, shift_6
main_8
ax, 10
main_11
al, shift_7
main_9
ax, 12
main_11
al, shift_8
main_10
ax, 14
main_11
main_1
bx, Table_M main_12
;ÅжÏÊÇ·ñ°´ÏÂshift+2¼ü
;ÅжÏÊÇ·ñ°´ÏÂshift+3¼ü
;ÅжÏÊÇ·ñ°´ÏÂshift+4¼ü
;ÅжÏÊÇ·ñ°´ÏÂshift+5¼ü
;ÅжÏÊÇ·ñ°´ÏÂshift+6¼ü
;ÅжÏÊÇ·ñ°´ÏÂshift+7¼ü
;ÅжÏÊÇ·ñ°´ÏÂshift+8¼ü
17
main endp
;·¢Éù³ÌÐò
;Èë¿Ú£ºdiÖдæ·ÅµÄÊǶ¨Ê±Æ÷2µÄ¼ÆÊýÖµ ; bxÖдæ·ÅµÄÊÇÑÓʱµÄʱ¼ä ;³ö¿Ú£ºÎÞ GenSound proc push push push push push push mov out mov mov div out mov out in mov or
out
GenSound_2:
mov
GenSound_1: nop loop dec jnz mov out
pop
ax
;±£»¤ÏÖ³¡
bx cx dx si di
al, 0b6h ;д¶¨Ê±Æ÷ģʽ
43h, al dx, 12h ;¶¨Ê±Æ÷·ÖƵ,533h*896=123280h
ax, 3280h
di
;533h*896/¸ø¶¨ÆµÂÊ 42h, al ;д¶¨Ê±Æ÷2µÄµÍ×Ö½Ú
al, ah
42h, al ;д¶¨Ê±Æ÷2µÄ¸ß×Ö½Ú
al, 61h ;µÃµ½µ±Ç°61h¶Ë¿ÚµÄÉèÖÃ,²¢±£´æÔÚahÖÐ
ah, al
al, 03h ;´ò¿ªÑïÉùÆ÷·¢Éù
61h, al
cx, 3000
GenSound_1 bx
GenSound_2
al, ah
;¹Ø±ÕÑïÉùÆ÷
61h, al di
;»Ö¸´ÏÖ³¡
18
pop si pop dx pop cx pop bx pop ax
ret
GenSound endp
code ends
end
main
19
Ïà¹ØÍÆ¼ö£º