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

📄 file8-1.asm

📁 学习汇编写的经典算法程序
💻 ASM
字号:
	stack	segment stack
		db 1024 dup(0)
	stack   ends
	data	segment
	intmsg	db 'A 8259A Interrupt !'
		db 0dh,0ah,0
	counter	db 0		;中断计数记录单元
	data 	ends
	extra	segment
	extra	ends
	code	segment 'code'
		assume cs:code,ds:data,ss:stack,es:extra
	start:	mov ax,data
		mov ds,ax
		mov es,ax		
		mov ax,3508h	;中断向量号08H
		int 21h
		push bx		;保存偏移地址
		push es		;保存段基地址
		cli			;关中断
		push ds
		mov dx,offset new08h
		mov ax,seg new08h
		mov ds,ax
		mov ax,2508h
		int 21h		;设置新中断向量
		pop ds
		in al,21h		;读出IMR
		push ax		;保存原IMR内容
		and al,0feh	;允许IRQ0
		out 21h,al		;设置新IMR
		mov counter,0	;设置中断次数初值
		sti		;开中断
	start1:	cmp counter,10
		jb start1		;中断10次退出
		cli		;关中断
		pop ax		;恢复原IMR
		out 21h,al
		pop dx		;恢复原中断向量
		pop ds
		mov ax,2508h
		int 21h
		sti		;开中断
		mov ax,4c00h	;返回DOS
		int 21h
		
	new08h	proc
		sti		;开中断
		push ax		;保护寄存器
		push bx
		push ds
		mov ax,data	;外部随机产生中断,DS不确定,必须设置DS
		mov ds,ax	;设置数据段DS
		inc counter	;中断次数加1
		mov si,offset intmsg	;显示信息
		call dpstri
		mov al,20h	;发送EOI命令
		out 20h,al	;写OCW2命令字
		pop ds		;恢复寄存器
		pop bx
		pop ax
		iret		;中断返回
	new08h	endp

	dpstri	proc	;显示字符串子程序
		push ax	;入口参数DS:SI=字符串首址
		push bx
	dps1:	lodsb
		cmp al,0
		jz dps2
		mov bx,0	;调用ROM-BIOS功能显示
		mov ah,0eh
		int 10h
		jmp dps1
	dps2:	pop bx
		pop ax
		ret
	dpstri	endp

	code	ends
		end start

⌨️ 快捷键说明

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