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

📄 bell.asm

📁 汇编终结....此程序讲述了在软件开发的底层,如何通过汇编来开发高效的驱动程序
💻 ASM
字号:
;宏指令(回车换行)
CRLF    MACRO
        MOV DL,0DH		;回车
        MOV AH,02H
        INT 21H
        MOV DL,0AH		;换行
        MOV AH,02H
        INT 21H
ENDM
;宏指令(响铃)
BELL    MACRO
        MOV AH,2
        MOV DL,07H		;响铃码07H
        INT 21H
ENDM
;
STACK	SEGMENT   STACK  'STACK';定义堆栈段
	DB  256 DUP(0)		;堆栈空间=256
STACK	ENDS 			;堆栈段结束
;
DATA	SEGMENT 		;定义数据段
MSG1	DB 'NUM=','$'
MSG2	DB 'ERROR!','$'
DATA	ENDS			;数据段结束
;
CODE	SEGMENT 		;代码段说明
	ASSUME	CS:CODE,DS:DATA,SS:STACK ; 定义CS=代码段, 定义DS为数据段
START:	             		;EXE文件执行入口
	MOV  AX,DATA		;初始化数据段 ds=DS
	MOV  DS,AX		;ds=DS
	MOV  ES,AX
SSS:	mov  dx,offset MSG1	;输出提示信息
	mov  ah,09h		;功能号ah=9 (显示字符串)
	int  21h		;21h=DOS系统功能中断调用
	MOV AH,1		;输入'0'~'9'
	INT 21H
	CMP AL,03H		;为Ctrl+C退出
	JZ PPP
	PUSH AX
	CRLF
	POP AX
	SUB AL,30H		;(AL)=0~9?
	JLE ERR			;<=0,转移
	CMP AL,10
	JNC ERR			;>9,转移
	MOV CL,AL		;(CX)=响铃次数
	MOV CH,0
LOP1:	BELL
	CALL DELAY		;延时
	LOOP LOP1
	JMP SSS
;
ERR:	mov  dx,offset MSG2	;出错信息
	mov  ah,09h		;功能号ah=9 (显示字符串)
	int  21h		;21h=DOS系统功能中断调用
	CRLF
	JMP SSS
;
PPP:	mov  ax,4c00h		;DOS系统功能调用 4ch=终止程序,退出码=00H
	int  21h	     	;返回DOS
;
delay	proc near		;延时子程序
     	push cx
	mov cx,300H
uuu:	call dely
	loop uuu
	pop cx
	ret
delay	endp
;
dely 	proc near
	push cx
	mov cx,0FFFFh
ccc:	loop ccc
	pop cx
	ret
dely 	endp
;
CODE	ENDS			;代码段结束
	END	START		;汇编结束

⌨️ 快捷键说明

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