亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? music程序增加功能(按1到8變速度,按a到g變調).asm

?? 是一個關于匯編的我的第一個匯編源代碼
?? ASM
字號:
; present time: 2005.05.18
;last modify timer 2005.05.18
; ver 1.20 
; auther      : dengrui(修改:yerunbin)(增加功能:按1到8變速度,按A到G變調)
; functiong   : f1 pressed start music,f5 pressed end, music f9 pressed exit progarm,按1到5變速度,按A到G變調

.model small
.stack

.code
;--------- main program is use to save int 1ch and set 1ch intrrupte to the
;          sub progarm timer_int ,then remain in ram and exit.

main         proc far                   ; show intall message in screen
             mov ax,@code
             mov ds,ax
             mov es,ax
             mov dx,offset msg_install
             mov ah,9h
             int 21h

get_arrower: push es                  ; store the old 1ch intrrupte arrower
             mov ah,35h               ; to the var key_arrower
             mov al,1ch
             int 21h
             mov si,offset timer_arrower
             mov [si],bx
             mov [si+2],es
             pop es

set_arrower: mov ax,seg timer_int        ;set the intrrupt 1ch to the timer_int
             mov ds,ax                 ; sub program
             mov dx ,offset timer_int
             mov al,1ch
             mov ah,25h
             int 21h


exit:        mov ah,31h
             mov al,0
             mov dx,((prog_length+15)/16)+16
             int 21h
main endp

;----------  this is the timer intrrupt
timer_int proc near
        push ds
        push ax
        push bx
        push es
        push di
        push bp
        push cx
        push dx
        push si
;------------- set the es and ds segment
               mov ax,@code
               mov ds,ax
               mov es,ax
func_key_test:
               in al,60h        ;input from the keyboard
key_test1:     cmp al,43h        ;if f9 pressed then restore intrrput arrower 
               jz restore2 

;修改 
keya:cmp al,1eh
 jne keyb 
lea di,tone
mov [di],byte ptr 'A'

keyb:cmp al,30h
 jne keyc 
lea di,tone
mov [di],byte ptr 'B'

keyc:cmp al,2eh
 jne keyd
lea di,tone
mov [di],byte ptr 'C'

keyd:cmp al,20h
 jne keye 
lea di,tone
mov [di],byte ptr 'D'

keye:cmp al,12h
 jne keyf 
lea di,tone
mov [di],byte ptr 'E'

keyf:cmp al,21h
 jne keyg 
lea di,tone
mov [di],byte ptr 'F'

keyg:cmp al,22h
 jne keynum
lea di,tone
mov [di],byte ptr 'G'

keynum:cmp al,02h
jl key_test2 
cmp al,09h
jg key_test2
lea di,time_dure
dec al
mov [di],al

jmp key_test2
restore2:jmp  restore   ;修改



key_test2:     cmp al,3fh        ;if f5 pressed then stop music
               jnz key_test3
lea  di, current_tap  ;set the music pointer to end of music
               lea bx,music_end 
               mov es:[di],bx
               lea bx,litter_tap_time
               mov word ptr[bx], 0            ; set the litter_tap_time to zero
                                     ;disable the music
        jmp play              ; go to play part



key_test3:     cmp al,03bh        ;if f1 pressed the begin music
               jnz play      ;if other key pressed
               mov al,10111111b
               out 43h,al
               lea  di, current_tap  ;set the music pointer to start of music
               lea  bx, music_start
               mov  es:[di],bx
               lea  bx,litter_tap_time
               mov word ptr[bx], 0            ; set the litter_tap_time to zero
                                      ;disable the music
play:
               lea bx,current_tap     ;get the music data pointer
               mov di,[bx]
               cmp word ptr es:[di],'AB'  ;just if pointer to the data end
               jnz  just_delay2             ; not end of music

               lea bx, litter_tap_time
just_delay1:   cmp word ptr[bx],0      ;just whether delay time is end or not 
               jnz  time_dec             ; delay time is not end to timer-1
               mov al,30h              ;delay time is end, turn off speaker
               out 61h,al
               jmp continue         ;exit
