Wonder233
2015-06-25 05:17
采纳率: 100%
浏览 3.2k
已采纳

为什么用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 2015-07-07 06:30
    已采纳

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

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

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

    卡着真难受

    点赞 打赏 评论
  • luoshinanshiwo 2016-02-17 06: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!了

    点赞 打赏 评论

相关推荐 更多相似问题