C语言怎样直接实现控制硬件

C语言怎样直接实现控制硬件,比如C语言中的printf(),这个函数本身使用C语言编写的,但是C语言本身并没有直接控制硬件的指令,那么printf这个函数是不是用汇编语言编写的或者是用C语言中的位运算编写的?

    如果是电脑程序的话,譬如你在vc6.0里面c语言里面编写一个程序,那么vc6里面的编译器会把你的c语言语句按照对应的关系翻译成你计算机能识别的计算机语句,然后你电脑cpu会按照这些指令来控制你的硬盘,内存读写之类的硬件操作。

    如果是单片机之类的话,譬如你在keil里面用c语言编写了一个单片机程序,那么keil的编译器会把你的c语言程序编写成汇编语言程序文件,然后把那个汇编程序文件烧到单片机芯片上就可以让芯片按照指令工作了。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-08
如何对硬件进行控制是由操作系统管理的,操作系统提供一些系统调用供用户程序使用。操作系统本身可由高级语言编写,但须经编译成为机器语言后计算机才能识别并执行。
如你所说的printf(),这个函数本身也是由C语言编写,但里面会有一个有关输出的系统调用,当执行到系统调用时,将有操作系统完成具体的输出工作追问

操作系统中直接控制硬件的程序是用汇编语言编写的吗?这样的话能够控制硬件的只有汇编语言啊?

追答

早期操作系统是由汇编写的,后来便使用如C一类的高级语言编写。一种语言是否能直接控制硬件主要看他本身是否提供硬件控制的语句和其编译器如何翻译该程序。如C本身没有硬件控制语句,但在某些特殊IDE中仍可使用C语言进行硬件控制,如单片机编程多用C语言

本回答被提问者采纳
第2个回答  2011-07-06
主要通过对硬件接口地址的读(取数据)写(发命令)操作,使用函数(8位读写)inportb(int port); outportb(int port, char byte);(16位读写)inportw(unsigned short int port);outportw(unsigned short int port, unsigned short int value)。在VC下分别用_inp()和_outp代替。追问

我想知道C语言如果不调用任何库函数怎样实现控制硬件,能不能用位运算实现?具体怎样实现

追答

位运算也是在端口读写的基础上,如对某位置0或1,需要通过与或关系再移位得到。

第3个回答  2011-07-06
不能 C语言设计为跨平台编译 不可能有直接硬件操纵指令
相似回答