多次关闭和打开麦克风端口-组装

问题描述 投票:0回答:1

我有此代码:

IDEAL
MODEL small
STACK 100h
DATASEG
CODESEG

PROC PLAY
        mov al, 182         
        out 43h, al          

        out 42h, al        
        mov al, ah          
        out 42h, al 
        in al, 61h         
        or al, 00000011b   
        out 61h, al        
        mov bx, 15         
pauseSound:
        mov cx, 65535
pause2:
        dec cx
        jne pause2
        dec bx
        jne pauseSound

        in  al, 61h         

        and al, 11111100b   
        out 61h, al         

        RET
    END PLAY

start:      


       mov ax, 2712
       call PLAY


       MOV AX, 3834
       call PLAY
exit :

    mov ax, 4C00h
    int 21h
    END start

该程序需要播放一个声音几秒钟,然后播放另一声音几秒钟。但是,我只听到第一个,而不是第二个,问题/错误在哪里?谢谢

assembly x86 tasm dosbox
1个回答
0
投票

指令END告诉TASM中断程序集,它也指定程序入口点。通常在最后一行中,在TASM源中应该只有一个这样的指令。由于您的错字错误,TASM只汇编了子例程PLAY,它不够聪明,无法警告您未正确终止。

END PLAY更改为ENDP PLAY,您的程序将运行。

© www.soinside.com 2019 - 2024. All rights reserved.