社区
汇编语言
帖子详情
为什么说汇编语言可以直接操作硬件
Jokul_Lee
2012-02-07 09:45:07
大家都说汇编语言效率高,是因为其可以直接对硬件进行操作。
我接触汇编没几天,想咨询一下大家,汇编只是对内存和地址进行直接操作,还是能对其他进行操作?
汇编是否是因为利用了处理器的特性进行运算,使其效率较其他语言要高?
...全文
3004
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
汇编语言
接口程序实现打印图形的程序
这有助于提高应用程序的性能,因为
汇编语言
可以
直接
操作
硬件
,避免了高级语言的间接调用所带来的性能损耗。 “打印图形”则涉及到了图形输出的具体
操作
,包括点、线、矩形、弧线、文本等基本元素的绘制。
汇编语言
...
汇编实时运行核心
在现代计算机科学中,
汇编语言
是一种低级编程语言,它
直接
操作
硬件
的指令集,提供了对处理器性能的极致控制。当提到"汇编实时运行核心",我们关注的是如何利用
汇编语言
来创建那些能够在短时间内执行并响应外部输入,...
查看内存使用情况的汇编源代码
在深入探讨IT领域时,
汇编语言
是一种底层编程技术,它
直接
操作
计算机
硬件
资源,包括内存。当我们需要查看内存使用情况时,汇编源代码提供了强大的工具和方法,尤其是在系统级监控和调试方面。本文将以"查看内存使用...
Mars4_5.zip
总的来
说
,MIPS
汇编语言
和Mars模拟器是计算机科学教育中的重要工具,它们为学习者提供了直观的接口来探索计算机内部运作,对于提升计算机系统知识和编程技能具有显著的价值。通过"Mars4_5.zip",无论是初学者还是...
64位win7专用Debug
汇编语言
是与计算机
硬件
紧密相关的编程语言,通常用于调试过程,因为它是底层
操作
的
直接
表示。`debug.exe`工具在
汇编语言
编程和系统级调试中非常有用,因为它允许用户查看内存、修改内存内容、单步执行指令以及进行...
汇编语言
21,497
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章