C语言怎样直接读写硬件?

C语言怎样直接读写硬件?比如. 按下一个键盘.会把键盘信息发送给CPU处理.怎么在它发送过程直接获取这个信息? 给点思路也行。。

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;
}

//---------------------------------------------------------------------------

//写端口

//port参数为输出端口地址,value参数为输出值
void __fastcall outportb(unsigned short int port,unsigned char value)
{
__emit__(0x8b,0x95,&port); //把端口地址送到EDX寄存器中
__emit__(0x8a,0x85,&value); //把value送到AL寄存器中
__emit__(0x66,0xee); //把AL寄存器中的值写入端口
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-10
通过bios,有个函数的原型是int key()
{
union REGS rg;
rg.h.ah=0;
int86(0x16,&rg,&rg);
return rg.h.ah;
},可以读键盘,键盘码如#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_ENTER 28
#define KEY_H 35
#define KEY_I 23
#define KEY_M 50
#define KEY_S 31
#define KEY_E 18这样定义
第2个回答  2013-07-10
VC里有相关空间啊

c语言可以直接对硬件进行操作吗
C语言确实能够直接对硬件进行操作,这种能力使得它在嵌入式系统开发中极为重要。通过使用指针,开发者可以直接访问内存地址,进而与硬件进行交互。例如,若要修改某个硬件设备的设置,只需将指针指向该设备的地址,并通过指针写入相应的数据即可。这种直接操作硬件的方式,在需要与外部硬件设备进行通信的应用程...

C语言竟是如何调用硬件
硬件会把硬件上的各种寄存器(外行可以理解为访问硬件的接口或者操作硬件的工具)映射到某一块内存地址空间上,之后只要用汇编指令,甚至C语言去读写这一段内存地址空间(并非真正操作物理内存),就可以达到操作硬件的目的了。 如果题主还有WindowsXP环境(虚拟机也可以),就可以用汇编指令直接操作显存: MOV AX,B800 MOV ES...

求助:怎么用C语言去读硬件寄存器的值
硬件寄存器一般都有相应的访问地址,就象随机存储器一样,找到这个地址,用指针访问这个地址的单元,就可以进行读写了。比如:假定某寄存器地址为800100H,寄存器是16位的,则将这个寄存器最低位翻转的程序为 unsigned short int *pR=(unsigned shrot int *)0x800100;(*pR)^=0x01;

c语言可以直接对硬件进行操作吗
c语言不可以直接对硬件进行操作。不可行首先,C语言不能够直接对硬件进行操作。从本质上来说,连汇编语言都不可以。只有机器语言能够直接操作硬件。其次,C语言要操作硬件是必须经过一系列的编译转换。最终它会成为0101的机械码,这个时候它根本不是我们所能够理解的C语言了。

C语言能对硬件直接操作是什么意思,小弟初学者,请高手解答!非常感谢...
C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言。也就是说,C语言可以直接对物理地址进行操作。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。在计算机中,所有的数据都是...

汇编语言可以对硬件直接进行操作是什么意思? C语言可以吗?
因所有语言都最后要转换成机器码,因计算机只会按这机器码进行运行,而汇编语言就是这机器码的助记符(帮助记忆的符号),所以它就是直接可操作机器的语言。C语言是一种中级语言,它也可进行机器的直接操作,只是还要经过一些设置或转换才行。

什么C语言编译器编译出的程序能直接在裸机上
首先 C语言是直接编译成二进制语言的,也就是机器语言 不需要任何的其它环境就可以被硬件识别 也就是说 CPU可以直接识别出C语言编译出的程序要做什么。其次,C语言是直接面向硬件的,可以不需要任何其它辅助,直接操作硬件,包括寄存器和物理内存 所以即使没有操作系统,没有任何软件,C语言程序也可以直接...

c语言怎么进行硬件编程
C语言确实是有汇编的特点,但不能对硬件直接进行操作. 必须通过编译和连接后产生(.EXE)文件才可以间接操作系统.理论上是C语言编辑---编译---连接---这几个步骤后生成机械指令(这里指二进制指令)才可以间接操作系统.显示器,打印机,硬盘,键盘都是通过:C语言编写的驱动程序再调用设备的.还有别的问题吗...

C语言怎么写直接在硬件上运行的代码
没有任何操作系统可以完全由高级语言来编写。直到现在Linux依然有10%到20%的底层系统是由汇编语言来写。这部分负责直接参与分配内存和控制CPU工作分配,而这些工作是C无法做到的。单片机里存有已经用汇编语言所写的C语言的运行系统,所以可以直接调用。如果你在一台没有安装任何系统的电脑上运行C程序是绝对...

为什么说C语言是直接对硬件操作的语言?
而C语言介于高级和低级之间,代码容易理解,还可以用指针操纵硬件(不过还是很局限的,CPU就无法之间操纵了),执行效率为80%,对于一直语言来说很不错了。Basic语言完全是高级语言,代码简单,但是不具备操纵硬件能力,也就是你想写个代码直接让内存怎么怎么样,内存不听你的,只听编译好的程序的。而且执...

相似回答