time_dec:      dec word ptr[bx]             ; litter_tap_time=litter_tap_time-1
               jmp continue        ;exit

just_delay2:   lea bx,litter_tap_time
               cmp word ptr[bx],0     ;just whether litter tap is end  
               jnz time_dec             ; if time not end ,time=time-1
                                 
set_timer:     lea di,current_tap
               mov bx,es:[di]          ; set the pointer of music data to bx
               mov ax,[bx]             ;read data from music table
               call music_set          ;call the sub for set music data 
               jmp continue            ;exit


restore:                  ; if the f6 key pressed, then restore the
        mov ax,@code      ; 1ch intrupte
        mov ds,ax
        mov bx,offset timer_arrower
        sub ax,ax
        mov es,ax
        mov di,70h

        mov ax,[bx]        ;restore intrrupt 1ch arrower
        mov es:[di],ax
        mov ax,[bx+2]
        mov es:[di+2],ax

        mov al,30h         ;turn off speaker
        out 61h,al


 
continue:
          pop si
          pop dx
          pop cx
          pop bp
          pop di
          pop es
          pop bx
          pop ax
          pop ds
        iret
timer_int endp

;----- set the music data to the timer2 ,set during timer and inc pointer 2

music_set proc near
            ;-------- read the tone data and get the tonepostion
            push bx         ;save the pointer 
            xchg ah,al      ; change the tone flag and during time
            mov cx,ax       ;save  the music data to cx
            lea bx,tone      ;read tone to al
            mov al,[bx]
            sub al,'A'       ;get tone_postion pointer
            mov ah,0         ; clear ah
            mov di,ax        ;set relate pointer to di

            lea bx,tone_postion ;get the tone_postion table index to bx
            mov al,[bx+di]   ;get the tone_postion to al
            mov ah,0
            mov bx,ax        ; set the tone_postion to bx
            shl bx,1         ; bx=bx*2 use to deal with word


            ;--------- compute the music data position
             mov ax,cx      ;restore the music data
             and ah,00001111b ; get the music flag
             xchg ah,al
             mov ah,0
             dec ax
             shl ax,1         ;ax=ax*2   use to deal with word
             add bx,ax        ;set the right music position


             mov ax,cx       ;adjust pointer according to the music flag tone 
             and ah,11110000b ;get the the music flag tone

low_tong:    cmp ah,00h     ;the tone is low ,so bx=bx-14
             jnz high_tone
             sub bx,14
             jmp get_freq
high_tone:   cmp ah,20h    ;;the tone is high ,so bx=bx+14
             jnz get_freq
             add bx,14

            ;------- from the freq convert to the data in timer2

get_freq:    lea di,music_flag_freq  ;set the freq to si
             mov si,[bx+di]
             mov dx,0012h          ; set dx:ax 1,193,180 hz
             mov ax,43dch
             div si                ;div si get the timer2 data in ax
             push ax               ;save the timer2 data in ax to stack

                 ;------ set the timer2 freq data
set_timer2:    
             
             pop ax
             out 42h,al
             xchg ah,al
             out 42h,al        ; set the data to the timer2

             mov al,3fh        ;turn on the speak
             out 61h,al


set_during_time:
             mov ax,cx        ;read the data store in cx to ax
             mov ah,0         ; clear the high apart
             lea bx,time_dure ;set the dure time to dl to multiy al
             mov dl,[bx]
             mul dl
             lea bx,litter_tap_time
             mov [bx],ax      ; set the litter tap time

;------------ set the music data pointer to the next music data

add_msc_piointer:
             pop bx     ; current_tap=current_tap+2
             inc bx
             inc bx
             lea di,current_tap
             mov es:[di],bx
             ret


music_set endp

tone db 'G'      ;which tone the song belonge to 

tone_postion db 20,21,15,16,17,18,19 ;postion in music flag table of tone
                                     ; A B C D E F G

;---------- the freq of the all kind of music flag

