学习交流加

  • 个人qq:
    1126137994
  • 个人微信:
    liu1126137994
  • 学习交流资源分享qq群:
    962535112

上一篇文章讲解了处理器,内存,和指令。学习了Intel 8086处理器的相关知识,如Intel通用寄存器的作用,程序重定位问题,以及内存分段结构。点击链接查看上一篇文章:处理器 内存 指令

本片文章学习以下内容:

  • 了解汇编语言的作用
  • 下载NASM编译器,并学会使用它来编译汇编语言源程序

处理器依靠机器指令工作,但机器指令从形式上看是一堆没有规律的数字,难以书写、阅读和理解,这样就发明了汇编语言。

1、汇编语言简介

在上一篇文章中,我们学习了处理器,也学习了处理器是如何进行算数逻辑运算的。为了实现处理器的自动运算,处理器必须从内存中取指令,并执行这些指令。

指令和被指令引用的数据在内存中都是一些或高或低的电平,每一个电平都可以看成是一个二进制(0 or 1),8个二进制位形成一个字节。要解读内存中的东西,最好的办法就是讲他们按字节转换成数字的形式。比如下面这些数字就是存放在INTE8086的指令,我们用的是十六进制:

B8 3F 00 01 C3 01 C1

对于大多数人来说,上述指令,是很难知道它到底在干嘛的。实际上它对应着下面的意思:

将立即数003F传送到寄存器AX;
将寄存器BX的内容和寄存器AX的内容相加,结果在BX中;
将寄存器CX的内容和寄存器AX的内容相加,结果在CX中;

即使是很有经验的技术人员,也不一定能够将以上指令对应的意思记住。

为了克服机器指令难以书写与记忆的缺点,汇编语言就出现了。汇编语言是一种助记符,用来帮助理解和记忆机器指令。上述的指令,就可以写成如下的汇编语言:

mov ax, 3FH
add bx, ax
add cx, ax

对于有点英语基础的人来说,以上三句话相当容易理解,不再赘述。
汇编语言还是很难学的,今日我们就简单的了解汇编语言。先注意一下节点:

  • 汇编语言不区分大小写
  • 汇编语言中的立即数(立即数的概念参看上一篇文章)可以为二进制,十进制,十六进制等

今天暂时知道这么多的汇编语言的基础知识,后面的文章中会逐渐展示汇编语言的各种基础知识以及相关用法。

2、NASM编译器

2.1 、 NASM下载和安装

处理器只能识别机器指令,不能识别汇编语言。所以NASM编译器,就是将相关的汇编语言源程序编译成处理器可以识别的机器指令。

NASM是可免费的使用的开源软件,下面是它的下载地址:点击下载

2.2 、 代码的书写和编译过程

打开NASM编译器的命令行窗口后,显示如下:

我们可以写完汇编语言源程序后就用它来编译,但是这样太麻烦,本系列文章参考的书籍中,作者写了一个小程序Nasmide,该程序可以编写汇编语言然后可快速编译源程序。

该小程序软件下载地址:
链接:https://pan.baidu.com/s/12zk4ziatB8x0TuJMvH-2vQ
提取码:3t1z

打开这个程序后显示如下:

空白处可以编写汇编语言。

该软件相当简单,只说一点:配置编译环境。

菜单处有一个“选项”栏目,点开后选择你自己的NASM编译器的目录位置,如下图是我自己的:

然后以后再编译源程序文件的时候,直接点击“文件”下的“编译本文档”即可。

2.3 、 观察编译后的机器代码

最后再提供一个工具,可以显示编译后的机器代码,HexView。该工具也是本系列文章参考的书籍的作者李忠缩写。

工具下载地址:
链接:https://pan.baidu.com/s/1VtYqRiBrWkcyi0tXP3bsTQ
提取码:nyo4

此工具用起来相当简单,这里不再赘述。

3、总结

本片文章学会

  • 了解汇编语言的作用
  • 下载NASM编译器,并学会使用它来编译汇编语言源程序
  • 学会使用几个补充的工具辅助我们的开发学习过程

学习探讨加:
qq:1126137994
微信:liu1126137994