下列是Intel汇编语法实现的 Hello, world!
程序。
;; hello.asm;; nasm -f elf hello.asm; will output hello.o;; ld -s -o hello hello.o;; section, same to segmentsegment .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.old -s -o hello hello.o #链接生成可执行文件hello.
执行./hello
就能看到"Hello, world!"的输出了。