机器语言与汇编语言

2024-12-01 07:03:57
推荐回答(5个)
回答(1):

我自己的看法,希望阅读完。

机器语言是硬件工作的物理语言,只有0和1,不是给人看的,比如cpu的内部工作指令。

汇编语言是给开发人员看的,但不同与其他高级语言(c,basic,c++)

汇编语言不像高级语言有跨平台性,首先,CPU的的工作是靠机器语言的(就是指令集,ISA),而这些指令有些是cpu独占的,而有些是必须要被外界访问的,比如让cpu做加法运算,谁加谁是cpu无法决定的,就必须通过外界指定才可以运算。于是问题出现了,用机器码控制cpu太难了,只有0和1,编程人员要费很大劲!于是汇编语言应邀而生。它是文字形式的,程序员写完程序后通过汇编器(类似于高级语言的编译器)将文字转化为机器码,于是程序就可以控制cpu了,因此汇编语言很依赖cpu,i386的汇编程序只能运行在支持i386体系的cpu上,苹果PowerPC汇编程序只能运行在苹果机上。这也就是为什么Windows程序不能运行在苹果机上,就是一位互相的汇编指令集不同,从而机器码不同。

当然计算机程序的运行最终还是以机器码运行的,但编程语言是无比重要的,比如用c语言写一个最简单的程序,首先c语言编译器(compiler)将程序转化为对应的汇编,汇编器(assembler)将汇编代码转换为机器码才可运行。

之所以高级语言可以跨平台,就是因为同一种高级语言在不同平台的不同编译器,可以调用相对平台的汇编器来在对应平台运行。因此,有人把高级语言和汇编语言分为一类,是不对的。。。。。。
还想说很多,毕竟刚学了,也顺便复习一下,还是到此为止吧。

回答(2):

汇编语言编译器是软件/程序。你说它需不需要硬件支持。

汇编指令并不是按照它的asic码翻译成数字。具体翻译成什么样子的数字。要只能看相关处理器的编程参考手册了。
比如POP指令在AMD64体系结构下的处理器中
8F、58、1F、07、17、0F A1或者0F A9等。

有以下几种参考:
《IA-32 Intel 体系结构软件开发者指南》共三卷。
《Intel 64 和 IA-32 体系结构软件开发者指南》共三卷。
《AMD64体系结构程序参考》共三卷。

其中,IA-32指x86系列(包括奔腾系列)基于Intel80386结构的处理器。

Intel 64和AMD64指基于IA-32体系而扩展成的64位处理器。Intel 64和AMD64的核心功能没有差异,只是在部分次要的功能上有差异(从指令的角度看)。

回答(3):

汇编语言是相对的高级语言,如果说机器语言是计算机自己的语言,那么汇编语言就是人和计算机交流的中介语言;由于机器语言过于复杂不方便(虽然方便计算机去运行)需要使用者对计算机有深入的了解,而现实中对计算机有深入了解的人并不多,所以汇编语言就是那些对计算机有深入了解的人把机器语言改良后的语言,它更靠近人类所能理解的语言,如INT A;我们知道是定义一个整形变量A,汇编语言通过编译器把INT A翻译成01010001等机器语言然后传输给机器,所以说汇编语言也是建立在机器语言基础之上的。不过是为了使用方便把机器语言预先定义好齐表达形式罢了。

回答(4):

机器语言用来编汇编语言的编译器

然后用汇编语言编 C 语言的编译器(比如 TC)

然后用 C 语言和很少的汇编语言编操作系统(比如 Windows)

回答(5):

你的理解应该是正确的,汇编指令就是机器指令的助记符而已