X86 汇编语言汇编语言的产生和组成

上面所说的计算机指的是可以执行机器指令,进行运算的机器。这是早期计算机的概念。现在,在我们常用的PC机中,有一个芯片来完成上面所说的计算机的功能。这个芯片就是我们常说的CPU(Central Processing Unit,中央处理单元),CPU是一种微处理器。以后我们提到的计算机是指由CPU和其他受CPU直接或间接控制的芯片、器件、设备组成的计算机系统,比如我们最常见的PC机。
每一种微处理器,由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自己的机器指令集,也就是机器语言。
早期的程序设计均使用机器语言。程序员们将用0, 1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。
应用8086CPU完成运算s=768+12288-1280,机器码如下。

101110000000000000000011
000001010000000000110000
001011010000000000000101

假如将程序错写成以下这样,请你找出错误。

101100000000000000000011
000001010000000000110000
000101101000000000000101

书写和阅读机器码程序不是一件简单的工作,要记住所有抽象的二进制码。上面只是一个非常简单的小程序,就暴露了机器码的晦涩难懂和不易查错。写如此小的一个程序尚且如此,实际上一个有用的程序至少要有几十行机器码,那么,情况将怎么样呢?
在显示器上输出“welcome to masm",机器码如下。

000llll0
101110000000000000000000
0l0l0000
l0lll000ll000ll00000llll
l000lll0ll0ll000
l0ll0l0000000ll0
1011000000000000
l0ll0lll0000lll
l0lll00l000000000000000
1011011000011000
l0ll00l00l00llll
ll00ll0l000l0000
l0ll0l0000l0
1011011100000000
1011011000000000
1011001000000000
1100110100010000
1011010000001001
10001101000101100010101000000000
1100110100100001
1011010000001010
10001101000101100011000100000000
1100110100100001
1011010000000110
1011000000010100
1011011100011001
1011010100001011
1011000100010011
1011011000001101
1011001000111100
1100110100010000
1011010000000010
1011011100000000
1011000000001100
1011001000010100
1100110100010000
1011010000001001
10001101000101100000000000000000
1100110100100001
11001011

看到这样的程序,你有什么感想?如果程序里有一个“i”被误写为“0 00,又如何去查找呢?

汇编语言的产生

早期的程序员们很快就发现了使用机器语言带来的麻烦,它是如此难于辨别和记忆,给整个产业的发展带来了障碍。于是汇编语言产生了。
汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。
例如:机器指令1000100111011000表示把寄存器BX的内容送到AX中。汇编指令则写成mov ax,bx。这样的写法与人类语言接近,便于阅读和记忆。
操作:寄存器BX的内容送到AX中
机器指令:l000l00lll0ll000
汇编指令:mov ax,bx
(寄存器,简单地讲是CPU中可以存储数据的器件,一个CPU中有多个寄存器。AX是其中一个寄存器的代号,BX是另一个寄存器的代号。更详细的内容我们在以后的课程中将会讲到。)
此后,程序员们就用汇编指令编写源程序。可是,计算机能读懂的只有机器指令,那么如何让计算机执行程序员用汇编指令编写的程序呢?这时,就需要有一个能够将汇编指令转换成机器指令的翻译程序,这样的程序我们称其为编译器。程序员用汇编语言写出源程序,再用汇编编译器将其编译为机器码,由计算机最终执行。图1.1描述了这个工作过程。

511遇见

汇编语言的组成

汇编语言发展至今,有以下3类指令组成。
(1)汇编指令:机器码的助记符,有对应的机器码。
(2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
(3)其他符号:如+、一、*、/等,由编译器识别,没有对应的机器码。
汇编语言的核心是汇编指令,它决定了汇编语言的特性。


发布日期:

所属分类: 编程 标签:


没有相关文章!