![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 08:43 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » 转贴:解决DOS命令的版本不兼容问题 |
| 可打印版本 1,382 / 0 |
| 第1楼 MYS | 发表于 2003-04-09 00:00 |
| 元老会员 发帖 1,637 积分 5,170 来自 广东佛山 | |
|
转贴:解决DOS命令的版本不兼容问题 解决DOS的版本不兼容
发信站: 网易虚拟社区 (Mon Aug 9 22:12:11 1999), 站内信件 在报纸上曾得到一个解决DOS的版本不兼容的方法: C:\PAHT\DEBUG.COM PROGRAM 由 R 指令可得寄存器 BX 与 CX 的数值, 使用(S B4 30)语句可得到一个或多个数值; 对得到的进行反汇编;可找到以下的类似句子: DS:IP B430 MOV AH,30 DS:IP CD21 INT 21 DS:IP 3Dxxxx CMP AX,XXXX <- XXXX为版本号,如1E03是3. 30版 DS:IP ..... JZ XXXX 可自行修改为其他版本. ^^ 其中03为主版本,1E为次版 本30 或是自己使用A | 的16进制代码.3Dxxxx则比 较AX 指令修改条件转| 内的数值是否为031E. 移语句. | 后来,发现这个方法太麻烦,我就改为这样修改: DS:IP B430 MOV AH,30 <- 改为 MOV AH,XXXX DS:IP CD21 INT 21 <- 改为 NOP DS:IP 3Dxxxx CMP AX,XXXX DS:IP ..... JZ XXXX 其中,原理相同.第1种是改条件语句,第2种是改获取版本为放入版本号. 再后来,用DEBUG实在是辛苦,我就用16进制编辑工具修改: 查找字串“B4 30 CD 21”,若后面跟着一串“0A 07”(WIN98的DOS版本是7.10)或 是“16 06”(DOS的版本6.22),就把字串“B4 30 CD 21”改为“B8 0A 07 90” (WIN98的程序)或是“B8 16 06 90”(DOS622的程序);有时这样改后反而运行时出 现DOS版本错误的信息时,则应该把“B8 0A 07 90”或“B8 16 06 90”改为“B 8 07 0A 90”或“B8 06 16 90”,后就一定会成功的。 事实上,这种方法和第2种方法在本质上是一样的。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |