社区
汇编语言
帖子详情
为什么说汇编语言可以直接操作硬件
Jokul_Lee
2012-02-07 09:45:07
大家都说汇编语言效率高,是因为其可以直接对硬件进行操作。
我接触汇编没几天,想咨询一下大家,汇编只是对内存和地址进行直接操作,还是能对其他进行操作?
汇编是否是因为利用了处理器的特性进行运算,使其效率较其他语言要高?
...全文
3053
12
打赏
收藏
为什么说汇编语言可以直接操作硬件
大家都说汇编语言效率高,是因为其可以直接对硬件进行操作。 我接触汇编没几天,想咨询一下大家,汇编只是对内存和地址进行直接操作,还是能对其他进行操作? 汇编是否是因为利用了处理器的特性进行运算,使其效率较其他语言要高?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jokul_Lee
2012-02-15
打赏
举报
回复
非常感谢大家的讲解,只是这个帖子已经结了,没办法给大家分了,下次一定多给大家分哈。
gsy999
2012-02-15
打赏
举报
回复
[Quote=引用楼主 jokul_lee 的回复:]
大家都说汇编语言效率高,是因为其可以直接对硬件进行操作。
我接触汇编没几天,想咨询一下大家,汇编只是对内存和地址进行直接操作,还是能对其他进行操作?
汇编是否是因为利用了处理器的特性进行运算,使其效率较其他语言要高?
[/Quote]
■■为什么说汇编语言可以直接操作硬件?
其实这个问题只要稍加分析就可以得到答案。
首先要明白汇编语言是什么样的语言。汇编语言就是直接用机器指令(机器语言)写程序的语言,而机器语言就是计算机操作所有资源的最终语言。如果机器语言都不能直接操作硬件,那么也就不存在汇编语言可以直接操作硬件;如果机器语言可以直接操作硬件,那么就等于说汇编语言也可以直接操作硬件(更贴切点说应该是汇编语言能写出直接操作硬件的指令)。
那么机器指令(机器语言)可以直接操作硬件吗?当然可以。
■■汇编语言效率高吗?
首先此处的效率是什么效率?是生产程序的效率,还是程序运行的效率?如果我没误解的话,LZ可能说的是程序运行的效率,也就是计算机运行程序完成同样的任务所用的时间的多少。
我们来分析一下。由于不管用什么语言写的程序,最终都要编译成计算机可以执行的机器指令,而每条机器指令的运行速度与编程语言无关,那么计算机完成同样任务所需时间的多少只能与执行的机器指令序列相关(假设硬件和操作系统环境相同)。联系编程来说,它主要与两个方面相关:一是,完成同一任务你选用了什么样的指令,举个例子来说,同是装入存储器地址,你可以选用:mov si,offset mem; 你也可以选用 lea si,mem;这两条指令的运行效率是不一样的,你选择了快的肯定快,相反你选择了慢的肯定慢。二是运行效率与指令用的多少相关,也就是说冗余的指令用的越多速度越慢,就如同坐飞机从上海到南京,在飞行速度相同的情况下,直飞就少用时间,绕道飞就要多用时间一样。
如果我们定义:运行效率高的程序就是代码质量高,运行效率低的程序就是代码质量低,那么哪种语言能做到产生的代码质量最高呢?理论上是汇编语言,为什么?因为用汇编语言编程就是用机器语言编程,编程时,你可以自由地选择和编排机器语言序列,而其他高级语言是做不到的,原因是它在将原代码编译成机器指令时,不可能绝对做到产生的代码质量最高,总会或多或少加进冗余代码。但是要切记,这是理论上的分析,而现实生活中,如果你的水平和能力不够,不见得你用汇编写的代码就一定比熟手用高级语言写的代码运行质量高!同是骑自行车,高手可以爬高上低翻斤斗甚至能通过表演挣钱养家,但并不代表人人都可以做到,事实上更多的普通人也就是在平地上骑骑它代步上下班而已。
Saleayas
2012-02-15
打赏
举报
回复
汇编不可以直接操作硬件,在现代操作系统中,操作硬件主要需要的是授权的问题。
汇编不会提高程序的效率。
任何语言都不会。因为他们仅仅是语言。
很多人所脚本其实是最快的。
那是因为脚本执行的平台是操作系统提供的。而这个平台是针对你当前的机器优化的。
现在 .NET 的 JIT 就是这样的。
而用汇编或 C 语言写的程序,一般都是通用的,必须适用于所有的机器。
在很特定的场合,在处理快速数据的时候,都需要有硬件的最低配置就是这个道理。
速度快,效率高,是因为该程序最大化的利用的硬件资源。
1az98你好
2012-02-14
打赏
举报
回复
[Quote=引用 4 楼 jha334201553 的回复:]
对硬盘、对U盘、对串口操作用IN、OUT,自己好好回去看看汇编的书。至于mov只能跟内存交互。
高效运算比如 4+3*2
mov eax,2
lea eax,dword ptr[eax*3+4]
也可以做
mov eax,3
shl eax,1
add eax,4
[/Quote]
5楼的例子有问题:用 lea 做乘法时,相乘的两个数中必须有一个为 1、2、4、8,这是“Indirect Memory Operand”内存访问方式中所谓的"scaling factor"。所以上例应该改为:
高效运算比如 4+3*2
mov eax,
3
lea eax,dword ptr[eax*
2
+4]
也可以做
mov eax,3
shl eax,1
add eax,4
.....
knxw0001
2012-02-13
打赏
举报
回复
汇编指令可以对硬件操作啊。比如in指令,可以直接控制端口;mov指令可以直接对内存或CPU内部的寄存器操作。
其他语言没有直接对硬件操作以完成已定任务的。
大熊猫侯佩
2012-02-13
打赏
举报
回复
哪个讲汇编效率高的鸟?误人子弟鸟!
wszyjsw
2012-02-10
打赏
举报
回复
对数字的电路最根本的操作就是 对逻辑电平的操作 赋1赋值0(逻辑运算和加减乘除本质也是在改变电平) 汇编语言就是做这工作的 所以说汇编语言是直接操作硬件的语言
Binzo
2012-02-10
打赏
举报
回复
机器语言直接操作硬件吧。
汇编还是要编译成机器语言的。
bornag
2012-02-07
打赏
举报
回复
汇编可以使用一些高级语言没有的特殊指令完成特殊功能如协处理器访问指令,或取乘法结果的高32位(某些浮点转定点场合需要,可看libmad代码)。
对普通程序来说,有中间翻译层的语言不考虑,多了一层转换效率肯定比不上直接编译成二进制代码的语言。就c和汇编来说,写的好的C代码可以与汇编的效率接近,差的一点在于编译器生成二进制代码时可能产生一些冗余指令,例如不必要的访问内存指令,用汇编可以最大化利用cpu寄存器减少访问内存,从而提高程序运行速度。
所有的前提是程序写的要精简,至少尽量做到本语言的最优化,写的不好的汇编也可能比C程序慢。
z569362161
2012-02-07
打赏
举报
回复
汇编是最接近于机器语言的编程语言。,使用汇编语言的时候,能够感知计算机的运行过程和原理,从而能够对计算机硬件和应用程序之间的联系和交互形成一个清晰的认识。
汇编是面向机器的程序设计语言.利用计算机所有硬件特性并能直接控制硬件的语言。需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。在这样的环境中编写的汇编程序,很大一部分是面向汇编器的伪指令,汇编语言的长处在于编写高效且需要对机器硬件精确控zhi
masmaster
2012-02-07
打赏
举报
回复
汇编语言里有直接操作硬件的指令,比如,mov ax,1234;这就是所谓的直接对硬件操作。
处理器新增的特性,往往随指令手册发布,可以用汇编语言直接,比如一些多媒体指令,而高级语言恐怕就很难做到了, 我是这么理解的。
「已注销」
2012-02-07
打赏
举报
回复
对硬盘、对U盘、对串口操作用IN、OUT,自己好好回去看看汇编的书。至于mov只能跟内存交互。
高效运算比如 4+3*2
mov eax,2
lea eax,dword ptr[eax*3+4]
也可以做
mov eax,3
shl eax,1
add eax,4
SIEMENS西门子 1200 PLC 轴运动控制程序模板:包含多项目成熟应用的程序块与电路图
内容概要:本文介绍了西门子1200 PLC轴运动控制程序模板的具体应用,特别是为海康威视制作的一台装路由器壳子的机器。该程序涵盖了轴控制(3个伺服和1个电缸)、PUT GET块与上下游PLC通讯、气缸报警处理等功能,并附有完整的电路图和威纶通触摸屏程序。程序块已在多个项目中成功应用,具有很高的复用性和实用性。文中详细解释了各个功能模块的工作原理及其在实际项目中的应用价值。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要深入了解西门子1200 PLC轴运动控制的人群。 使用场景及目标:① 学习如何利用西门子1200 PLC进行轴控制、电缸控制以及与上下游PLC的通讯;② 掌握气缸报警处理机制,提升系统的安全性和可靠性;③ 利用提供的完整电路图和触摸屏程序,快速搭建和调试控制系统。 其他
说
明:该程序模板不仅有助于提高开发效率,还能帮助初学者更好地理解和掌握西门子1200 PLC的相关技术和最佳实践。
电子工程领域Simulink下BUCK电路PI闭环控制仿真与分析
BUCK电路(一种降压型DC-DC转换器)的基本原理及其在Simulink环境下的仿真方法。重点探讨了采用PI闭环控制方式对BUCK电路进行仿真的过程,包括设置输入输出电压、开关频率等参数,以及观察关键节点波形的变化。文中还提供了简单的Matlab代码片段用于创建BUCK电路模型和设置PI控制器参数,帮助读者理解和掌握整个仿真流程。此外,文章强调了通过调整电感、电容等元件参数来优化电路性能的方法。 适合人群:电子工程领域的学生、研究人员和技术爱好者,尤其是那些希望深入了解BUCK电路工作原理及仿真技巧的人群。 使用场景及目标:适用于想要通过理论结合实践的方式学习BUCK电路的设计与优化,旨在提高电路设计能力,确保输出电压稳定可靠。 其他
说
明:文中提供的代码仅为示例,在实际应用中可能需要根据具体情况做出相应修改。同时,建议读者在学习过程中多做实验,不断尝试不同的参数组合以加深理解。
【无线通信】基于matlab 5G D2D移动通信网络功率分配机制对比【含Matlab源码 13930期】.zip
Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行
操作
步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
微头条10种框架创作指令
#Role: 微头条文案爆款生成助手 #Background: 你是一名经验丰富的微头条创作博主,每天需要撰写引人注目的文案,希望通过科学的创作流程,自动生成爆款文案,提升内容的曝光率和互动率。 #Skills: 1.联网搜索爆款文案技能: (1)熟练运用搜索引擎和社交媒体平台,快速找到近期爆款文案和热门话题。 (2)分析这些爆款文案的特点和成功原因,从中汲取灵感和创意。 2.文案创意与优化技能: (2)根据主题和目标受众,创作出具有吸引力和互动性的文案题目。 (3)优化文案内容,确保语言简洁明了,逻辑清晰,符合读者的兴趣点和阅读习惯。 3.根据标题/首句续写技能: (1)根据给定的标题/首句,撰写出符合标题主题且内容丰富的文案。 (2)保持文案的一致性和连贯性,使读者能够从标题到正文一气呵成地阅读。 4.数据分析与规划技能: (1)能够自行联网结合数据分析工具,识别最佳选题和高互动率的文案类型。 (2)根据热点话题和用户行为数据,规划选题内容,制定详细的创作计划。 5.提供选题指导技能: (1)根据用户提供的赛道和目标观众信息,提供具体的选题方向和创作建议。 (2)结合当前的社会热点和用户兴趣,为用户生成有潜力的爆款选题。
电力电子领域并网逆变器PQ控制及快速锁相环技术的应用与仿真
并网逆变器的PQ(有功功率和无功功率)控制技术及其应用。重点在于两电平逆变器通过功率闭环控制实现并网单位功率因数,即并网电流与网侧电压同相位。文中特别强调了基于双二阶广义积分器的快速锁相环技术,用于精准获取电网相位信息。此外,还通过仿真实验验证了控制策略的有效性,所有仿真均采用离散化处理,确保了高精度和快速响应。最终,文章展示了该技术在提高电网稳定性和系统效率方面的显著优势。 适合人群:从事电力电子技术研究的专业人士、高校相关专业师生、对逆变器技术感兴趣的工程技术人员。 使用场景及目标:适用于需要深入了解并网逆变器PQ控制机制的研究人员和技术开发者,旨在提升电网稳定性和能效水平。 其他
说
明:文章提供了详细的理论分析和技术细节,有助于读者全面掌握并网逆变器的工作原理和实际应用。
汇编语言
21,496
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章