我是使用汇编代码编程的硬件新手。所以我读了一本关于它的书,找到了 NASM 汇编器的示例代码:
segment .text ;code segment
global main ;must be declared for linker
main: ;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
segment .data ;data segment
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
所以我用以下命令编译它:
nasm -f elf64 helloworld.asm
ld -s -o helloworld.exe helloworld.o
汇编程序没有问题,可以汇编它并且没有错误,但是程序立即崩溃。我读到了不同的汇编语言,但关键是汇编代码随不同的编译器而不是不同的操作系统而变化,那么我的错误在哪里?