;出口:dx=1退出總程式,dx=2回滾
musmenu proc near
push ax
push bp
push si
stopm0:
call clein ;清除輸入框架中的內容
call cursorp ;置游標到輸入框的中心處
call input
stop01:
cmp al,'1'
jnz stop02
push dx
lea dx,music_1
call music_s
pop dx
lea si,mus_f1
lea bp,ds:mus_t1
jmp stopm1
stop02:
cmp al,'2'
jnz stop03
push dx
lea dx,music_2
call music_s
pop dx
lea si,mus_f2
lea bp,ds:mus_t2
jmp stopm1
stop03:
cmp al,'3'
jnz stop04
push dx
lea dx,music_3
call music_s
pop dx
lea si,mus_f3
lea bp,ds:mus_t3
jmp stopm1
stop04:
cmp al,'4'
jnz stop05
push dx
lea dx,music_4
call music_s
pop dx
lea si,mus_f4
lea bp,ds:mus_t4
jmp stopm1
;就算已經等於1~4中的任何乙個數,而它依然會繼續執行下去,所以就會碰到,字母
;中的最後乙個r,接著就會跳到stopm0這個位置,重新要求輸入
stop05:
cmp al,'q'
jnz stop06
jmp stopm2
stop06:
cmp al,'r'
jnz stop07
jmp stopm3
stop07:
cmp al,'q'
jnz stop08
jmp stopm2
stop08:
cmp al,'r'
jnz stopmq
jmp stopm3
stopmq:
call error
call timelate
call timelate
jmp stopm0
stopm1:
call music
jmp stopm0
stopm2:
mov dx,'1' ;退出總程式
jmp exitm2
stopm3:
mov dx,'2' ;回滾一層
exitm2:
call timelate
call timelate
pop si
pop bp
pop ax
retmusmenu endp
;入口si[頻率首位址]與bp[發音時間首位址]作為入口
push bx
push bp
push di
freq:
mov di,[si] ;實參
cmp di,-1
je end_mus1 ;即jz(如果di==1,則跳到end_mus)
mov bx,ds:[bp] ;實參
call soundf
mov ah,01h ;zf=0時,al=字元碼,ah=掃瞄碼
int 16h ;zf=1時,緩衝區無按鍵等待
cmp al,'e'
jz end_mus1
cmp al,'e'
jz end_mus1
mov al,'5' ;'這個是我自己隨便設'
add si,2 ;向後移乙個字
add bp,2 ;向後移乙個字
jmp freq ;跳回到freq這個位置重新判斷
end_mus:
end_mus1:
pop di
pop bp
pop bx
retmusic endp
;入口bx[發音時長(要求是0.125秒的倍數)]與di[頻率]
soundf proc near
push ax
push cx
push dx
mov al,10110110b
out 43h,al
mov dx,12h ;因為11931000d=12348ch,所以dx用來存放高位
;扣除低四348ch剩下的12h
mov ax,348ch ;1193110/freq
div di ;因為除數為32位,所以可用來除以16位的,結果為16位,儲存在ax中
out 42h,al
mov al,ah
out 42h,al
in al,61h ;
mov ah,al ;
or al,3 ;
out 61h,al ;
back:
mov cx,8286 ;現為0.125秒
call waitf
dec bl
jnz back
mov al,ah
out 61h,al
pop dx
pop cx
pop ax
retsoundf endp
;入口cx,控制時間基數
waitf proc near
push ax
waitf1: ;15.08微秒
in al,61h
and al,10h
cmp al,ah
je waitf1
mov ah,al
loop waitf1
pop ax
retwaitf endp
code ends
end main
執行介面:
主選單:
鋼琴介面:
點歌介面:
退出介面:
LilyPond教程(3) 鋼琴獨奏片段 I
本篇的學習要點有 首先,給出示例的 如下 version 2.20.0 language english header score new staff fixed c new staff fixed c 本篇教程不涉及 layout部分的 內容,大家可以把這段複製到自己的ly檔案中,以使樂譜有較好的...
2 5 PyCharm常用快捷鍵
pycharm常用的快捷鍵有很多,但是下面我們列出平常比較實用的 ctrl c 不需要選中一行,當游標在一行任意位置時,使用這個可以直接複製整行的內容 ctrl d 直接複製游標所在行的內容到下一行 ctrl shift n 快速搜尋查詢專案中的檔案 ctrl a 全選 ctrl alt l 選中的...
作業3月25號
1 檔案內容如下,標題為 姓名,性別,年紀,薪資 egon male 18 3000 alex male 38 30000 wupeiqi female 28 20000 yuanhao female 28 10000 要求 從檔案中取出每一條記錄放入列表中,列表的每個元素都是的形式 dic lis...