首页
社区
课程
招聘
[求助]代码改成 00 后的问题
发表于: 2007-5-19 22:05 3535

[求助]代码改成 00 后的问题

2007-5-19 22:05
3535
有一段程序是这样的
......

:00416EE6 8D8C24A4010000          lea ecx, dword ptr [esp+000001A4]
:00416EED 51                      push ecx
:00416EEE E8AD010000              call 004170A0
:00416EF3 83C404                  add esp, 00000004
:00416EF6 3BC3                    cmp eax, ebx
:00416EF8 0F84B2000000            je 00416FB0
:00416EFE 8D542418                lea edx, dword ptr [esp+18]
:00416F02 8D442458                lea eax, dword ptr [esp+58]
:00416F06 52                      push edx
:00416F07 50                      push eax
:00416F08 8D8C24BC040000          lea ecx, dword ptr [esp+000004BC]

* Possible StringData Ref from Data Obj ->"Could not get license '%s' (feature "
                                        ->"'%s')."
......

其中红色的 call 要花很长的时间去寻找网络服务器
我不想它寻找,所以把这个 call 的五个字节改成了 00
运行的时候出现程序错误,VC调试的时候

00416EED   push        ecx
00416EEE   add         byte ptr [eax],al
00416EF0   add         byte ptr [eax],al
00416EF2   add         byte ptr [ebx-3CC4FB3Ch],al

00416EF8   je          00416FB0

在 push 和 je 之间的 00 被认为是加法了
而在W32DSAM里面

:00416EE6 8D8C24A4010000          lea ecx, dword ptr [esp+000001A4]
:00416EED 51                      push ecx
:00416EEE 0000000000              BYTE  5 DUP(0)
:00416EF3 83C404                  add esp, 00000004
:00416EF6 3BC3                    cmp eax, ebx
:00416EF8 0F84B2000000            je 00416FB0

这是为什么?是我的 CPU 支持的指令集不同?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 47147
活跃值: (20465)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
不是改成00,应改成90,语句就是NOP
这个NOP表示CPU执行后,什么也不操作。
2007-5-19 22:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
果然如此,多谢坛主!
我去查查 00 是什么意思,以前学过好几种单片机的汇编语言, NOP 的机器代码都是 00 (典型的就是8051),形成习惯了
2007-5-19 22:21
0
雪    币: 247
活跃值: (42)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
NOP的机器码是00?     是什么汇编哦``我怎么不知道呢````NOP的机器码都是9090啊```
2007-5-20 00:35
0
游客
登录 | 注册 方可回帖
返回
//