王爽 汇编语言 第三版 实验12 编写0号中断的处理程序

题目


编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串“divide error!”,然后返回到DOS

源代码(一)

assume cs:code
code segment
	main:	mov ax,cs
			mov ds,ax
			mov si,offset startF				;设置ds:si指向源地址
			mov ax,0
			mov es,ax
			mov di,200H							;设置es:di指向目的地址
			mov cx,offset endF - offset startF	;设置传输长度
			cld									;设置传输方向为正
			rep movsb
												;将入口地址0:200H,写入中断向量表的0号表项中
			mov ax,0
			mov ds,ax
			mov word ptr ds:[0*4],200H
			mov word ptr ds:[0*4+2],0
			
			mov ax,4C00H
			int 21H
			
  startF:	jmp short catch
			db 'divide error!'
			;----------------------------------
			;名称:catch
			;功能:向屏幕中间输出 divide error!
			;参数:无
			;返回:无
			;----------------------------------
   catch:	mov ax,cs
			mov ds,ax
			mov si,202H
			mov ax,0B800H
			mov es,ax
			mov di,12*160+(160-13*2)/2+1		;计算输出
			mov cx,13
			a:	mov al,ds:[si]
				mov ah,02H
				mov es:[di],ax
				inc si
				add di,2
				loop a
			mov ax,4C00H
			int 21H
	endF:	nop
code ends
end main


源代码(二)

assume cs:code
code segment
	main:	;当CPU执行div bh后,会发生除法溢出错误,产生0号中断信息
			mov ax,1000H
			mov bh,01
			div bh
			
			mov ax,4C00H
			int 21H
code ends
end main



程序运行示例图




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值