music_flag_freq dw  0
                dw    65,  74,  83,  88,  98, 110, 124
                dw    131, 147, 165, 175, 196, 220, 247
                dw    262, 294, 330, 349, 392, 440, 494
                dw    524, 588, 660, 698, 784, 880, 988
                dw    1048,1176,1320,1396,1568,1760,1976

;-------- music flage of the song and the litter tap

music_start db  13h,08,15h,08,13h,08,12h,04,13h,04
            db  15h,08,13h,04,12h,04,13h,16
            db  13h,08,15h,08,13h,04,12h,04,11h,08
            db  12h,08,13h,04,15h,04,12h,16
            db  11h,08,11h,04,06h,04,05h,08,05h,04,06h,04
            db  11h,08,12h,04,13h,04,11h,16

music_end   dw  'AB'



current_tap dw $-2           ; pointer to the tap of current

litter_tap_time dw 0      ;how much time  the litter tap left

time_dure     db  1      ; how much timers the litter tap mulity


timer_arrower dw 0,0

msg_install db 'The music progaram installed! ',0dh,0ah,'$'


prog_length equ $-main
     end  main

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色一情一伦一子一伦一区| 久久免费视频一区| 国产一区二三区| 日本在线播放一区二区三区| 亚洲一区二区三区四区中文字幕| 亚洲欧美日韩人成在线播放| 秋霞国产午夜精品免费视频 | 色婷婷综合久久久中文一区二区| 欧美日韩专区在线| 69精品人人人人| 精品久久一二三区| 亚洲免费观看在线视频| 日韩在线观看一区二区| 99久久久无码国产精品| 欧美日韩不卡一区| 国产精品国产三级国产aⅴ中文 | 洋洋成人永久网站入口| 麻豆精品视频在线观看视频| 国产成人一区在线| 国产精品久久久久久久久快鸭 | 亚洲综合久久久| 国产真实乱子伦精品视频| 一本大道av伊人久久综合| 久久在线观看免费| 青青草国产精品97视觉盛宴| 色婷婷综合五月| 国产日韩精品一区二区浪潮av| 丝袜脚交一区二区| 色综合久久综合网| 中文字幕日韩精品一区 | 日韩电影在线看| 国产精品中文字幕一区二区三区| 欧美又粗又大又爽| xvideos.蜜桃一区二区| 日本美女一区二区三区| 久久精品亚洲麻豆av一区二区| 婷婷一区二区三区| 一本色道久久综合精品竹菊| 国产精品网站一区| 国产一区二区三区在线观看免费| 欧美专区日韩专区| 亚洲特黄一级片| 成人精品小蝌蚪| 国产情人综合久久777777| 国产一区欧美日韩| 久久先锋影音av鲁色资源网| 极品瑜伽女神91| 26uuu亚洲| 国产乱国产乱300精品| 久久久精品日韩欧美| 精品一区二区三区不卡 | 色乱码一区二区三区88| 久久伊99综合婷婷久久伊| 一区二区高清免费观看影视大全| 成人爱爱电影网址| 国产精品区一区二区三| 成人激情文学综合网| 国产喂奶挤奶一区二区三区| 国产高清一区日本| 欧美国产日韩亚洲一区| 99久久国产综合精品色伊| 亚洲少妇中出一区| 精品视频999| 免费欧美高清视频| 亚洲精品一区二区三区影院| 国产成人aaa| 亚洲欧洲一区二区三区| 欧美色综合影院| 一区二区久久久久| 国产精选一区二区三区| 国产日韩欧美在线一区| 成人一级片在线观看| 亚洲成av人片在线观看| 日韩欧美在线1卡| 国产自产2019最新不卡| 国产精品久久看| 在线精品视频一区二区| 美腿丝袜亚洲一区| 中文字幕 久热精品 视频在线| 成人性色生活片| 亚洲国产精品久久久男人的天堂| 91麻豆精品国产自产在线观看一区 | 国产亚洲成年网址在线观看| 久久国产成人午夜av影院| 久久久www成人免费毛片麻豆| 国产在线精品一区二区夜色| 久久久久国产精品人| 国产精品一区久久久久| 亚洲最大成人综合| 久久众筹精品私拍模特| av电影天堂一区二区在线| 香蕉av福利精品导航| 日本一区二区三区久久久久久久久不| 91福利在线观看| 蜜臀91精品一区二区三区| 精品一区二区三区蜜桃| 亚洲精品菠萝久久久久久久| 精品福利一区二区三区免费视频| 91论坛在线播放| 九一九一国产精品| 亚洲午夜激情网站| 国产精品看片你懂得| 日韩你懂的在线播放| 日本韩国精品一区二区在线观看| 另类小说色综合网站| 亚洲综合激情网| 日本一区二区成人| 日韩一区二区在线观看视频 | 成人美女在线观看| 欧美性生活影院| 粉嫩av一区二区三区| 日韩精品1区2区3区| 亚洲欧美激情在线| 国产欧美一区二区三区在线看蜜臀 | 99riav一区二区三区| 国内精品伊人久久久久av影院 | 99久久er热在这里只有精品15| 免费成人在线视频观看| 一区二区三区国产豹纹内裤在线| 国产色综合一区| 精品国产凹凸成av人网站| 91精品国产综合久久久蜜臀粉嫩 | 亚洲欧美日韩国产综合在线| 欧美一级黄色大片| 国产一区二区三区在线观看精品| 青青青爽久久午夜综合久久午夜| 一区二区三区加勒比av| 日韩毛片高清在线播放| 亚洲欧美影音先锋| 国产精品久久久久久久久搜平片| 欧美国产在线观看| 国产精品欧美精品| 亚洲欧美日韩系列| 一区二区三区 在线观看视频| 亚洲欧美日韩国产成人精品影院 | 99久久免费视频.com| 成人免费视频播放| 波多野结衣在线一区| 99久久精品一区| 一本大道久久精品懂色aⅴ| 色国产精品一区在线观看| 欧美亚男人的天堂| 欧美久久久久久久久中文字幕| 欧美精品v国产精品v日韩精品| 欧美日韩免费观看一区三区| 欧美日韩国产高清一区二区三区| 欧美日韩国产高清一区| 欧美日韩国产小视频在线观看| 91女人视频在线观看| 一本大道综合伊人精品热热| 欧美理论电影在线| 欧美精品日韩精品| 在线观看亚洲成人| 欧美一区二区三区人| 精品欧美一区二区在线观看 | 久久66热偷产精品| 国产经典欧美精品| 欧美在线观看视频一区二区三区| 7777精品伊人久久久大香线蕉最新版| 精品免费一区二区三区| 国产欧美一区二区三区网站 | 日一区二区三区| 极品销魂美女一区二区三区| 99久久精品国产网站| 91精品国产综合久久久久久久| 久久免费美女视频| 亚洲黄色尤物视频| 国产中文字幕精品| 在线观看视频91| 久久久久久夜精品精品免费| 国产精品传媒视频| 全国精品久久少妇| 99久久精品情趣| 精品成人一区二区三区| 一区二区三区四区国产精品| 人人超碰91尤物精品国产| av中文字幕不卡| 精品免费一区二区三区| 亚洲一区二区三区影院| 成人网页在线观看| 91精品国产综合久久久久久| 日韩毛片一二三区| 国产激情视频一区二区在线观看| 日韩一区二区免费在线观看| 欧美性生交片4| 在线成人小视频| 一区二区三区欧美亚洲| 成人午夜电影网站| 久久精品在线观看| 美女性感视频久久| 欧美精品第1页| 一区二区三区精品久久久| 国产一区二区三区四| 欧美精品一区二区三区蜜臀| 日本欧美一区二区在线观看| 成人免费的视频| 中文字幕免费在线观看视频一区| 久久精品国产免费| 日韩情涩欧美日韩视频| 蜜臀av性久久久久蜜臀aⅴ四虎|