2 wonder233 Wonder233 于 2015.06.25 13:17 提问

为什么用dosbox运行编写的除法溢出汇编程序没有引发中断?

电脑自带dos能触发中断程序

dosbox并没有触发中断程序

学习了王爽老师编写的汇编语言(第三版)第十二章内中断,我想看看触发除法溢出中断后程序显示提示信息“Divide overflow”于是编写了一个除法溢出的程序

assume cs:code
code segment
start:
mov ax,1000h
mov bh,1
div bh
mov ax, 4c00h
int 21h
code ends
end start

在dos以及dosbox上运行,一个能够引发中断,一个不能。是不是dosbox不支持中断触发啊?那我接下来需要修改中断程序的话会不会把dos本身自己的中断给覆盖掉?

2个回答

qq_20303581
qq_20303581   2015.07.07 14:30
已采纳

确实是dosbox似乎不支持中断 我试了很久 用debug出来的都是???

郁闷 vm装的是11 不支持32位的系统了

等会还要装个vm10 或9 试试32位xp

卡着真难受

luoshinanshiwo
luoshinanshiwo   2016.02.17 14:55

我最近看这本书也碰到这个问题了,后来我发现好像是在dosbox里的debug里直接用a来写命令,然后执行的都是单步跟踪,因为执行了div bh后,cs
和ip里的值会正确的变为0和200,之后用-u命令会看到下面的都是我们自己写的0号中断处理程序。

所以我就单独写了一个asm程序,内容就是三行:
mov ax,1000
mov bh,1
div bh
在debug里直接执行这个exe就会正确的在屏幕中间显示 devide overflow!了

qq_36278802
qq_36278802 按照你说的方法试了一下然后执行了之后没有在屏幕中间显示啊
9 个月之前 回复
qq_36278802
qq_36278802 我也是用dosbox显示了???
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片