最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

匯編語言之實(shí)現(xiàn)發(fā)出各種聲音

 更新時(shí)間:2021年11月27日 09:57:48   作者:BoBoRing  
本文給大家分享一個(gè)練手小項(xiàng)目,響鈴設(shè)計(jì)項(xiàng)目,列出了響鈴,機(jī)槍聲音,音樂播放器的代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

軟件:emu8086

語言:匯編語言(Assembly)

注意:本文列出了響鈴,機(jī)槍聲音,音樂播放的代碼,第一個(gè)代碼為博主獨(dú)自一人編寫,所有代碼都會(huì)有瑕疵,謹(jǐn)慎使用。

9.響鈴設(shè)計(jì)

9.1設(shè)計(jì)要求:

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

9.2設(shè)計(jì)思路:

判斷輸入為0~9之間,將N值給BP,設(shè)置響鈴延時(shí)次數(shù)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功能調(diào)用,輸出字符串

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

CODE   ENDS

END  STATE

9.4程序運(yùn)行結(jié)果及分析:

設(shè)置CX次數(shù)為延時(shí)次數(shù),BP次數(shù)為響鈴次數(shù),調(diào)用響鈴功能通過延時(shí)實(shí)現(xiàn)響鈴,起初會(huì)把延時(shí)次數(shù)和響鈴次數(shù)混淆導(dǎo)致錯(cuò)誤。

圖9 響鈴設(shè)計(jì)結(jié)果

10.需要外接揚(yáng)聲器的發(fā)聲程序

10.1機(jī)槍聲音

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音樂播放

;定義數(shù)據(jù)段

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                   ;節(jié)拍表
               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
;------------發(fā)聲-------------
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
;--------------發(fā)聲調(diào)用函數(shù)----------------
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

到此這篇關(guān)于匯編語言之實(shí)現(xiàn)發(fā)出各種聲音的文章就介紹到這了,更多相關(guān)匯編發(fā)出各種聲音內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言ASM匯編內(nèi)嵌語法詳解

    C語言ASM匯編內(nèi)嵌語法詳解

    這篇文章主要介紹了C語言ASM匯編內(nèi)嵌語法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 匯編語言基礎(chǔ)理解計(jì)算機(jī)底層技術(shù)原理

    匯編語言基礎(chǔ)理解計(jì)算機(jī)底層技術(shù)原理

    這篇文章主要為大家介紹了匯編語言基礎(chǔ),理解計(jì)算機(jī)底層原理,想要成為高級程序員,我們必須要學(xué)會(huì)匯編語言,匯編語言是非常重要的計(jì)算機(jī)底層技術(shù),一般用于底層的編寫
    2021-11-11
  • 匯編語言中cmp指令用法筆記與總結(jié)

    匯編語言中cmp指令用法筆記與總結(jié)

    這篇文章主要介紹了匯編語言中cmp指令用法,結(jié)合實(shí)例形式總結(jié)分析了匯編語言cmp指令基本功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • 匯編語言loop命令的具體使用

    匯編語言loop命令的具體使用

    LOOP指令是根據(jù)ECX計(jì)數(shù)器循環(huán),將語句塊重復(fù)執(zhí)行特定次數(shù),本文主要介紹了匯編語言loop命令的具體使用,感興趣的可以了解一下
    2024-03-03
  • 匯編語言程序設(shè)計(jì)之根據(jù)輸入改變屏幕顏色的代碼

    匯編語言程序設(shè)計(jì)之根據(jù)輸入改變屏幕顏色的代碼

    這篇文章主要介紹了匯編語言中的根據(jù)輸入改變屏幕顏色的代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 匯編語言中mov和lea指令的區(qū)別詳解

    匯編語言中mov和lea指令的區(qū)別詳解

    指令(instruction)是一種語句,它在程序匯編編譯時(shí)變得可執(zhí)行。本文給大家總結(jié)一下匯編語言中mov和lea指令的區(qū)別詳解,感興趣的朋友跟隨小編一起看看吧
    2020-01-01
  • 匯編語言XOR指令:對兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作(推薦)

    匯編語言XOR指令:對兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作(推薦)

    匯編語言(assembly language)是一種用于電子計(jì)算機(jī)、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。這篇文章主要介紹了匯編語言XOR指令:對兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作,需要的朋友可以參考下
    2020-01-01
  • 匯編基礎(chǔ)教程段的定義應(yīng)用詳解

    匯編基礎(chǔ)教程段的定義應(yīng)用詳解

    這篇文章主要為大家介紹了匯編基礎(chǔ)教程段的基本定義與應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 匯編語言指令集學(xué)習(xí)條件轉(zhuǎn)移指令詳解

    匯編語言指令集學(xué)習(xí)條件轉(zhuǎn)移指令詳解

    這篇文章主要為大家介紹了匯編語言指令集學(xué)習(xí)條件轉(zhuǎn)移的指令全面總結(jié)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • x86匯編DOS編程環(huán)境搭建過程

    x86匯編DOS編程環(huán)境搭建過程

    在學(xué)習(xí)x86匯編時(shí),第一步是搭建一個(gè)可以編譯、運(yùn)行代碼的環(huán)境,這個(gè)搭建方法也真的超簡單,本文重點(diǎn)給大家介紹x86匯編DOS編程環(huán)境搭建過程,感興趣的朋友一起看看吧
    2021-11-11

最新評論

芒康县| 无为县| 井陉县| 靖宇县| 越西县| 兰坪| 泰来县| 泽库县| 德保县| 五台县| 麻城市| 老河口市| 南靖县| 屏南县| 焉耆| 濮阳市| 山东| 新竹市| 南阳市| 漳平市| 二连浩特市| 澄迈县| 牡丹江市| 长海县| 沽源县| 彰武县| 曲松县| 海南省| 高唐县| 陈巴尔虎旗| 延津县| 隆化县| 丰城市| 白朗县| 宁阳县| 清苑县| 日照市| 北碚区| 祁连县| 青阳县| 池州市|