高级语言和汇编语言最后都转化为机器指令,那么为什么说汇编代码运行效率高?

来源:百度知道 编辑:UC知道 时间:2024/09/22 19:38:03

楼上的那段汇编如果去掉栈段将会更短些^^我也说两句吧,概括型~~
高级语言必须在操作系统环境下编译运行,通常会调用操作系统提供的库,比如WINDOWS环境下通常会调用GDI,而汇编代码是机器指令的助记符,机器指令可不需要操作系统环境直接基于硬件运行,,想想硬盘的0磁头0柱面1扇区的主引导记录吧~~ 还有一点就是人是非常智能的,用汇编编程时会根据数据大小分配合适的存储单位,合理利用内存空间,而用高级语言编程,以VISUAL BASIC为例,不必考虑数据是一个字节或是一个字或是一个双字,编译器编译有时统一以双字为单位分配,就大大的浪费了内存空间,而且用汇编编程常求精简,而高级语言编译器由于没有人类智能,对于同样一个目标可能会绕些弯子~这样一来,同样功能的程序用高级语言编译生成的要比直接用汇编生成的要长多啦,有时甚至几倍!所以说汇编代码效率要高。
但是现在之所以高级语言非常通用,是因为大型的程序如果用汇编去实现是非常庞大的工程,而调用已总结的库文件则轻松的多,C语言编译器就提供了相当大的库函数方便编程者调用,就好像别人已经为你烧制好砖头,你只要盖房子就好。

你可以自己做一下试验
分别用C和汇编做一个显示一个字符的程序
然后看看他两的大小你就明白了
include <stdio.h>
main
{
putchar('a');
}
好久没碰C了,不知道写没写错
stack segment
db 64 dup (?)
stack ends
code segment
assume cs:code,ss:stack
start:
mov ah,02H
mov dl,'a'
int 21H
mov ah,07H
int 21H
mov ax,4C00H
int 21H
code ends
end start

确实老了,刚才把那个C的代码编译了一下,根本就没通过编译,囧
#incl