资讯专栏INFORMATION COLUMN

Linux下用汇编输出Hello, world

awkj / 1747人阅读

摘要:下列是汇编语法实现的程序。将生成链接生成可执行文件执行就能看到的输出了。

下列是Intel汇编语法实现的 Hello, world!程序。

;; hello.asm
;; nasm -f elf hello.asm; will output hello.o
;; ld -s -o hello hello.o

;; section, same to segment
segment .data      ; 数据段声明, 下列代码将放在数据段中
    msg db "Hello, world!", 0xA   ; 要输出的字符串
    len equ $ - msg         ; 字串长度

section .text      ; 代码段声明,下列代码将放入代码段中
global _start      ; 指定入口函数,global修饰是为了让外部可以引用_start
_start:         ; 在屏幕上显示一个字符串
    mov edx, len   ; 参数三:字符串长度
    mov ecx, msg   ; 参数二:要显示的字符串
    mov ebx, 1    ; 参数一:文件描述符(stdout)
    mov eax, 4    ; 系统调用号(sys_write)
    int 0x80     ; 调用内核功能
             ; 退出程序
    mov ebx, 0    ; 参数一:退出代码
    mov eax, 1    ; 系统调用号(sys_exit)
    int 0x80     ; 调用内核功能

在Linux下可以用nasm编译成ELF格式的目标文件,然后链接成可执行文件。

nasm -f elf hello.asm  #将生成hello.o
ld -s -o hello hello.o  #链接生成可执行文件hello.

执行./hello就能看到"Hello, world!"的输出了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7806.html

相关文章

  • Linux用汇输出Hello, world

    摘要:下列是汇编语法实现的程序。将生成链接生成可执行文件执行就能看到的输出了。 下列是Intel汇编语法实现的 Hello, world!程序。 ;; hello.asm ;; nasm -f elf hello.asm; will output hello.o ;; ld -s -o hello hello.o ;; section, same to segment segment ....

    SQC 评论0 收藏0
  • Linux系统调用原理

    摘要:操作系统通过系统调用为运行于其上的进程提供服务。是更高层次的库函数,建立在系统调用之上,实现数据格式化等功能。而库函数与系统调用处理函数之间,由于涉及用户态与内核态的切换,要复杂一些。 操作系统通过系统调用为运行于其上的进程提供服务。 当用户态进程发起一个系统调用, CPU 将切换到 内核态 并开始执行一个 内核函数 。 内核函数负责响应应用程序的要求,例如操作文件、进行网络通讯或者申...

    Jonathan Shieber 评论0 收藏0
  • Linux(ubuntu)30天自制os学习引导,第1天(0)

    摘要:今天开始书本上第一天的内容,内容的主要是分三个部分用二进制编辑器,写一个用机器码的启动程序开始用汇编的指令写的启动程序开始用真正的汇编语言写的启动程序从上面的三个过程中,大家可以学习如何使用这个二进制文件编辑器,还有系统的一些简单的命令,如 今天开始书本上第一天的内容,内容的主要是分三个部分: 1. 用二进制编辑器hexedit,写一个用机器码hello wolrd的启动程序 2. ...

    channg 评论0 收藏0
  • Java™ 教程(“Hello World!”应用程序)

    Hello World!应用程序 下面列出的小节提供了编译和运行一个简单的Hello World!应用程序的详细说明,第一部分提供了关于使用NetBeans IDE入门的信息,集成开发环境极大地简化了软件开发过程。NetBeans IDE运行在下面列出的所有平台上,其余部分提供了特定于平台的指示,用于在没有集成开发环境的情况下启动。如果遇到问题,一定要参考常见问题部分,它为新用户遇到的许多问题提供...

    skinner 评论0 收藏0
  • Python基础

    摘要:引入模块新建,内容如下执行。基础语法常用函数数据类型表达式变量条件和循环函数。迭代的和列表生成一般表达式复杂表达式条件表达式多层表达式后记至此,基础结束。 前言 Python,是龟叔在1989年为了打发无聊的圣诞节而编写的一门编程语言,特点是优雅、明确、简单,现今拥有丰富的标准库和第三方库。Python适合开发Web网站和各种网络服务,系统工具和脚本,作为胶水语言把其他语言开发的模块包...

    Shonim 评论0 收藏0

发表评论

0条评论

awkj

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<