忘掉自私非爱人 发表于 2013-11-4 19:31:09

在学了鱼老师的中断后我有这样的疑问

我们写出来的放在0:200H的代码,更改了7ch的中断向量表, 编译运行通过后,我想再编另外的程序调用7ch的中断,发现报错了,0:200H不是一段安全的内存么,为什么存放在这个里面的数据没有了,我们写的中断的程序只能在其程序内部使用么?

锐利坚定 发表于 2013-11-6 09:50:10

偶看见美女 直接闪过来了

忘掉自私非爱人 发表于 2013-11-6 11:50:04

锐利坚定 发表于 2013-11-6 09:50 static/image/common/back.gif
偶看见美女 直接闪过来了

哪里有美女

yinyuepingguo 发表于 2013-11-8 21:30:38

我的理解是我们现在的编程环境是windows,每次我们调用debug或者使用16位汇编,windows都会为我们模拟出来一个DOS环境(安全的虚拟8086模式)来运行。虽然我们在程序中修改了中断向量表,但是两次运行时的DOS环境并非同一个DOS环境(每一次运行会模拟出一个新的)。为了验证我的猜想,我打开了两个debug。在一个debug中修改了0200:0地址的内存内容为55AA,在另一个debug中查看时发现内容并不是55AA,说明他们是不同的环境。windows只是为了兼容DOS和Win16程序才建立了这种模拟环境。毕竟windows不会让程序真的有权限直接修改计算机,而且windows下的中断向量表并不是从0000:0开始(进一步说明这是个模拟环境)。
但是这仅仅是我学习了win32汇编后的猜想。感觉能说通一些问题。求大神指点~~~{:1_1:}

忘掉自私非爱人 发表于 2013-11-9 10:01:22

yinyuepingguo 发表于 2013-11-8 21:30 static/image/common/back.gif
我的理解是我们现在的编程环境是windows,每次我们调用debug或者使用16位汇编,windows都会为我们模拟出来一 ...

看懂了谢谢   我按照你说的在同一个DOS下运行了自己编写的中断成功了用不同的窗口就不行果然如大神所说啊

yinyuepingguo 发表于 2013-11-9 10:34:40

忘掉自私非爱人 发表于 2013-11-9 10:01 static/image/common/back.gif
看懂了谢谢   我按照你说的在同一个DOS下运行了自己编写的中断成功了用不同的窗口就不行果然如 ...

哈哈,我之前的理解也不完全对,又试了一次,感觉理解的更准确了。
页: [1]
查看完整版本: 在学了鱼老师的中断后我有这样的疑问