![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-30 17:22 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,279 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » 16位dos汇编的棘手问题 |
| 可打印版本 3,708 / 22 |
| 第1楼 20024804 | 发表于 2007-06-13 03:17 |
| 新手上路 发帖 6 积分 14 | |
|
16位dos汇编的棘手问题 mcode segment
assume cs:mcode start: main: mov sp, 0000h mov sp, 2000h mov sp, 5000h mov sp, 0a000h mov sp, 0f000h mov sp, 0fffeh mcode ends end start 这个程序很奇怪,在windows下的dos可以运行,可是在真正的纯dos下却会出错.可是理论上不该出错的 |
|
| 第2楼 20024804 | 发表于 2007-06-13 04:27 |
| 新手上路 发帖 6 积分 14 | |
|
运行环境特殊,这只是部分测试代码
好像单独放出来不会出错 现在怀疑是调试器td的问题 如有哪位明白dos是如何截获非法指令的或者dos是如何修改内存布局的(dos7.1把高端内存移到低端等)请跟帖 |
|
| 第3楼 本是 | 发表于 2007-06-13 08:25 |
| 银牌会员 发帖 790 积分 2,227 | |
|
INT 6是处理非法指令的中断,KILLER.EXE能截获非法指令,但它是直接返回DOS。当然,也可能将处理改成忽略错误、继续执行。如果需要改,发站内短信。
|
|
| 第4楼 本是 | 发表于 2007-06-13 08:26 |
| 银牌会员 发帖 790 积分 2,227 | |
|
INT 6是处理非法指令的中断,KILLER核心中断处理我可以只用2个字节,继续执行的处理只需1个字节。加上驻留预处理,总共只需3、40字节。当然是不带版本、作者信息的纯执行核心版!
[ Last edited by 本是 on 2007-6-13 at 08:30 AM ] |
|
| 第5楼 20024804 | 发表于 2007-06-13 13:41 |
| 新手上路 发帖 6 积分 14 | |
|
mov sp或者之类的修改sp的指令可能触发什么中断吗?
好像不应该触发吧 |
|
| 第6楼 20024804 | 发表于 2007-06-13 14:36 |
| 新手上路 发帖 6 积分 14 | |
|
不能上传附近
现在极度怀疑是td的bug 因为恰好引起down机的非法指令在两条指令之后 当前的mov sp指令是绝对不会有问题的 |
|
| 第7楼 本是 | 发表于 2007-06-13 15:06 |
| 银牌会员 发帖 790 积分 2,227 | |
|
应该说,SP的修改有时会对调试器产生致命“打击”,我以前也碰到过实机正常运行的程序引起调试器或虚拟机shutdown的情况。
|
|
| 第8楼 本是 | 发表于 2007-06-13 15:15 |
| 银牌会员 发帖 790 积分 2,227 | |
|
1楼的代码编译执行在2003的CMD窗口,得到出错信息:
90 BA FCB unailable Abort, Fail? 但加一行INT 20H就能正常执行。 |
|
| 第9楼 20024804 | 发表于 2007-06-13 20:00 |
| 新手上路 发帖 6 积分 14 | |
|
原来是这样啊
实在是太感谢你了 |
|
| 第10楼 20024804 | 发表于 2007-06-13 20:01 |
| 新手上路 发帖 6 积分 14 | |
|
抱歉,那只是部分代码片段
如果要这段代码不出错,加个 mov ah,4ch int 21h 也可以的 |
|
| 第11楼 henrya2 | 发表于 2007-06-15 21:19 |
| 中级用户 发帖 171 积分 486 | |
|
把完整的源代码贴出来
另外你是用什么模式编译的,最好把Stack段定义贴出 |
|
| 第12楼 henrya2 | 发表于 2007-06-15 21:26 |
| 中级用户 发帖 171 积分 486 | |
|
我在Virtual PC用DOS的DEBUG命令调试好像没有问题.
|
|
| 第13楼 henrya2 | 发表于 2007-06-15 21:35 |
| 中级用户 发帖 171 积分 486 | |
|
稍加修改了一下代码,用Tiny模式(COM文件)编译
我在Virtual PC用td调试没问题???? |
|
| 第14楼 henrya2 | 发表于 2007-06-15 21:36 |
| 中级用户 发帖 171 积分 486 | |
|
没有给出完整的源代码和编译模式和调试环境,我也是刚学汇编语言.实在不明白
|
|
| 第15楼 henrya2 | 发表于 2007-06-15 21:41 |
| 中级用户 发帖 171 积分 486 | |
|
怎么我不管怎么样单步,断点,直接运行,td都没有出错????????????????
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |