鱼C论坛

 找回密码
 立即注册
查看: 2186|回复: 2

Win32汇编的小问题

[复制链接]
发表于 2012-5-28 01:46:34 | 显示全部楼层 |阅读模式
1鱼币
        mov   eax,BITMAPFILEHEADER.bfoffBits [esi]
        这句代码 后面的[esi]是什么意思? 是在前面的结构地址 加上 esi的偏移的意思,还是很什么别的意思?
        求解。。。。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-28 11:21:34 | 显示全部楼层
本帖最后由 fujian810 于 2012-5-28 11:25 编辑

我在BITMAP.RAR中的hello.asm中测试了这句话:
mov                esi,offset stBitmapFileHeader
mov                eax,[esi].BITMAPFILEHEADER.bfOffBits
                mov                ebx,[BITMAPFILEHEADER.bfOffBits+esi]
                mov                eax,BITMAPFILEHEADER.bfOffBits[esi]
通过反汇编(OD),可以看到这几句话实际是等效的,就是将stBitmapFileHeader.bfOffBits复制给eax,这里顺便指出下书中和MSDN的不同之处,书中BITMAPINFOHEADER结构体长度为36(24h),MSDN中BITMAPINFOHEADER结构体长度为40(28H),实际找了个BMP图片(rar中有),用UE打开可以看出,BITMAPINFOHEADER结构体长度为40(28H),以MSDN为准。

BITMAP.rar

386.03 KB, 下载次数: 0

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-28 11:22:26 | 显示全部楼层
如果我没说错的话,esi表示的是下标!BITMAPFILEHEADER表示一个结构,然后bfoffBits 是这个结构中的数组的数组名,esi表示下表!BITMAPFILEHEADER.bfoffBits [esi]表示,结构中数组bfoffBits中下标为esi的元素值!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 06:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表