Linux下8086汇编语言环境的搭建

汇编是学习处理器以及操作系统时必须面对的一道坎,可以说汇编是从一个软件工程师的角度理解处理器的最好途径,由于我工作中主要使用C/C++,虽然也接触过一些汇编的编程,但是总的来说没有系统的学习过汇编这门语言,最近再学习操作系统相关的知识的时候发现嵌入式开发工程师系统的学习一下汇编是很有必要的。由于汇编的是最贴近处理器的一门语言,这也就导致了不同的处理器的汇编有多多少少的不同。换句话说,我们通常说说的汇编应该具体的指到某一款处理器的汇编。处理器使用最经典的当是8086处理器,它曾被无数次的写进教科书。可以说是现代大多数处理器的鼻祖,那么8086的汇编当然也是最经典最值得学习的一门汇编了。

说了这么多进入正题,笔者在网上找了一圈发现8086汇编的学习环境搭建基本都是再Windows下面进行,而在linux下的学习环境在网上还是比较难找,所以今天就写了这么一份环境搭建记录分享给大家。我的环境是ubuntu18.04,其他linux发行版方法都是通用的。

dosbox是一个免费开源跨平台的MS-DOS模拟器。用它可以编译运行8086汇编。ubuntu下安装dosbox只需要一句话:
$ sudo apt-get install dosbox

Linux下8086汇编语言环境的搭建_第1张图片

图中显示我已经安装过了。
安装好之后可以看一下版本:
$ dosbox -version

Linux下8086汇编语言环境的搭建_第2张图片

安装好之后可以直接运行:
$ dosbox

Linux下8086汇编语言环境的搭建_第3张图片

启动后出现的提示为 Z:\。上图可以看到dosbox虚拟机已经跑起来了。
接下来挂载驱动器c盘并进入c盘:
Z:\>mount c /home/ubuntu/masm
Z:\>c:

Linux下8086汇编语言环境的搭建_第4张图片

如上图成功将linux下的路径"/home/ubuntu/masm/"这个路径挂载为dosbox虚拟机的序盘,并进入到了c盘
 为了让虚拟机每一次启动都自动挂载并进入C盘,可以在~/.dosbox/dosbox-0.74.conf文件中添加启动脚本,只需要在该文件末尾添加:

Linux下8086汇编语言环境的搭建_第5张图片

添加启动脚本之后再次启动dosbox,c盘已经自动挂载好了:

Linux下8086汇编语言环境的搭建_第6张图片

虚拟机安装之后,进行汇编开发学习还需要masm、link、debug三个工具;其中masm是汇编工具、link是链接工具、debug是调试工具。这三个工具可以到网上下载,我这里提供一个我网盘上的一个分享链接(如果失效了大家再自行从网上找吧)https://pan.baidu.com/s/1BXVICTQY0WpXFuA5Bk5-Gw
解压将里面的文件全部复制到上述你所挂载到虚拟机的路径下,我这个例子中是:/home/ubuntu/masm/

目录中的文件我们用到的DEBUG.COM、LINK.EXE、MASM.EXE文件分别对应我们所需的debug、link、masm三个工具。
有了这几个工具之后,我们就可以进行汇编开发学习了,首先试一下debug:

Linux下8086汇编语言环境的搭建_第7张图片

在linux的/home/ubuntu/masm路径下敲一段最简单的汇编源码hello.asm:

Linux下8086汇编语言环境的搭建_第8张图片

在dosbox虚拟机下用masm编译:
c:\>masm hello.asm

Linux下8086汇编语言环境的搭建_第9张图片

连续敲三个回车之后编译就完成了,如上图编译过程中没有任何错误,
在linux的/home/ubuntu/masm路径多的HELLO.OBJ文件就是masm编译出来的:

在linux下file查看HELLO.OBJ这个文件,可以发现它是属于8086平台下的:
$file HELLO.OBJ

接下来进行链接的工作:
C:\>link hello.obj
连续敲三个回车之后,链接就完成了:

Linux下8086汇编语言环境的搭建_第10张图片

如上图所示链接的过程中抛出了一个警告,提示这个汇编程序没有栈段。当然是这样了,我们的演示的汇编代码也没有设置堆栈嘛。链接之后就生成了HELLO.EXE:

直接在虚拟机运行一下:
C:\>hello.exe

正常运行结束(啥也没输出,因为我们的代码也没输出啥)
到这里,linux下的8086汇编环境搭建就完成了。

你可能感兴趣的:(linux,汇编,8086处理器,dosbox,masm)