linux下编写汇编的Helloworld


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

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

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

或是通过命令

[html]  view plain copy
  1. sudo apt-get install dosbox  

如果是Deb系,那么输入:

[html]  view plain copy
  1. yum -y install dosbox  

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


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

那么输入:

[html]  view plain copy
  1. mount c /home/sincerefly/study/asm/tools  
之后输入C:就进入你指定的目录了。

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

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

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

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

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

[html]  view plain copy
  1. data SEGMENT  
  2.     msg DB 'Hello, world.$'  
  3.     data ENDS  
  4. code SEGMENT  
  5.     ASSUME CS:code,DS:data  
  6.   start:MOV AX,data  
  7.     MOV DS,AX  
  8.     lea dx,msg  
  9.     mov ah,9h  
  10.     int 21h  
  11.     MOV AX,4C00h  
  12.     INT 21h  
  13.     code ENDS  
  14.   END start  
好了,保存为hw.asm(保存在刚才的指定路径下)(文件名字不能太长,否则会出错)

之后我们来编译它。

在DOSBOX界面下输入

[html]  view plain copy
  1. masm hw.asm  
之后按几次回车就会出现下图:

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

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

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


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

[html]  view plain copy
  1. link hw  
成功后如下图:


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

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值