I m using ubuntu 64-bit and trying to run a .asm file on NASM. But it returns this error when I try to run the following code. What Iḿ trying to do is build an executable by compiling (or assembling) object file from the source
$ nasm -f elf hello.asm
, and then after created the file hello.o
is producing executable file itself from the object file by invoking linker
$ ld -s -o hello hello.o
这将最终形成可起诉的 h。
http://www.faqs.org/docs/HCH-HOWTO/Assembly-HOWTO.html” rel=“noretinger” http://www.faqs.org/docs/HCH-HOWTO/Assembly-HOWTO.html。
http://www.ohchr.org。
i386 投入文件“hello.o”的结构与I386:x86-64的产出不符
<><>Code>:
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