求助:怎么用C语言去读硬件寄存器的值

fergie2003 2010-07-17 10:58:47
如题。希望各位高手给予解答,不胜感谢!
...全文
616 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yl_lex072056232 2012-06-12
7 楼的 有用, 学习下。
  • 打赏
  • 举报
回复
疯癫小程序 2010-07-23
我再贴一个:
main()
{
_AX=1;
_BX=1;
_CX=2;
_AX=_BX+_CX;
_AH=_BL+_CL;
_AL=_BH+_CH;
}
  • 打赏
  • 举报
回复
疯癫小程序 2010-07-23
[Quote=引用 5 楼 tr0j4n 的回复:]
引用 3 楼 helonsy 的回复:

in al,端口号
mov al,你要输入的值
out 端口号,al

ps:C和汇编可以混合编译的。

端口是端口,寄存器是寄存器
[/Quote]
主席,其实端口就是外设芯片里的寄存器,不是吗?我前段时间从王爽汇编语言里就看到了啊。。。。
  • 打赏
  • 举报
回复
Sou2012 2010-07-23
学习了。
  • 打赏
  • 举报
回复
neocane 2010-07-23
硬件所指不同, 方法不同吧.
如果是外围设备要CreatFile然后DeviceIOContrl.
  • 打赏
  • 举报
回复
xmzzy 2010-07-23
Mark,学习
  • 打赏
  • 举报
回复
另外补充 硬件的寄存器嘛
有好几种形式吧,pci形式的,得以pci方式的读,isa port得以isa 方式读,还有一种是用i2c去读
象cpu的reg 就得用cpuid msr pci这三种方式,
  • 打赏
  • 举报
回复
lz 以语言如果在dos下面,就可以,在windows下面就不可以,在linux下面也可以
就是out in这些函数而已

这些函数也可以用汇编实现,给你一段汇编的函数


UINT8 IoRead8(UINT16 Port)
{
_asm {
mov dx, Port
in al, dx
}
}

void IoWrite8(UINT16 Port,UINT8 Value)
{
_asm {
mov dx, Port
mov al, Value
out dx, al
}
}

比如读我们的com port 一般为 0x3f8

UINT8 value=IoRead8(0x3f8);


windows下面,要有驱动啊,没有驱动,就没法啊
  • 打赏
  • 举报
回复
MoXiaoRab 2010-07-21
[Quote=引用 3 楼 helonsy 的回复:]

in al,端口号
mov al,你要输入的值
out 端口号,al

ps:C和汇编可以混合编译的。
[/Quote]
端口是端口,寄存器是寄存器
  • 打赏
  • 举报
回复
MoXiaoRab 2010-07-21
GetThreadContext
  • 打赏
  • 举报
回复
疯癫小程序 2010-07-20
in al,端口号
mov al,你要输入的值
out 端口号,al

ps:C和汇编可以混合编译的。
  • 打赏
  • 举报
回复
LZNJ06 2010-07-20
硬件寄存器有地址吧,用指针去取该地址的值不就可以了吗?
  • 打赏
  • 举报
回复
zwfgdlc 2010-07-17
这样算不算。

INT a, b, c, d;
__asm
{
mov a, eax
mov b, ebx
mov c, ecx
mov d, edx
}
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2010-07-17 10:58
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……