第一个“hello world“汇编程序

编写属于你的第一个汇编语言程序

正所谓实际是最好的老师,哪怕再厉害,如果只是理论都是之上谈兵,本文是为哪些想了解汇编的人而写的。

首先打开Linux虚拟机,使用xshell连接虚拟机,这里使用Debian操作系统。

第一个“hello world“汇编程序_第1张图片

 确保安装vim或者其他文本编辑器。使用命令vim hello.s

第一个“hello world“汇编程序_第2张图片

 开始编写汇编代码

#hello.s 
.data                    # 数据段声明
        msg : .string "Hello, world!\\n" # 要输出的字符串
        len = . - msg                   # 字串长度
.text                    # 代码段声明
.global _start           # 指定入口函数
         
_start:                  # 在屏幕上显示一个字符串
        movl $len, %edx  # 参数三:字符串长度
        movl $msg, %ecx  # 参数二:要显示的字符串
        movl $1, %ebx    # 参数一:文件描述符(stdout) 
        movl $4, %eax    # 系统调用号(sys_write) 
        int  $0x80       # 调用内核功能
         
                         # 退出程序
        movl $0,%ebx     # 参数一:退出代码
        movl $1,%eax     # 系统调用号(sys_exit) 
        int  $0x80       # 调用内核功能

可执行程序通常划分为如下几个部分:.text、.data 和 .bss,其中 .text 是只读的代码区,.data 是可读可写的数据区,而 .bss 则是可读可写且没有初始化的数据区。

汇编代码一般会使用系统调用,一般涉及输入输出等操作都有系统调用,除非只做加减乘除等操作。

第一个“hello world“汇编程序_第3张图片

使用as命令生成.o文件

as -o hello.o hello.s

 最后使用连接器生成可执行文件

ld -s -o hello hello.o

 第一个“hello world“汇编程序_第4张图片

执行命令即可看到命令结果

 第一个“hello world“汇编程序_第5张图片

 本人水平有限,如有错误还请见谅。

你可能感兴趣的:(linux)