王爽《汇编语言》实验12:编写0号中断的处理程序

编写0号中断的处理程序,使得除法溢出时在屏幕中间显示"divide error!"并返回DOS

代码如下:

溢出测试:

assume cs:codesg
codesg segment
start:
	mov ax,1000h
	mov bh,1
	div bh

	mov ax,4c00h
	int 21h
codesg ends
end start

中断处理程序:

assume cs:codesg
codesg segment
start:  ;do0安装程序
    mov ax,cs
    mov ds,ax
    mov si,offset do0   ;ds:si->do0
    xor ax,ax
    mov es,ax
    mov di,200h         ;es:di->0000:0200
    cld
    mov cx,(offset d0e-offset do0)
    rep movsb           ;完成do0迁移

    mov word ptr es:[0],200h
    mov word ptr es:[2],0
                        ;设置中断向量0,完成do0安装
    mov ax,4c00h
    int 21h

do0:    ;0号中断处理程序do0
    jmp d0s
s:  db "divide error!"
d0s:mov ax,cs
    mov ds,ax
    mov si,202h         ;ds:si->str
    mov ax,0b800h
    mov es,ax
    mov di,12*80*2+34*2 ;es:di屏幕中间位置
    mov cx,(offset d0s-offset s)
    mov ax,0700h        ;(ah)=文字属性
l:  mov al,ds:[si]
    mov es:[di],ax
    inc si
    add di,2
    loop l

    mov ax,4c00h
    int 21h
d0e:nop
codesg ends
end start

运行截图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值