. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  哪位高人帮帮忙,急. 万分感谢!!  [待解决] 回复[ 2次 ]   点击[ 380次 ]  
frogoscar
[帖 主]   [ 发表时间:2011-06-20 17:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53
请教:我在虚拟dos里运行15.5的改变屏幕显示颜色的那个exe文件(当然编译链接后),程序直接退出。debug单步跟踪的话,到mov word ptr es:[9*4],204h就出错了。
然后因为书上说:本章中所有关于键盘的程序,...必须在dos实模式下运行。所以我就参考http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1002&qkSg=2&qID=35612&readSg=1
这篇帖子内容安装了virtual PC,什么都弄好了。然后用共享文件把我window xp里的masm工具包拷贝到virtual PC的dos里面,然后用masm编译链接f1.asm,生成f1.exe文件(f1是我随便取的名字),但是为什么我 C:>\asm\f1.exe,dos就直接退出到C:>\asm\,然后还卡住不能输入任何字符,必须重启dos7.1。好奇怪捏,为什么没出效果,就直接退出到C:>\asm\?
我网上也找了下,但还没找到解决办法。
请问您知道不?多谢啦!
急啊,学到15章就卡在这里了。万分感谢!!
miaoasm
[第1楼]   [ 回复时间:2011-07-24 13:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-06-13 15:40
出错的那一句,是更改int9的IP
int9 是响应键盘输入的中断,他本来是在某个 CS:IP里存储的一段程序

执行到错误的那句时,该中断的 IP被更改了,INT9中断,就不再指向那段程序了

而你DEBUG的时候, 又发生了键盘输入,此时响应中断,就会进入的一段错误的程序中,就会产生错误。

如果不单步运行,而是直接运行,我想就不会出现错误了。

以上是我的理解,我现在再做一遍这个实验,做完了再给你个答复~
miaoasm
[第2楼]   [ 回复时间:2011-07-24 14:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-06-13 15:40
我刚做完15.5,应该就是这个原因
DEBUG 按  -T 的时候,触发了 键盘中断,
而你执行那句话的时候,原键盘中断的入口地址已经被改变了,
所以就会没有反应

我这个成功了以后,也只有直接运行程序,才能看到效果
DEBUG也会出错误
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved