汇编语言(王爽)——实验十二 编写0号中断的处理程序

1、原题目

2、个人代码

安装0号中断中断处理程序

assume cs:code

code segment
start:
;do0安装程序
mov ax,0
mov es,ax
mov di,200h;设置es:di指向目的地址
mov ax,cs
mov ds,ax
mov si,offset do0;设置ds:si指向源地址
mov cx,offset do0end-offset do0;设置cx为传输长度
cld;设置传输方向为正
rep movsb

;设置中端向量表
mov ax,0
mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0;调用第几号中断程序,第一个乘数就是几

mov ax,4c00h
int 21h

do0:
jmp short do0start
db "divide error!"

do0start:
mov ax,cs
mov ds,ax
mov si,202h

mov ax,0B800h
mov es,ax
mov di,12*160+36*2;设置es:di指向显存空间的中间位置
mov cx,13;设置cx为字符串长度

s:
mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],2;设置颜色属性
inc si
add di,2
loop s

mov ax,4c00h
int 21h;中断处理程序完成后返回到DOS

do0end:
nop
code ends
end start

3、结果

中断处理程序安装后

再编写一个程序进行测试

assume cs:code

code segment
start:
mov ax,1000h
mov bl,1
div bl

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

执行结果如下:

但是debug调试的时候为什么会单步中断进行中断处理程序,在进入中断处理程序之前不是已经设置TF=0了吗?

这一点和书上不一样(待考虑)

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z2bns

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值