发声程序执行出现问题
刚刚接触Win32汇编,写了一个发声的小程序,代码如下:
; 只要向地址61h位控制寄存器的0和1位发送高电平便能驱动扬声器.386.model flat,stdcalloption casemap:noneinclude kernel32.incincludelib kernel32.lib.code;==========================;发声子程序;==========================beep proc PUSHAD ; 保存寄存器 ;======================== ; 61h ;======================== IN AL,61h ; 读取控制寄存器中的内容 MOV AH,AL ; 保存一个副本到AH中,用于后面恢复控制寄存器 OR AL,00000011b ; 低两位处理 OUT 61h,AL ;======================== ;延时 ;======================== MOV ECX ,0fffff5h .repeat NOP .untilcxz ;======================== ;把控制器中的内容还原,关闭扬声器 ;======================== MOV AL,AH OUT 61h,AL POPAD RETbeep endpstart: invoke beep invoke ExitProcess,0end start