Sourcecode:(NASM 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 edx,len ;third argument: message length mov ecx,msg ;second argument: pointer to message to write mov ebx,1 ;first argument: file handle (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel ;and exit mov ebx,0 ;first syscall argument: exit code mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel
Ubuntu:编译执行:
nasm -f elf hello.asm
ld –oformat elf32-i386 -m elf_i386 -o hello hello.o
./hello
结果:Hello, world!
版权声明:本文为GangsterPan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。