社区
汇编语言
帖子详情
为什么说汇编语言可以直接操作硬件
Jokul_Lee
2012-02-07 09:45:07
大家都说汇编语言效率高,是因为其可以直接对硬件进行操作。
我接触汇编没几天,想咨询一下大家,汇编只是对内存和地址进行直接操作,还是能对其他进行操作?
汇编是否是因为利用了处理器的特性进行运算,使其效率较其他语言要高?
...全文
2545
12
打赏
收藏
为什么说汇编语言可以直接操作硬件
大家都说汇编语言效率高,是因为其可以直接对硬件进行操作。 我接触汇编没几天,想咨询一下大家,汇编只是对内存和地址进行直接操作,还是能对其他进行操作? 汇编是否是因为利用了处理器的特性进行运算,使其效率较其他语言要高?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
什么是
汇编语言
汇编语言
(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在
汇编语言
中,用助记符(Mnemonics)代替机器指令的
操作
码,用地址符号(Symbol)或标号(Label)代替指令或
操作
数的地址。在不同的设备中,
汇编语言
对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地
说
,特定的
汇编语言
和特定的机器语言...
汇编语言
|基础知识
为什么要学习
汇编语言
呢?
汇编语言
,是除了机器语言外的最底层的编程语言了。学习这门语言,可以帮助我们更加深入地理解CPU、内存等
硬件
的工作原理。用机器的思维去
操作
计算机。
汇编语言
和机器语言是一一对应的,
汇编语言
被编译成机器语言,这样的程序执行效率更高。 什么是
汇编语言
?
汇编语言
是
直接
在
硬件
之上工作的编程语言,学习
汇编语言
之前最好先了解一下计算机
硬件
系统的结构和工作原理。学习
汇编语言
的重点是学习如何利用
硬件
系统的编程结构和指令集进而有效地灵活地控制系统执行工作。 什么是机器语言? 机器语言是机器指令的集
汇编语言
(Assembly Language)简介
汇编语言
(Assembly Language)简介:
汇编语言
是最接近于机器语言的编程语言。如果
说
机器语言是计算机
操作
的本质,那么
汇编语言
就是最最接近本质的语言。
汇编语言
操作
直接
面向
硬件
,所以,我们在使用
汇编语言
的时候,我们能够感知计算机的运行过程和原理,从而能够对计算机
硬件
和应用程序之间的联系和交互形成一个清晰的认识。
汇编语言
对于内存的
操作
都是基于内存地址的,而C语言中最令人头疼的指针概念,
说
白了就是内存的地址。
c语言可以调用
汇编语言
吗,C语言与
汇编语言
混编方式
C语言是目前非常流行的一种编程语言,除具有高级语言使用方便灵活、数据处理能力强、编程简单等优点外:还可实现
汇编语言
的大部分功能,如可
直接
对
硬件
进行
操作
、生成的目标代码质量较高等,而
汇编语言
没有高级语言要占用较大的存储空间和较长的运行时间等缺点,它的运行速度快是高级语言所不能比拟的,可以
说
高级语言与
汇编语言
各有千秋。目前c语言与
汇编语言
的混合编程在诸如对
硬件
的
直接
操作
、中断处理、快速执行等场合有着广...
计算机能不能
直接
识别
汇编语言
程序,计算机能
直接
识别执行用
汇编语言
编写的程序吗...
不能。用
汇编语言
编写的程序,计算机是不能
直接
识别和执行的;必须先把
汇编语言
源程序翻译成机器语言程序(即目标程序),然后才能被执行。当目标程序被安置在内存的预定位置上后,就能被计算机的CPU处理和执行。本教程
操作
环境:windows7系统、Dell G3电脑。
汇编语言
(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语...
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章