我只是在学习集会。当我使用在线汇编程序时,它会打印" Hello,world!"正如所料。但是,当我使用我刚刚安装的nasm时,我只会打招呼。为什么会这样?
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov edx, len ;message length
mov ecx, msg ;message to write
mov ebx, 1 ;file descriptor (stdout)
mov eax, 4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax, 1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
答案 0 :(得分:0)
正如您在评论中解释的那样,您正在组装如下代码:
nasm helloWorld.asm
问题在于
您没有像可执行文件
汇编后,如果是可执行文件
在Linux下,您将把此代码汇编到ELF文件中。为此,请运行以下命令:
nasm -f elf helloWorld.asm
ld -m elf_i386 -s -o helloWorld helloWorld.o
第一个命令将代码组装到要构建到ELF文件中的对象(.o
)文件中。第二个命令获取该目标文件并将其转换为ELF(可执行)文件。
要运行它,请输入:
./helloWorld