整个程序不能脱离dosbox,在dosbox中触发中断。本程序的思路是:
先编写0号中断子程序;
在主程序中运用传送方法把中断子程序传送至内存段:1设置传送的起点2设置传送的终点3设置传送的代码段长度4设置传送的方向5rep 启动传送6修正中断向量表,使某个类型指向中断程序
在主程序中运算1000 除以1 ,触发中断
assume cs:code
code segment
main:
mov ax,cs
mov ds,ax
mov si,offset rupt0;设置传送的起点
mov ax,0
mov es,ax
mov di,200h;设置传送的终点
mov cx,offset rupt0end - offset rupt0
cld
rep movsb;完成传送中断程序
mov ax,0
mov es,ax
mov word ptr es:[0],200h
mov word ptr es:[2],0;修改向量表
mov ax,1000h
mov bh,1
div bh;实验除法溢出
mov ax,4c00h
int 21h
rupt0:
jmp short go
db 'overflow!'
go:
mov ax,cs
mov ds,ax
mov si,0202h;设置源数据
mov ax,0b800h
mov es,ax
mov di,160*12+32*2;设置显存中显示位置
mov cx,9
lp:
mov al,ds:[si]
mov es:[di],al
inc si
add di,2
loop lp
mov ax,4c00h
int 21h
rupt0end:nop
code ends
end main
显示效果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/09b19ff5d0ed45f1a4de8435b6519391.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAemhhbmd6aGFuZ2tlamk=,size_15,color_FFFFFF,t_70,g_se,x_16#pic_center)
谢谢阅读