linux下编写汇编的Helloworld

在windows下写汇编程序不用多说,学汇编就是以这个平台来学的。

对于经典的hellowworld,在linux下如何汇编实现呢?因为平时的学习都是用的MASM,所以在linux下也用MASM

首先需要一些软件,来模拟DOS,推荐用Dosbox。如果用的ubuntu,在软件中心就可以找到。直接安装后就可以在启动栏看到图标。

或是通过命令

sudo apt-get install dosbox

如果是Deb系,那么输入:

yum -y install dosbox

安装之后进入dosbox界面如下:


然后需要模拟指定C盘的位置。比如,需要使用的debug.exe和masm.exe程序在/home/sincerefly/study/asm/tools目录下

那么输入:

mount c /home/sincerefly/study/asm/tools
之后输入C:就进入你指定的目录了。

现在环境已经搭建完成。来编写我们的第一个helloworld。

汇编的源程序文件是以.asm为后缀的文件。编写程序使用任意编辑器即可。

推荐使用vim和Emacs(PS:vim被称作编辑器之神,Emacs被称作神用的编辑器,功能强大就不多说了,不过需要一定的基础才能使用)

如果还不会用的话,那么推荐使用gedit,使用起来简单,功能也很强大。

把如下汇编代码编辑保存:(代码摘自百度百科)

data SEGMENT
	msg DB 'Hello, world.$'
	data ENDS
code SEGMENT
	ASSUME CS:code,DS:data
  start:MOV AX,data
	MOV DS,AX
	lea dx,msg
	mov ah,9h
	int 21h
	MOV AX,4C00h
	INT 21h
	code ENDS
  END start
好了,保存为hw.asm(保存在刚才的指定路径下)(文件名字不能太长,否则会出错)

之后我们来编译它。

在DOSBOX界面下输入

masm hw.asm
之后按几次回车就会出现下图:

这是怎么回事儿?好像找不到文件,可是文件明明存在啊!

貌似DOSBOX的不是时时更新列表的,也许通过命令可以,不过我也不知道怎么弄,索性重新打开即可。

再次执行编译,会出现下图:


接下来,该链接了,在dosbox下执行(注意没有后缀了)

link hw
成功后如下图:


出现警告LINK:warning L4021: no stack segment

无视即可,因为你没用到堆栈段,他只是警告你没有用到堆栈,但是程序是对的。

接下来执行hw即可,如下图:


看到了helloworld,那么汇编的大门就已经打开。吼吼,希望以后的汇编之路一路顺风~~~

你可能感兴趣的:(汇编,linux)