汇编语言和硬件的关系

如题所述

第1个回答  2020-01-07
我试着回答吧!!
首先,明确的是,所有软件都要在硬件上实现。对计算机而言,硬件和软件的结合就是二进制代码,既物理状态的逻辑抽象表达。也就是“1”这个数字代表“高电压”“有电流”“电路通”等等,而“0”代表“低电压”“无电流”“电路断”等等。这是人类对某种物理状态的规定(抽象表达)。
其次,在明白上面的阐述后,我们知道,要在硬件上表示一系列二进制代码就必须有与之对应的一系列物理器件来产生、保持、保存一系列物理状态,在计算机中这样的物理器件就是寄存器。在这些二进制代码就是我们教科书上说的机器码
第三,这时汇编语言就可以出场啦,它可以用简单的语句直接改变寄存器的状态,也就是说它可以命令
XX寄存器改变状态,例如又原来的“电路通”变为“电路断”。而这样的改变意味着寄存器中表示的机器码改变。
第四,所以,粗略的说法就是“汇编语言是可以直接命令硬件作出状态改变的计算机语言”从硬件上讲,汇编语言是除了机器码以外最初级的计算机语言。
不知道这样的表述你是否满意?我不是专业的计算机教师,但我知道我的这个回答大体上是没有错误的。请你自己参考吧!!
第2个回答  2020-07-23
互相依赖,缺一不可。
第3个回答  2020-01-06
程序员编写的c语言代码,首先要经过c语言编译器,生成汇编代码,这个过程称为编译阶断,当c语言编译器生成汇编代码后,再调用汇编器来将汇编代码编译成汇编指令。
这是一种站在巨人肩人的作法,最早的c++编程语言也是这样的实现方法,只不过那时候叫cfront程序,cfront程序的作用是将c++代码转换成c语言代码,类似于一个文本处理器,然后再调用c语言编译器,将c源码编译成汇编代码,然后再调用汇编器将汇编代码编译成机器码。
这个过程,在windows平台上不容易操作,但是在linux平台上很容易看到。以gcc这款c语言编译器为例,它实际上是四个小程序。
cp:
c语言预处理程序,有它负责进行预处理操作。
cc:
c语言编译器,它负责将c源码编译成汇编代码。
as:
汇编器,它负责将汇编代码编译成机器码,一般使用gcc
test.c这样的命令编译c语言时,会生成一个a.out的程序,它实际上指的就是as
ouput,即汇编器输出文件。
link:
链接器,它负责将汇编器输入的机器码和库打包成一个操作系统可以运行的可执行文件,在linux上的可执行文件格式是elf格式,这个格式的实现是有链接器来完成的。本回答被网友采纳
相似回答