摘要:下列是汇编语法实现的程序。将生成链接生成可执行文件执行就能看到的输出了。
下列是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
摘要:下列是汇编语法实现的程序。将生成链接生成可执行文件执行就能看到的输出了。 下列是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 ....
摘要:操作系统通过系统调用为运行于其上的进程提供服务。是更高层次的库函数,建立在系统调用之上,实现数据格式化等功能。而库函数与系统调用处理函数之间,由于涉及用户态与内核态的切换,要复杂一些。 操作系统通过系统调用为运行于其上的进程提供服务。 当用户态进程发起一个系统调用, CPU 将切换到 内核态 并开始执行一个 内核函数 。 内核函数负责响应应用程序的要求,例如操作文件、进行网络通讯或者申...
摘要:今天开始书本上第一天的内容,内容的主要是分三个部分用二进制编辑器,写一个用机器码的启动程序开始用汇编的指令写的启动程序开始用真正的汇编语言写的启动程序从上面的三个过程中,大家可以学习如何使用这个二进制文件编辑器,还有系统的一些简单的命令,如 今天开始书本上第一天的内容,内容的主要是分三个部分: 1. 用二进制编辑器hexedit,写一个用机器码hello wolrd的启动程序 2. ...
Hello World!应用程序 下面列出的小节提供了编译和运行一个简单的Hello World!应用程序的详细说明,第一部分提供了关于使用NetBeans IDE入门的信息,集成开发环境极大地简化了软件开发过程。NetBeans IDE运行在下面列出的所有平台上,其余部分提供了特定于平台的指示,用于在没有集成开发环境的情况下启动。如果遇到问题,一定要参考常见问题部分,它为新用户遇到的许多问题提供...
阅读 2626·2023-04-26 02:00
阅读 2478·2019-08-30 15:54
阅读 696·2019-08-30 11:15
阅读 1372·2019-08-29 15:31
阅读 794·2019-08-29 14:12
阅读 385·2019-08-29 13:08
阅读 696·2019-08-27 10:51
阅读 2588·2019-08-26 12:17