首页
社区
课程
招聘
汇编语言问题.
发表于: 2007-2-11 16:55 3684

汇编语言问题.

2007-2-11 16:55
3684
mov     bl, byte ptr [edi+40632D]

请问一下 EDI+40632D 是怎么加? 40632D 是个地址啊
把地址里的数据加到EDI 里在传送到BL?

但是我怎么知道40632D里面的数据是什么呢??

看算法的时候老是碰到这样的指令.真头疼

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 248
活跃值: (1056)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
[edi+40632D]是地址,040632D可看作基址,EDI可看作偏移量。
在32位的系统中,[edi+40632D]地址存放也是32位的数,四个字节(0ffddaabbH)。
    [edi+40632D]
         |
     1  2  3  4
     FF DD AA BB
如果[edi+40632D]作起点,取第一个字节,mov bl, byte ptr [edi+40632D+0] ; bl=FF
                        取第二个字节,mov bl, byte ptr [edi+40632D+1] ; bl=DD
                        取第三个字节,mov bl, byte ptr [edi+40632D+2] ; bl=AA
                        取第四个字节,mov bl, byte ptr [edi+40632D+3] ; bl=BB
例如:
.data
     someValue dd 0aabbccddh
.code
        lea edi,someValue ;取地址
        ;INTEL结构中,采用反序存放(little Endian),Motorola结构中,采用正序存放(big Endian)。
        mov al,byte ptr [edi+0] ; 取第一个字节, al=dd
        mov al,byte ptr [edi+1] ; 取第二个字节, al=cc
        mov al,byte ptr [edi+2] ; 取第三个字节, al=bb
        mov al,byte ptr [edi+3] ; 取第四个字节,al=aa
2007-2-11 20:01
0
雪    币: 309
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
真太谢谢..明白了
2007-2-12 10:27
0
游客
登录 | 注册 方可回帖
返回
//