关于汇编语言和高级语言的问题

汇编语言源程序得用编译程序变成机器语言
高级语言源程序也得用编译程序变成机器语言
那么2这在这方面不是一样的道理吗
那为什么还会有什么汇编语言依赖机器 而高级语言不用以来机器的说法呢?
请扼要地阐述下观点 不要答非所问
谢谢

这个东西不是简单明了能够说明白的,原谅!

我们的计算机能够执行的是一条一条用二进制数字写成的指令,在CPU读取这些指令时会用其内部的译码部件把这些数字翻译成一定的操作,从而指导计算机完成该做什么,怎么做的问题.
在同一架构的CPU中,机器指令是相同的,或是向下兼容的.硬件工程师们在设计CPU时,综合考虑各方面的情况,最终形成了若干条指令(就像我们所写的程序都可以用三种基本结构写成一样),然后再把这若干条指令镌刻在CPU中,用硬件部分予以实现(电子电路中能够讲到).
由于每种CPU的设计者和设计理念不同,因此,形成了各种各样的CPU或单片机品牌,像我们常用的pentium和amd都是属于80x86架构的,此外还有mcs51单片,arm芯片,motorola的680X00系列等.

再说下汇编语言:
由于机器指令是一串可执行的数字代码,因而我们一般人是不会记也很难记住的,为了解决这个问题,所以才发明了汇编语言,用助记符来代替相应的机器语言.所以汇编语言与机器语言是一一对应的,CPU内部有多少条机器指令,就会相应有多少条汇编指令.

高级语言:
由于汇编语言只是机器语言的符号化,虽说相对简单了,但是还是得要求人们学习相应的内部结构,对于复杂的内部结构,有很大一部分人还是无从着手的.所以就出现了高级语言,当程序员用高级语言指令写完源程序后,只需用编译器编译就可运行了.此时编译器所做的工作就是把高级语言指令翻译成汇编语言(机器语言).由于每种机器对应的指令不同,所以在不同架构的机器下,就会有着不同的编译器.

从上我们可以知道,机器语言 汇编语言是基于机器的,在80x86下能够运行的程序,放到arm下肯定没法运行,为什么?因为其机器结构不同,内部的硬件实现不同.所以说其移植性差.
那为什么说高级语言移植性就好呢?是因为他不是用汇编语言写的.在80x86下用c写了一个程序,我们可以用mcs51下用mcs51的c编译器进行编译,将关键字翻译成mcs51的汇编指令就可以了.

打的太多了,希望你能明白.

参考资料:无,自写

温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-09-26
其实很简单,汇编-》程序,是编译器查表,把对应的汇编代码直接转换成二进制机器码

高级语言-》程序,是先把高级语言代码先把你写的源代码生成目标文件.obj文件,再连接生成程序的
生成OBJ文件其实就是根据机器的不同生成了不同的中间代码
再LINK连接生成应用程序的时候,才是查表生成机器码

也就是说,你写C语言程序的时候,要调用printf在屏幕上显示一句话,无论在哪台机上都是写同样的代码

但是用汇编写的时候,实现同样的功能,在16位的机器里和在32位的机器里写的代码就不同了
第2个回答  2007-09-25
汇编语言只是机器语言的指令助记符,可以说是简化了的机器语言,和机器语言是一个级别的.当然和机器语言一样是依赖机器的了.
高级语言那就不同了.机器无法直接识别的.
相似回答