Ⅰ c语言是如何控制硬件的
首先,以下写的东西不是复制粘贴,我会给你详细的介绍、
1,要知道,计算机的发展规律是离硬件越来越远,离人类的自然语言越来越近。为什么这么说呢。
计算机语言的发展是:机器语言,汇编语言,高级语言,第四代语言,和自然语言。。
对于机器语言,只能识别二进制。而二进制就是0和1.0和1代表的是开关。比如1代表关闭,0代表打开。那么每一台进算计的开关都不一样,也就是硬件都不一样,所以机器语言没有移植性。
对于汇编语言,就是把机器语言用助记符来代替。比如,机器语言,如果是个8位的,11001010,都很难记。更别说16位的了。那么用助记符来代替他们,会容易些。比如用add,表示加,那么不用记那么长的数了。其他的两者并没有什么太大的区别。也没有移植性。
对于高级语言,就是C语卖芦言,他具有很强的可移植性腔配旦。因为他有专门的编译器。可以把C语言编译成机器语言。所以对于高级语言,只有在编译的时候才去操宗硬件。
比如:
#include
void main()
{
int a;
a=20;
printf("a=%d\n",a);
}
这里,定义一个a是一个整型,那么硬件就分配给他4个字节或者8个字节(不同的软件不一样),那么这个就是一个硬件操纵。当然只有在编译的时候才对硬件进行操纵。
这也说明其可移植性强。因为对每一台电脑都可以这样下指令的。
再往后的第四代语言,就是面向问题的语言了。就是指需要告诉电脑需要怎么做,不需要告诉电脑应该怎么做,离硬件更远了。因为你只需要让a等于20,但不需要告诉电脑分配给a几个字节,电脑自己会搞定的。
对于自然语言就是人类自己的语言了,更不需要操纵硬件了。
其实C语言可是说是一种中级语言,既有汇编的优势,也有高级语言的优势。
像我学的单片机,用C控制流水灯伍扰的亮灭。就是直接通过C的操纵单片机的P1口引脚来进行的。有空你可以了解下。
Ⅱ 单片机问题 单片机的硬件 在c语言里面都怎么表示 c语言都通过哪些方式 控制这些硬件
在C语言里,我们一般控制的单片机硬件大多数是特殊寄存器,它们在C语言里的名称跟汇编的一样(注意是大写)。我们可以通过赋值如P1 = 0xff,来控制单片机硬件。我们也可以通过读如status = P1,来得到硬件的状态值等等。
Ⅲ 都说C语言可以直接操作硬件
不能。
首先,C语言不能够直接对硬件进行操作。从本质上来说,连汇编语言都不可以。只有机器语言能够直接操作硬件。
其次,C语言要操作硬件是必须经过一系列的编译转换。最终它会成为0101的机械码,这个时候它根本不是我们所能够理解的C语言了。
以GCC编译器为例,这个可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
最后,相对来说,C语言在高级语言当中是最贴近物理层面的语言。它也被称作高级语言里面的低级语言。因为它很多方面都非常贴近硬件。典型的就是指针,这是一种通过物理地址直接操作内存的变量。
Ⅳ c语言可以直接对硬件进行操作吗
c语昌尺清言不可以直接对硬件进行操作。
不可行首先,C语言不能够直接对硬件进行操作。从本质上来说,连汇困丛编语言都不可以。只有机器语言能够直接操作硬件。
其次耐前,C语言要操作硬件是必须经过一系列的编译转换。
最终它会成为0101的机械码,这个时候它根本不是我们所能够理解的C语言了。
Ⅳ 计算机语言(例如C语言)是如何控制硬件的
硬件主要是两种指令开关(0,1),然后由很多01组成一条指令,比如cd,然后再往上变成人能够理解的自然语言。
所以当你说你好的时候,其实计算机得到的还是无数的0101.于是这样硬件就能明白你的意图了
不知道这样解释你能否名表。
这里关键还是得有电……
Ⅵ c语言可以直接对硬件操作吗
害,这个问题怎么说呢,操作系统才是直接对硬件进行操作的,如果操作系统使用C语言编写,那么宏观上看上去就变成了C语言对硬件进行了操作,但用户编程的c语言程序是不可以直接对硬件进行操作的,必须调用操作系统提供的服务才可以对硬件进行操作,比如printf函数.
Ⅶ 如何用C语言对计算机的硬件进行控制
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
int main(int argc, char *argv[])
{
mciSendString("Set cdaudio door open wait", NULL, 0, NULL);
return 0;
}
学习一下 windows程序设计 你就知道了。就像楼上说的。windows提供了很多api函数,可以编写诸如驱动程序、防火墙、游戏等等。
Ⅷ C语言是如何控制硬件的
1.指针变量p分配在栈上,而字符串"abcdefg"分配在文字常量区。
2.是的。指针也是编译器生成的数据类型,是个长整型。
3.内存地址分为5块,堆区,栈区,全局(静态)数据区(分为未初始化和初始化区),
文字常量区,代码区。存储在不同区域的数据释放时间不同,存储在堆区的数据必须由程序员负责释放,用free或者是delete。而栈区的由系统自动释放。全局和静态的生存期就是整个程序运行期。
4.首先,概念性错误,编译器并不执行程序,执行程序的是你的系统。编译器只是实现了高级语言向机器语言的转化而已。至于计算机的工作原理,这个概念也太泛了,有硬件层也有软件层。硬件层基本也就是80x86的汇编和内存管理,软件层也就是操作系统了,请问你想知道什么?
5.a是数组名,最重要的是a是一个指针常量,你该了解了吧,常量是不能参与指针运算的,所以a++是错的。关于calloc和malloc,释放内存方面没什么区别(这个是个人观点)。
关于指针变量没有初始化的问题。其实指针本身也是个长整行的变量,他存放的地址完全可以理解为4*8的整数,那么他的分配方式也跟普通的变量一样了。如果你是全局指针,那么编译器会把它自动初始化为00000000(十六进制),如果是局部指针,那么这个量就是未知的了,根据函数堆栈有不同的结果。null也就是内存被写成了00000000(十六进制).这个空不是说不存在,而是内存被写成了4*8=32位的全0.
Ⅸ C语言是怎么操控硬件的
操作系统在 BIOS(基本输入输出系统,一般是电脑主板上的一块 ROM 芯片)程序中提供了对电脑中各种硬件设备,如显示卡、软盘、硬盘、串、并口、内存等的底层控制程序,C 语言中如果要直接操作硬件一般通过直接调用这些 BIOS 程序来实现,很少有人绕过BIOS程序直接操控硬件,当然那样做也是可以的,只不过你必须是硬件的高高手,知道如何具体去控制它。
Ⅹ 怎么用C语言编程来控制硬件如何写啊
计算机中应用层软件是不需要直接来控制硬件的,硬件的控件一般都是交给硬件驱动程序来直接控件,应用层通过调用硬件驱动来间接的控制硬件,到单片机编程中,由于没有操作系统,所有的才要直接控制硬件,看看C51单片机编程,都是跟硬件打交道的