leaf_75
驱动牛犊
驱动牛犊
  • 注册日期2002-05-16
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1015回复:1

问题继续

楼主#
更多 发布于:2002-05-19 16:10
  以前我是这样定义的:
   ULONG xy=READ_PORT_ULONG((PULONG)(dx->BA0+INTCSR));
   xy|=0x400000;
   dx->BA0为0xE400;INTCSR为0x3C;
   然后WRITE_PORT_ULONG((PULONG)(dx->BA0+INTCSR),xy);
   这时候寄存器中edx的值应该为  0xE43C(??);但实际上在
   softIce中看不是这个值,而是一个其他值,好象是0xE4??;
   而EAX中的值应该为xy的值,但是为0x02;用Watch看xy为OxO2;
   然后 我这样定义:
    ULONG xy=0X09;
    xy=READ_PORT_ULONG((PULONG)(dx->BA0+INTCSR));
    xy|=0x400000;
   这时 xy=0x8.......;
   请问这是softIce的问题还是什么地方的问题?

  反正我的驱动程序收不到中断
  
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-19 16:23
   ULONG xy=READ_PORT_ULONG((PULONG)(dx->BA0+INTCSR));
   xy|=0x400000;
   dx->BA0为0xE400;INTCSR为0x3C;
   然后WRITE_PORT_ULONG((PULONG)(dx->BA0+INTCSR),xy);
   这时候寄存器中edx的值应该为  0xE43C(??);
 你有什么根据来说EDX的值是0XE43C呢 ,这里EDX的值就是不应该是0XE43C,你应该看汇编代码而不应该看这个源代码,才知道为什么不是你希望的值
但实际上在softIce中看不是这个值,而是一个其他值,好象是0xE4??;
   而EAX中的值应该为xy的值,但是为0x02;用Watch看xy为OxO2;
   然后 我这样定义:
    ULONG xy=0X09;
    xy=READ_PORT_ULONG((PULONG)(dx->BA0+INTCSR));
    xy|=0x400000;
   这时 xy=0x8.......;

你为什么说这个值不对呢?也许读读来的XY值就是0X8。。。。。。
游客

返回顶部