lilililili 发表于 2012-5-28 01:46:34

Win32汇编的小问题

      mov   eax,BITMAPFILEHEADER.bfoffBits
      这句代码 后面的是什么意思? 是在前面的结构地址 加上 esi的偏移的意思,还是很什么别的意思?
      求解。。。。

fujian810 发表于 2012-5-28 11:21:34

本帖最后由 fujian810 于 2012-5-28 11:25 编辑

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

xiaolongxia 发表于 2012-5-28 11:22:26

如果我没说错的话,esi表示的是下标!BITMAPFILEHEADER表示一个结构,然后bfoffBits 是这个结构中的数组的数组名,esi表示下表!BITMAPFILEHEADER.bfoffBits 表示,结构中数组bfoffBits中下标为esi的元素值!
页: [1]
查看完整版本: Win32汇编的小问题