| 
 
20024804 
新手上路
 
 
 
  
  
积分 14 
发帖 6 
注册 2005-12-31 
状态 离线
 | 
『楼 主』:
 16位dos汇编的棘手问题
 
使用 LLM 解释/回答一下
  
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下却会出错.可是理论上不该出错的 
 
    
 
  
 |   
 | 
  2007-6-13 03:17 | 
  
 | 
 | 
 
20024804 
新手上路
 
 
 
  
  
积分 14 
发帖 6 
注册 2005-12-31 
状态 离线
 | 
『第 2 楼』:
 
 
使用 LLM 解释/回答一下
  
运行环境特殊,这只是部分测试代码 
好像单独放出来不会出错 
现在怀疑是调试器td的问题 
如有哪位明白dos是如何截获非法指令的或者dos是如何修改内存布局的(dos7.1把高端内存移到低端等)请跟帖 
 
    
 
  
 |   
 | 
  2007-6-13 04:27 | 
  
 | 
 | 
 
本是 
银牌会员
 
     
 
  
  
积分 2221 
发帖 789 
注册 2005-1-27 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
INT 6是处理非法指令的中断,KILLER.EXE能截获非法指令,但它是直接返回DOS。当然,也可能将处理改成忽略错误、继续执行。如果需要改,发站内短信。 
 
    
 
  
  |  
                  
  
                    my major is english----my love is dos----my teacher is the buddha----my friends--how about U |   
 | 
  2007-6-13 08:25 | 
  
 | 
 | 
 
本是 
银牌会员
 
     
 
  
  
积分 2221 
发帖 789 
注册 2005-1-27 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
INT 6是处理非法指令的中断,KILLER核心中断处理我可以只用2个字节,继续执行的处理只需1个字节。加上驻留预处理,总共只需3、40字节。当然是不带版本、作者信息的纯执行核心版! 
 
 Last edited by 本是 on 2007-6-13 at 08:30 AM ] 
 
    
 
  
  |  
                  
  
                    my major is english----my love is dos----my teacher is the buddha----my friends--how about U |   
 | 
  2007-6-13 08:26 | 
  
 | 
 | 
 
20024804 
新手上路
 
 
 
  
  
积分 14 
发帖 6 
注册 2005-12-31 
状态 离线
 | 
 | 
  2007-6-13 13:41 | 
  
 | 
 | 
 
20024804 
新手上路
 
 
 
  
  
积分 14 
发帖 6 
注册 2005-12-31 
状态 离线
 | 
『第 6 楼』:
 
 
使用 LLM 解释/回答一下
  
不能上传附近 
现在极度怀疑是td的bug 
因为恰好引起down机的非法指令在两条指令之后 
当前的mov sp指令是绝对不会有问题的 
 
    
 
  
 |   
 | 
  2007-6-13 14:36 | 
  
 | 
 | 
 
本是 
银牌会员
 
     
 
  
  
积分 2221 
发帖 789 
注册 2005-1-27 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
应该说,SP的修改有时会对调试器产生致命“打击”,我以前也碰到过实机正常运行的程序引起调试器或虚拟机shutdown的情况。 
 
    
 
  
  |  
                  
  
                    my major is english----my love is dos----my teacher is the buddha----my friends--how about U |   
 | 
  2007-6-13 15:06 | 
  
 | 
 | 
 
本是 
银牌会员
 
     
 
  
  
积分 2221 
发帖 789 
注册 2005-1-27 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
1楼的代码编译执行在2003的CMD窗口,得到出错信息: 
90 BA 
FCB unailable 
Abort, Fail? 
 
但加一行INT 20H就能正常执行。 
 
    
 
  
  |  
                  
  
                    my major is english----my love is dos----my teacher is the buddha----my friends--how about U |   
 | 
  2007-6-13 15:15 | 
  
 | 
 | 
 
20024804 
新手上路
 
 
 
  
  
积分 14 
发帖 6 
注册 2005-12-31 
状态 离线
 | 
 | 
  2007-6-13 20:00 | 
  
 | 
 | 
 
20024804 
新手上路
 
 
 
  
  
积分 14 
发帖 6 
注册 2005-12-31 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
抱歉,那只是部分代码片段 
如果要这段代码不出错,加个 
mov ah,4ch 
int 21h 
也可以的 
 
    
 
  
 |   
 | 
  2007-6-13 20:01 | 
  
 | 
 | 
 
henrya2 
中级用户
 
   
 
  
  
积分 486 
发帖 171 
注册 2006-2-12 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
把完整的源代码贴出来 
 
另外你是用什么模式编译的,最好把Stack段定义贴出 
 
    
 
  
  |  
                  
  
                    Those who do not study the past are condemned to repeat it |   
 | 
  2007-6-15 21:19 | 
  
 | 
 | 
 
henrya2 
中级用户
 
   
 
  
  
积分 486 
发帖 171 
注册 2006-2-12 
状态 离线
 | 
『第 12 楼』:
 
 
使用 LLM 解释/回答一下
  
我在Virtual PC用DOS的DEBUG命令调试好像没有问题. 
 
    
 
  
  |  
                  
  
                    Those who do not study the past are condemned to repeat it |   
 | 
  2007-6-15 21:26 | 
  
 | 
 | 
 
henrya2 
中级用户
 
   
 
  
  
积分 486 
发帖 171 
注册 2006-2-12 
状态 离线
 | 
『第 13 楼』:
 
 
使用 LLM 解释/回答一下
  
稍加修改了一下代码,用Tiny模式(COM文件)编译 
我在Virtual PC用td调试没问题???? 
 
    
 
  
  |  
                  
  
                    Those who do not study the past are condemned to repeat it |   
 | 
  2007-6-15 21:35 | 
  
 | 
 | 
 
henrya2 
中级用户
 
   
 
  
  
积分 486 
发帖 171 
注册 2006-2-12 
状态 离线
 | 
『第 14 楼』:
 
 
使用 LLM 解释/回答一下
  
没有给出完整的源代码和编译模式和调试环境,我也是刚学汇编语言.实在不明白 
 
    
 
  
  |  
                  
  
                    Those who do not study the past are condemned to repeat it |   
 | 
  2007-6-15 21:36 | 
  
 | 
 | 
 
henrya2 
中级用户
 
   
 
  
  
积分 486 
发帖 171 
注册 2006-2-12 
状态 离线
 | 
『第 15 楼』:
 
 
使用 LLM 解释/回答一下
  
怎么我不管怎么样单步,断点,直接运行,td都没有出错???????????????? 
 
    
 
  
  |  
                  
  
                    Those who do not study the past are condemned to repeat it |   
 | 
  2007-6-15 21:41 | 
  
 |