dos程序添加字节??
debug吧
全部回复
仅看楼主
level 1
xinqan 楼主
我有一个在dos下的程序。想改里面一个词,由于新的单词比原来的长,原来的单词前后有没有00字节。直接插入的话会导致程序无法运行。
2009年04月07日 00点04分 1
level 6
内存分布
=====旧单词-----
将旧单词前面的=====截下来保存成part1.bin
将旧单词后面的-----截下来保存成part2.bin
然后可使用debug:
1. debug part1.bin
2. r (查看bx:cx--->part1.bin的大小,假如bx为0,cx为310)
3. e 310 'newworld'(新单词)
4. n part2.bin
5. l 318 (318=310 + newworld的字节数8)
6. r (查看此时的bx:cx,假如bx为0,cx为510)
7. n c:\ok.exe
8. r cx (将cx的值改成828 (820=310 + 8 +510)
9. w ds:100
2009年04月11日 04点04分 2
level 6
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AFD ES=0AFD SS=0AFD CS=0AFD IP=0100 NV UP EI PL NZ NA PO NC
0AFD:0100 42 INC DX
-rcx
CX 0000
:828
-e 310 'newworld'
-d 310 31f
0AFD:0310 6E 65 77 77 6F 72 6C 64-8B C8 49 26 8A 05 47 0A newworld..I&..G.
2009年04月11日 04点04分 3
level 6
极有可能影响到里面的跳转
2009年04月11日 05点04分 4
level 0
对不起啊 我是新手 我在debug 里面得到的 cx值 有字母在里面 比如 cx=E942
2009年04月11日 11点04分 5
level 6
E942是十六进制值
转换成十进制就是59714
2009年04月14日 03点04分 6
level 6
debug里面是使用十六进制来表示数据的
2009年04月14日 03点04分 7
level 6
俺所举的例子中310 , 8 , 510也都是十六进制数
2009年04月14日 04点04分 8
level 6
或者你可以用win系统自带的calc.exe来算一下
开始/运行/calc
2009年04月14日 04点04分 9
level 0
谢谢 
问题又来了 debug 里 BX值不是 0 有什么关系吗?
我到了
-r cx 
CX CA95 
:1B403
显示错误?
2009年04月14日 20点04分 10
level 7
cx为16寄存器
能表示的最大值为ffff
1b403大于ffff
rcx-->b403
rbx-->1
bx:cx-->高16位:低16位
2009年04月15日 01点04分 11
level 0
不行啊 还是显示错误 不如帮我看看原程序吧 。http://www.namipan.com/d/12.rar/7c6e3bf79a5c7ec5d136c0154a8f744fe9cf7f4efa590200 
我想在 头一个 RESTAURANT O K E T A 后面加 入 59964
谢谢
2009年04月15日 21点04分 12
level 7
晕死
俺还以为你是用汇编写滴
2009年04月16日 01点04分 13
1