linux下编写汇编的Helloworld
2015-01-08 17:50
253 查看
在windows下写汇编程序不用多说,学汇编就是以这个平台来学的。
对于经典的hellowworld,在linux下如何汇编实现呢?因为平时的学习都是用的MASM,所以在linux下也用MASM
首先需要一些软件,来模拟DOS,推荐用Dosbox。如果用的ubuntu,在软件中心就可以找到。直接安装后就可以在启动栏看到图标。
或是通过命令
[html] view
plaincopy
sudo apt-get install dosbox
如果是Deb系,那么输入:
[html] view
plaincopy
yum -y install dosbox
安装之后进入dosbox界面如下:
然后需要模拟指定C盘的位置。比如,需要使用的debug.exe和masm.exe程序在/home/sincerefly/study/asm/tools目录下
那么输入:
[html] view
plaincopy
mount c /home/sincerefly/study/asm/tools
之后输入C:就进入你指定的目录了。
现在环境已经搭建完成。来编写我们的第一个helloworld。
汇编的源程序文件是以.asm为后缀的文件。编写程序使用任意编辑器即可。
推荐使用vim和Emacs(PS:vim被称作编辑器之神,Emacs被称作神用的编辑器,功能强大就不多说了,不过需要一定的基础才能使用)
如果还不会用的话,那么推荐使用gedit,使用起来简单,功能也很强大。
把如下汇编代码编辑保存:(代码摘自百度百科)
[html] view
plaincopy
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界面下输入
[html] view
plaincopy
masm hw.asm
之后按几次回车就会出现下图:
这是怎么回事儿?好像找不到文件,可是文件明明存在啊!
貌似DOSBOX的不是时时更新列表的,也许通过命令可以,不过我也不知道怎么弄,索性重新打开即可。
再次执行编译,会出现下图:
接下来,该链接了,在dosbox下执行(注意没有后缀了)
[html] view
plaincopy
link hw
成功后如下图:
出现警告LINK:warning L4021: no stack segment
无视即可,因为你没用到堆栈段,他只是警告你没有用到堆栈,但是程序是对的。
接下来执行hw即可,如下图:
对于经典的hellowworld,在linux下如何汇编实现呢?因为平时的学习都是用的MASM,所以在linux下也用MASM
首先需要一些软件,来模拟DOS,推荐用Dosbox。如果用的ubuntu,在软件中心就可以找到。直接安装后就可以在启动栏看到图标。
或是通过命令
[html] view
plaincopy
sudo apt-get install dosbox
如果是Deb系,那么输入:
[html] view
plaincopy
yum -y install dosbox
安装之后进入dosbox界面如下:
然后需要模拟指定C盘的位置。比如,需要使用的debug.exe和masm.exe程序在/home/sincerefly/study/asm/tools目录下
那么输入:
[html] view
plaincopy
mount c /home/sincerefly/study/asm/tools
之后输入C:就进入你指定的目录了。
现在环境已经搭建完成。来编写我们的第一个helloworld。
汇编的源程序文件是以.asm为后缀的文件。编写程序使用任意编辑器即可。
推荐使用vim和Emacs(PS:vim被称作编辑器之神,Emacs被称作神用的编辑器,功能强大就不多说了,不过需要一定的基础才能使用)
如果还不会用的话,那么推荐使用gedit,使用起来简单,功能也很强大。
把如下汇编代码编辑保存:(代码摘自百度百科)
[html] view
plaincopy
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界面下输入
[html] view
plaincopy
masm hw.asm
之后按几次回车就会出现下图:
这是怎么回事儿?好像找不到文件,可是文件明明存在啊!
貌似DOSBOX的不是时时更新列表的,也许通过命令可以,不过我也不知道怎么弄,索性重新打开即可。
再次执行编译,会出现下图:
接下来,该链接了,在dosbox下执行(注意没有后缀了)
[html] view
plaincopy
link hw
成功后如下图:
出现警告LINK:warning L4021: no stack segment
无视即可,因为你没用到堆栈段,他只是警告你没有用到堆栈,但是程序是对的。
接下来执行hw即可,如下图:
相关文章推荐
- linux下编写汇编的Helloworld
- linux下编写汇编的Helloworld
- linux中C语言编写的第一个程序HelloWorld
- Linux汇编教程02:编写第一个汇编程序
- linux之helloworld编写
- (原创)一步一步学ZedBoard & Zynq(六):在ZedBoard上运行linux并编写linux下的应用程序HelloWorld
- linux下使用汇编语言编写hello world!程序
- (一)为Android系统编写Linux内核驱动程序HelloWorld
- Linux操作系统的简单指令及如何使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。
- linux下使用汇编语言编写hello world!程序
- 在linux环境下编写汇编
- 【Linux】使用vim编写一个程序,gcc查看预处理、编译、汇编、链接过程
- 1.2.在linux环境实践,使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。并熟悉相关指令。
- 在Linux环境下(Ubuntu)编写MASM汇编程序
- 在ZedBoard上运行linux并编写linux下的应用程序HelloWorld
- Linux汇编教程02:编写第一个汇编程序
- Linux网卡驱动程序编写
- Linux 汇编语言开发指南
- linux下编写OpenGL程序的一些准备工作
- 体会Linux与生俱来的美 高级篇 编写自己的Shell解释器(全文)