91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

匯編語言如何實現發出各種聲音

發布時間:2021-11-29 09:28:02 來源:億速云 閱讀:273 作者:iii 欄目:開發技術

這篇文章主要介紹“匯編語言如何實現發出各種聲音”,在日常操作中,相信很多人在匯編語言如何實現發出各種聲音問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”匯編語言如何實現發出各種聲音”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

9.響鈴設計

9.1設計要求:

要求掌握響鈴的使用方法。設計程序,從鍵盤接收輸入字符,如是數字N,則響鈴N次,如輸入為非數字,則不響鈴。

9.2設計思路:

判斷輸入為0~9之間,將N值給BP,設置響鈴延時次數CX輸出N次響鈴。

匯編語言如何實現發出各種聲音

9.3程序清單:

DATA    SEGMENT
        pkey   DB  0AH,0DH,'please input the N:','$'
        ERR   DB  0AH,0DH,'eero!',0AH,0DH,'please input the N again:','$'
DATA    ENDS  

CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA
STATE:  MOV AX,DATA
        MOV DS,AX
        MOV ES,AX 
        
        LEA DX,pkey
        MOV AH,09H
        INT 21H                 ;DOS功能調用,輸出字符串

INPUT:  MOV AH,01H
        INT 21H
        CMP AL,'9'
        JA  eero
        CMP AL,'0'
        JB  eero
        SUB AL,30H              ;輸入為0~9,則AL為響鈴次數
        SUB AH,AH
        MOV BP,AX               ;BP為響鈴次數N
        
xiang:   MOV CX,4                ;CX為響鈴延時時間
        MOV AH,02H              
        MOV DL,07H
        INT 21H                 ;DOS功能調用,響鈴 
LP:     LOOP LP                 ;響鈴延時
        DEC BP  
        JNZ xiang               ;響鈴N次
        JMP STATE                
                
eero:    LEA DX,ERR
        MOV AH,9
        INT 21H                 ;輸出錯誤字符串
        JMP INPUT

CODE   ENDS

END  STATE

9.4程序運行結果及分析:

設置CX次數為延時次數,BP次數為響鈴次數,調用響鈴功能通過延時實現響鈴,起初會把延時次數和響鈴次數混淆導致錯誤。

匯編語言如何實現發出各種聲音

圖9 響鈴設計結果

10.需要外接揚聲器的發聲程序

10.1機槍聲音

PROGRAM SEGMENT  
    
MAIN PROC FAR
        ASSUME CS:PROGRAM
        
        ORG 100H
STRAT:MOV CX,20D

NEW_SHOT:PUSH CX
         CALL SHOOT
         MOV CX,4000H 
         
SILENT:LOOP SILENT
       POP CX
       LOOP NEW_SHOT
       INT 20H 
       
MAIN ENDP    

SHOOT PROC NEAR  
    
      MOV DX,140H
      MOV BX,20H
      IN  AL,61H
      AND AL,11111100B 
      
SOUND:XOR AL,2
      OUT 61H,AL
      ADD DX,9248H
      MOV CL,3
      ROR DX,CL
      MOV CX,DX
      AND CX,1FFH
      OR CX,10    
      
WAIT: LOOP WAIT 

       DEC BX
       JNZ SOUND
       AND AL,11111100B
       OUT 61H,AL
       RET      
       
SHOOT ENDP   

PROGRAM ENDS 

END STRAT

10.2音樂播放

;定義數據段

data segment
     infor1 db 0Dh, 0AH, "welocom you to come here listeng! $"
     mus_freg  dw 330,294,262,294,3 dup (330)     ;頻率表
               dw 3 dup (294),330,392,392
               dw 330,294,262,294,4 dup (330)
               dw 294,294,330,294,262,-1
     mus_time  dw 6 dup (25),50                   ;節拍表
               dw 2 dup (25,25,50)
               dw 12 dup (25),100
data ends
;棧段定義
stack segment stack
      db 200 dup(?)
stack ends
;--------字符串輸出宏----------
SHOWBM MACRO b
     LEA DX,b
     MOV AH,9
     INT 21H
 ENDM
;----------音樂地址宏-----------
ADDRESS MACRO A,B
     LEA SI,A
     LEA BP,DS:B
ENDM
;代碼段定義
code segment
     assume ds:data, ss:stack, cs:code
start:
     mov ax, data
     mov ds, ax
     mov ax, stack
     mov ss, ax
     mov sp, 200   
     address mus_freg, mus_time
     call music
exit:     
     mov ah, 4cH
     int 21h
;------------發聲-------------
gensound proc near
     push ax
     push bx
     push cx
     push dx
     push di
     mov al, 0b6H
     out 43h, al
     mov dx, 12
     mov ax, 348ch
     div di
     out 42h, al
     mov al, ah
     out 42h, al 
     in al, 61h
     mov ah, al
     or al, 3
     out 61h, al
wait1:
     mov cx, 3314
     call waitf
delay1:
     dec bx
     jnz wait1
     mov al, ah
     out 61h, al
     pop di
     pop dx
     pop cx
     pop bx
     pop ax
     ret 
gensound endp

;--------------------------
waitf proc near
      push ax
waitf1:
      in al,61h
      and al,10h
      cmp al,ah
      je waitf1
      mov ah,al
      loop waitf1
      pop ax
      ret
waitf endp
;--------------發聲調用函數----------------
music proc near
      xor ax, ax
freg:
      mov di, [si]
      cmp di, 0FFFFH
      je end_mus
      mov bx, ds:[bp]
      call gensound
      add si, 2
      add bp, 2
      jmp freg
end_mus:
      ret
music endp
code ends
     end start

到此,關于“匯編語言如何實現發出各種聲音”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂托克旗| 临清市| 永泰县| 南和县| 涟源市| 太康县| 重庆市| 合山市| 长治市| 河池市| 泾源县| 汤原县| 屏山县| 麻阳| 邓州市| 白沙| 稷山县| 勃利县| 奉化市| 西乌珠穆沁旗| 新邵县| 绥德县| 通化市| 镇赉县| 盐城市| 福安市| 安徽省| 彩票| 棋牌| 海原县| 九寨沟县| 静宁县| 黄冈市| 连城县| 那曲县| 永顺县| 紫云| 永善县| 胶州市| 清河县| 西林县|