daphant
驱动牛犊
驱动牛犊
  • 注册日期2001-10-17
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望14点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1350回复:2

怎样读寄存器的值?

楼主#
更多 发布于:2001-10-19 16:38
请问怎样通过汇编或是C语言读出寄存器的值,并能生成.DLL文件,谁能告诉我具体的做法?
Netguy
驱动牛犊
驱动牛犊
  • 注册日期2001-04-02
  • 最后登录2012-05-25
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望17点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-10-19 17:38
读什么寄存器?一般的用MOV指令即可。
lusongmin
驱动牛犊
驱动牛犊
  • 注册日期2007-01-06
  • 最后登录2007-01-19
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-10 16:06
BCB中利用__emit__函数可以直接将二进制程序代码嵌入程序中,这样就可以实现一些底层的操作。由于直接操作系统底层,这种方法可能会导致系统的不稳定。

下面是利用__emit__函数读写硬件端口的方法。

//读端口
//port参数为输入端口地址,value为返回值.
unsigned char __fastcall inportb(unsigned short int port)
{
unsigned char value;
__emit__(0x8b,0x95,&port); //把端口地址送到EDX寄存器中
__emit__(0x66,0xec); //从端口中读入数据到AL寄存器中
__emit__(0x88,0x85,&value); //把AL寄存器中的值辅给value
return value;
}
游客

返回顶部