编写0号中断的处理程序

一、实验要求

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

二、设计思路:

1、编写0号中断的处理程序,该程序显示字符串,然后返回到DOS

2、编写安装程序,将步骤1中处理程序复制到0000:0200开始的内存中

3、修改中断向量表,使0号中断的处理程序地址指向0000:0200

三、详细设计

assume cs:codesg

codesg segment
start:
;将do0子程序放入到0000:0200开始的内存空间中
mov ax,0
mov es,ax
mov di,0200h ;es:[di]指向目标地址0000:0200
mov ax,cs
mov ds,ax
mov si,offset do0 ;ds:[si]指向do0程序的首地址
 
mov cx,offset do0end-offset do0  ;计算传输的长度
cld    ;设置传输方向为正
rep movsb
 
 
;设置中断向量表,将0号(除法溢出)中断的处理程序地址改为0000:0200
mov ax,0
mov ds,ax
mov bx,0
mov word ptr ds:[bx],0200h
mov word ptr ds:[bx+2],0000h
 
;安装程序返回
mov ax,4c00h
int 21h


do0:
;存放要显示的数据
jmp short do0start
db "overflow"

do0start:
;显示字符串"overflow"
mov ax,0b800h
mov ds,ax
mov bx,12*80*2+30*2   ;ds:bx指向屏幕中央
mov ax,cs
mov es,ax
mov si,0202h   ;es:si指向要显示的字符串
mov cx,8
s:
mov al,es:[si]
mov ds:[bx],al
inc bx
mov byte ptr ds:[bx],02h
inc bx
inc si
loop s
 
;返回dos
mov ax,4c00h
int 21h

do0end:
nop

codesg ends
end start

四、程序测试

2523963_1268296662Lp2G

转载于:https://www.cnblogs.com/S-E-P/archive/2010/03/11/2045073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值