软件程序怎么让硬件工作的?

[复制链接]
查看11 | 回复3 | 2020-6-6 16:14:02 | 显示全部楼层 |阅读模式
我来说吧,简而言之,每个控制芯片都有控制端,而软件就相当于芯片的触发器,我想你关心的就是这个从软到硬的转换过程。软件最终会变成“0”和“1”,存在电脑里,实际上和寄存器的原理差不多了,当满足某一个条件,这些“0”和“1”就会输出,去触发控制芯片。就可以动作了。你看到的软件是一串字符,但实际上在电脑里面是输入的信号;就好像你按下开关是一样的,只不过这些开关是组合的,比如说,你把10个开关调整好,这就是编程序;然后给他们同时通电,这就是执行程序。然后就能看到五颜六色的灯泡了。所谓机器语言,就类似导线,它定义了你的这些开关能完成什么功能。当然计算机目前是先有“导线”,然后给你成千上万个开关去组合。你现在的疑惑是看到开关有的合上了,有的打开了,在想为什么灯泡会亮。
回复

使用道具 举报

千问 | 2020-6-6 16:14:02 | 显示全部楼层
知道电灯是怎么开关的吗??电脑开关机是电灯开关基本上是一样的区别主要是电脑内部的多条电路被焊接到了电路板上,这基本上与所提的软件控制硬件无关至于软件控制硬件软件程序主要是一连串的(0与1)代码,这与三极管的高低电平对应。三极管的电平高低主要是通过开关来完成,即硬件实现 太模糊,控制也有很多层次的,最底层的就是汇编,但是操作很复杂比较方便的是使用windows提供的api函数DOS引导阶段 1987年,计算机病毒主要是引导型病毒,具有代表性的是“小球”和“石头”病毒。当时的计算机硬件较少,功能简单,一般需要通过软盘启动后使用.引导型病毒利用软盘的启动原理工作,它们修改系统启动扇区,在计算机启动时首先取得控制权,减少系统内存,修改磁盘读写中断,影响系统工作效率,在系统存取磁盘时进行传播; 1989年,引导型病毒发展为可以感染硬盘,典型的代表有“石头2”; DOS可执行阶段 1989年,可执行文件型病毒出现,它们利用DOS系统加载执行文件的机制工作,代表为“耶路撒冷”,“星期天”病毒,病毒代码在系统执行文件时取得控制权,修改DOS中断,在系统调用时进行传染,并将自己附加在可执行文件中,使文件长度增加。软件是如何控制硬件的悬赏分:30 - 解决时间:2007-8-10 20:32我对程序能够控制硬件进行工作很不理解,问老师也没有满意的回答。希望有高人给我解释一下。软件中的命令(这些命令是最初编程设计的)最终都要转化为计算机可以识别的机器语言,就是我们通常听说的0101010101,这种长串的机器代码在硬件中反映成电脉冲或电信号,在超大规模的集成电路中执行逻辑操作或运算(具体的,那就是电路知识了,最基本的原理都非常非常简单,简单的让你吃惊,即通路,断路),最终形成的现在运算速度惊人的计算机. 要理解的很清楚的话那就要求掌握多门学科的基础知识了.你不理解软件为何能控制硬件,大概是因为你觉得软件是看不见摸不着的东西,如何能够控制硬件这样有形的实体吧。 其实问题很简单,软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件的工作。 说到底软件就是起到一个开关信号的作用,开关要工作,必需保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不会亮的。 任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。早期电脑用人工接线输入程序,相当于用人体的力量将软件代码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。这个问题看似简单,其实涉及到一些很底层的内容和原理。对于一般计算机爱好者来讲,又没有办法说明白,原因就是我们从来没有考虑过电路在物理上的实现。 计算机软件说到底,不过就是一些指导电子元件工作的指令序列,那么你一定又会问电子元件为什么会按这些序列工作呢?指令序列的在电路中的实质就是一些有规律且有一定意义的电脉冲,电脉冲控制电子元件的各种状态。工作过程非常复杂。最简单最基本的就是几个逻辑门电路的实现:比如“或”电路,“与”电路等等。通过将这些逻辑门电路的组合和协同,就能实现电脑整体上的运算和处理能力。因为这是十几个数量级的基础电路的有机集合的对外的体现,如奔腾系列CPU集成了上亿个半导体元件,要想把各个元件的功能彻底认知,是非常困难的。可以把它们比作每个人的活动合在一起就构成了社会【有单位,有抽象 正如抽象的生活用电网络,可以将一个用电器作为抽象单位,也可以将一个家庭作为抽象单位,一个抽象单位连接入网络,具体的接入方式,抽象单位完全本身实现,理想情况下每一功能模块即抽闲单位,都有接口,成为网络的一部分,向新的部分提供接口,理想情况下家庭电路有接口模块,可以任意扩展;每一但单元都有进出,任意个连接组合,总的单位也有进 和 出】软件可以发送命令 让cpu的某一引脚 发出高低信号 从而控制硬件新一篇: 我对程序的思考我也曾遇到过这样的问题,困惑了好长时间。每每到网上看, 都说的不是我想要的问题,或者说是组成原理书上有讲呀什么的。现在我明白了, 是按自己的想法明白 ,希望像我困惑过的正在困惑的能在这里得到答案,对你有所帮助软件如何控制硬件呢??(以下仅是我个人理解, 不保证正确, 如果错的希望能得到您的指点。。先谢谢)大家都知道。没有软件的硬件就是一堆废铁或“砂子”。您也知道cpu中有个叫做译码器的东东吧,您也知道我们写的程序要经过编译呀, 汇编呀,连接呀。最后生成可以被硬件执行的二进制。可是问题来了,硬件能认识个啥二进制。这里也许是你不懂的地方。其实解释的关键也就在这里了。高低电压。脉冲的有无控制硬件您能够接受吧,而我们写的程序(软件)其实都是以高低电压,脉冲的有无存储在磁盘上。或者以有无反射的形式存在光盘上。所谓的机器可直接执行的代码, 也就是二进制,译码器能理解。他能理解。cpu就能理解。cpu按照硬件设置和硬件特性,选择switch(也就是让哪一条导线是通路),以达到控制硬件。(能理解吗, 如果你还有什么疑问留言吧, 针对性解决可能会好点,)实际上计算机把相当复杂的问题最终都会转化成加法(ALU)来实现,(太神奇了,我还理解不了。但我知 道,呵呵,这样有助于理解。软件是如何控制硬件的--------------------------------------------------------------------------------http://blog.sina.com.cn 2007年10月19日15:25 eyre 标签: 休闲生活 软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件的工作。说到底软件就是起到一个开关信号的作用,开关要工作,必需保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不会亮的。任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。早期电脑用人工接线输入程序,相当于用人体的力量将软件代码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。这个问题看似简单,其实涉及到一些很底层的内容和原理。对于一般计算机爱好者来讲,又没有办法说明白,原因就是我们从来没有考虑过电路在物理上的实现。计算机软件说到底,不过就是一些指导电子元件工作的指令序列,那么你一定又会问电子元件为什么会按这些序列工作呢?指令序列的在电路中的实质就是一些有规律且有一定意义的电脉冲,电脉冲控制电子元件的各种状态。工作过程非常复杂。最简单最基本的就是几个逻辑门电路的实现:比如“或”电路,“与”电路等等。通过将这些逻辑门电路的组合和协同,就能实现电脑整体上的运算和处理能力。因为这是十几个数量级的基础电路的有机集合的对外的体现,如奔腾系列CPU集成了上亿个半导体元件,要想把各个元件的功能彻底认知,是非常困难的。可以把它们比作每个人的活动合在一起就构成了社会.计算机是数字电路,数字电路是靠1,0来控制电路的.起到电流还有脉冲作用.像你键盘上敲个周字一样.同是由一大一串的0001111111111100.来产生脉冲电流对硬件发出指令的.CPU就是运算这些数据.然后发出机器语言指挥其它硬件工作的.参考资料:http://hi.baidu.com/bernardme/blog/item/8cf0b13dbd3b64eb3d6d97d9.html

已赞过已踩过<
回复

使用道具 举报

千问 | 2020-6-6 16:14:02 | 显示全部楼层
看到一楼的回答我比较汗颜……其实简单的说就是你提到的机器语言的问题,通过微电子元件受电子或电流的作用 实现用处
回复

使用道具 举报

千问 | 2020-6-6 16:14:02 | 显示全部楼层
计算机的两个主要组成部分是它内部的存储器及处理器。内部存储器被用来存储程序和数据,处理器则是一组电路,用来实现一系列的基本运算或机器指令,如进行算术运算和逻辑运算的指令。在大多数计算机中,有一些指令通常被称为宏指令,实际上这些指令时通过定义更低层次的指令(称为微指令)来实现的。因为微指令从来不在软件中显示,因此无法详尽的表达它的概念。
计算机的机器语言是一套指令。在没有其他支持软件的情况下,机器语言是大多数硬件计算机能够“理解”的唯一语言。理论上,也可以这样来设计和建造一台计算机,即可以使用一种特殊的高级语言作为它的机器语言作为它的机器语言。但这样建造的计算机会十分复杂非常昂贵。此外也会及不灵活,因为很难通过其他的高级语言来使用它。计算机设计中较现实的选择是,在其硬件上实现能够提供普遍需要的基本操作的较低层次的语言,而要求其系统软件生成使用其他高级语言编写程序的接口。
一种语言的实现系统并不是一台计算机上的唯一软件。它还需要一个称为操作系统的大程序集,这个程序集提供高于机器语言层次的基本操作。这些基本操作包括系统资源的管理、输入和输出操作、文件管理系统、程序编辑器,还包括其他各宗普遍需要的功能。因为语言的实现系统需要许多操作系统工具,所以实现系统是于操作系统接口,而不是直接与处理器打交道。
操作系统和语言实现系统被分层放置于计算机的机器语言接口上,可以将这些层次设想为虚拟计算机,这个计算机在高层次上给用户提供使用接口。例如:一个操作系统和一个C程序编译器就是一个虚拟的C计算机。借助于其他编译器,一个计算机能够变成其他类型的虚拟计算机。绝大多数的计算机系统都提供几种不同类型的虚拟计算机。用户程序在这个虚拟计算机的顶端层次上形成另一个层次。可以看下面的图关于编译:实现程序设计语言的方法可以是三种一般方法中的任何一种。一个极端的方面是,可以将程序翻译成能够在计算机上直接运行的机器语言,这种方法称为编译器实现。这种方法的优越性事,一旦完成编译过程,程序执行速度非常快。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行