linux下使用汇编语言编写hello world!程序

转载 2016年08月31日 10:40:37

1、下载nasm安装包

#wget http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/nasm-2.11.08.tar.gz

2、解压安装nasm

#tar -xzvf nasm-2.11.08.tar.gz

#cd nasm-2.11.08

#./configure

#make

#make install

3、编写hello.asm

section .data                           ;section declaration
msg     db      "Hello, world!",0xA     ;our dear string
len     equ     $ - msg                 ;length of our dear string
section .text                           ;section declaration
                       ;we must export the entry point to the ELF linker or
   global _start       ;loader. They conventionally recognize _start as their
                       ;entry point. Use ld -e foo to override the default.
_start:
;write our string to stdout
       mov     eax,4   ;system call number (sys_write)
       mov     ebx,1   ;first argument: file handle (stdout)
       mov     ecx,msg ;second argument: pointer to message to write
       mov     edx,len ;third argument: message length
       int     0x80    ;call kernel
;and exit
       mov     eax,1   ;system call number (sys_exit)
       xor     ebx,ebx ;first syscall argument: exit code
       int     0x80    ;call kernel


4、编译连接

#nasm -f elf64 hello.asm (linux是64位的,如果是32,请使用elf32)

#ld -s -o hello hello.o

#ls hello

hello

5、执行程序

#./hello

Hello, world!


汇编语言编写的Hello World

Linux 下用汇编语言编写的代码具有两种不同的形式。第一种是完全的汇编代码,指的是整个程序全部用汇编语言编写。尽管是完全的汇编代码,Linux 平台下的汇编工具也吸收了 C 语言的长处,使得程序员可...
  • sunshine__me
  • sunshine__me
  • 2015年09月29日 20:36
  • 4943

我的第一个汇编语言程序:HelloWorld

_stack segment stack 'stack'; 定义堆栈段 db 32766 dup(0) ;堆栈区长度:32766+2=32KB tos dw 0 ;定义堆栈栈顶 _stack en...
  • yongf2014
  • yongf2014
  • 2015年05月31日 20:31
  • 2834

C++之第一个程序Hello World,使用IO库输出Hello World

1.首先打开软件工具Visual C++ 6.0软件,打开之后,新建一个C++ Source File文件,输入文件名和你想要存放此程序的地方,如下图一样,点击确定即可编写C++代码: 2.代码...
  • u012561176
  • u012561176
  • 2014年12月16日 11:13
  • 1485

几乎所有编程语言的hello, world程序(2)

D// Hello World in Dimport std.stdio;void main() { writefln("Hello World!"); }D4// Hello World as...
  • NoMasp
  • NoMasp
  • 2015年04月29日 23:02
  • 2673

自制操作系统-最简单的系统hello World

按照自制操作系统的步骤,首先需要使用二进制编辑器编辑一个.img文件,编辑完成之后,可以有两种运行方式:1:可以将该img文件烧进软盘文件中,重新启动计算机 2:使用qume虚拟机运行。我们采...
  • hongbochen1223
  • hongbochen1223
  • 2015年05月09日 02:11
  • 1300

【C#】第一个C#程序——Hello World!

前言:       学习每一种语言的开始,都有一句话,叫万丈高楼平地起。也有一个程序,叫:HelloWorld。下面是步骤,代码和效果图: 步骤 点击文件——新建——项目——Visual ...
  • Gnd15732625435
  • Gnd15732625435
  • 2016年03月01日 13:07
  • 1236

汇编语言的Hello world程序

最近一直在学习汇编语言,但是只学会做了一些最基本的程序,都没有输出,只是把结果储存在一个通用寄存器里然后结束,这样怎么行?确实,可以通过Windows自带的Debug程序来单步执行程序以观察结果,但是...
  • u011076994
  • u011076994
  • 2013年07月08日 13:01
  • 588

php环境搭建,小白helloworld初试

小白学习php,环境搭建,helloworld初始。
  • u013100581
  • u013100581
  • 2017年01月04日 17:48
  • 841

第一个java程序——hello world

实现一个java程序,主要有三个步骤:1、编写源代码,2、编译源代码,3、运行。java的源代码必须先编译,然后才能由JVM解析执行。所以我们程序员第一步的工作就是要编写java的源代码文件,java...
  • liubao616311
  • liubao616311
  • 2014年07月01日 22:42
  • 1828

Qt入门(2)——使用Qt编写的Hello world

对于一个qt初学者来说,一步一步来直到作出一个hello world是最基础的入门。 从菜单:应用程序->编程中找到QtCreator 打开QtCreator 文件->新建文件或工程……  ,选择 其...
  • yincheng01
  • yincheng01
  • 2014年09月04日 10:40
  • 3828
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下使用汇编语言编写hello world!程序
举报原因:
原因补充:

(最多只允许输入30个字)