⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eg0801.asm

📁 宏汇编器
💻 ASM
字号:
;eg0801.asm in DOS
	include io16.inc
	.data
freq	word 1193180/600	;给一个600Hz的频率
	.code
start:
	mov ax,@data
	mov ds,ax
	mov ax,freq
	call speaker	;设置扬声器的音调
	call speakon	;打开扬声器声音
	call readc	;等待按键

	call speakoff	;关闭扬声器声音
	exit 0
	;发音频率设置子程序,入口参数:AX=1.19318×106÷发音频率
speaker	proc
	push ax	;暂存入口参数以免被破坏
	mov al,0b6h	;定时器2为方式3,先低后高写入16位计数值
	out 43h,al
	pop ax	;恢复入口参数
	out 42h,al	;写入低8位计数值
	mov al,ah
	out 42h,al	;写入高8位计数值
	ret
speaker	endp
speakon	proc	;扬声器开子程序
	push ax
	in al,61h	;读取61H端口的原控制信息
	or al,03h	;D1D0=PB1PB0=11,其他位不变
	out 61h,al	;直接控制发声
	pop ax
	ret
speakon	endp
speakoff	proc	;扬声器关子程序
	push ax
	in al,61h
	and al,0fch	;D1D0=PB1PB0=00,其他位不变 
	out 61h,al	;直接控制闭音
	pop ax
	ret
speakoff	endp

	end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -