+ -
当前位置:首页 → 问答吧 → 这段汇编为什么造成不能访问数组?

这段汇编为什么造成不能访问数组?

时间:2010-11-30

来源:互联网


  DWORD GetCRC32(const BYTE *pbData, int nSize,
  DWORD dwCRC32Table[256]//这个在调用的函数中已经定义好赋初值
  ){
  ShowMessage(dwCRC32Table[0]);//这个正常没有问题
  __asm
  {
  MOV ECX, 256

  _NextTable:
  LEA EAX, [ECX-1]
  PUSH ECX
  MOV ECX, 8

  _NextBit:
  SHR EAX, 1
  JNC _NotCarry
  XOR EAX, 0xEDB88320
  _NotCarry:
  DEC ECX
  JNZ _NextBit

  POP ECX
  MOV [dwCRC32Table + ECX*4 - 4], EAX
  DEC ECX
  JNZ _NextTable
  }
  ShowMessage(dwCRC32Table[0]);//这里运行时出错
}

作者: kfrght   发布时间: 2010-11-30

出错,那应该是上面的汇编修改了 dwCRC32Table[0] 的内容至无效值?进调试软件里,在最后这个 ShowMessage() 上停下来,看看这时 dwCRC32Table[0] 的内容是否和预想的一致。

作者: zara   发布时间: 2010-12-01