首页
社区
课程
招聘
[旧帖] 汇编数组的寻址问题 0.00雪花
发表于: 2010-8-31 10:35 1065

[旧帖] 汇编数组的寻址问题 0.00雪花

2010-8-31 10:35
1065
在加密与解密第三版83页有这样一段代码:
00401000          sub        esp, 0C                                            ;为局部变量b[i]分配内存
  00401003          xor        ecx, ecx                                            ;s=0
  00401005          xor        eax, eax                                           ;i=0
  00401007          push      esi
  00401008          push      edi
  00401009          /mov      edi, dword ptr [eax+407030]          ;407030指向数组a[]
  0040100F          |add       eax, 4                                              ;访问数组的索引
  00401012          |add       ecx, edi                                            ;s=s+a[i]
  00401014          |cmp       eax, 0C
  00401017          |mov       dword ptr [esp+eax+4],  ecx           ;b[i]=s
  0040101B          \jl            short  00401009

不明白00401017处为什么要加4。谁能讲讲,谢谢

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 187
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
书上注释的不是很清楚吗?你看源程序for循环中 b[i]=s 这句就是把当前累加值放到开辟的b[]数组内存中。这下应该明白了吧~不明白我也没办法了~
2010-8-31 10:59
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我的意思是在分配数组b的空间后只有esi和edi压栈,应该是加2啊。为什么会加4,堆栈中还有8字节是什么
2010-8-31 12:31
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
00401007          push      esi   ;esp减4,不是减1
00401008          push      edi   ;esp减4,不是减1

然后用eax来传递数组下标i
2010-8-31 13:32
0
游客
登录 | 注册 方可回帖
返回
//