x86平台下关于读写寄存器,喂看门狗的问题

returntorres 2012-09-15 11:14:00
是这样的,小弟我是搞软件的,完全不懂硬件,现在接着一个任务需要访问寄存器,定期喂看门狗。程序运行在x86平台下,windows操作系统,然后主板上已带有看门狗, 我只需激活并定期喂它即可。
我要定期往寄存器上写东西, 可是小弟我是搞软件的, 寄存器对我来说就是eax ,ebx, esp ... 之类的, 对于下面的描述完全不懂,大家帮忙看看:

1)IO 访问往地址0x2E写数值0x87,连续写入两次:
IoWrite8(0x2E,0x87);
IoWrite8(0x2E,0x87);
2)选择Watch Dog逻辑设备并激活Watch Dog(设置0x30寄存器的bit0即可):
IoWrite8(0x2E,0x07);
IoWrite8(0x2F,0x08); //逻辑设备0x08

IoWrite8(0x2E,0x30);
IoWrite8(0x2F, (IoRead8(0x2F)| 0x01)); //激活Watch Dog
3)设置Watch Dog计数单位为分钟还是秒钟(设置0xF5寄存器的bit3即可):
IoWrite8(0x2E,0xF5);
IoWrite8(0x2F,(IoRead8(0x2F)& 0xF7)); //这里以秒钟计数为例(设置bit3为0),分钟则设置bit3为1即可
4)设置计数时间(往0xF6写所需要的时间值即可):
IoWrite8(0x2E,0xF6);
IoWrite8(0x2F,value); //value为所设置的时间值大小
5)退出IO访问:
IoWrite8(0x2E,0xAA);


疑问如下:
这里地址指的是什么地址? 我怎么能访问到呢?
这里的寄存器指的是什么?为什么不是eax,ebx...什么的。
这里给的是伪代码,我怎么能真正的访问到呢? 准备用c或者汇编写。
流程很简单,就是概念我不清楚,望前辈解答!感谢了!
...全文
632 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赤裸小猪 2014-04-22
  • 打赏
  • 举报
回复
我也在写类似的东西,使用WINIO写了,喂狗程序不成功,电脑总是重启,楼主的循环喂狗是怎么写的啊?
returntorres 2012-09-17
  • 打赏
  • 举报
回复
不好意思,帖子结晚了, WINIO可行, 感谢两位, 结贴!
schlafenhamster 2012-09-15
  • 打赏
  • 举报
回复
主板上已带有看门狗,就是有驱动程序了
hdg3707 2012-09-15
  • 打赏
  • 举报
回复
windows操作系统不能直接操作硬件,因此你需要用WINIO这个库进行操作硬件,你从网上下个最新的WINIO这个库,并执行这个库的驱动,然后你就调用WINIO这个库函数进行操作硬件端口,具体用法你从网上可以查到
schlafenhamster 2012-09-15
  • 打赏
  • 举报
回复
看看‘看门狗’资料,
以地址表示的寄存器,只是硬件的一种说法。(叫口地址更好)
嵌入式CPU中寄存器是可以 以地址寻址的。
X86的寄存器是以名(EAX。。。)寻址的

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