アセンブラの独習の際にエラーが出ましたが解決策がわかりません。英語ソースだと同じような質問が多いのですが知識がないせいか読み解けません、よろしくお願いします。以下のコード.asmを

$ nasm -f macho64 ninestars.asm

で実行した際

section .text
    global main ; must be declared for linker (gcc)
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 edx,9   ; message length
    mov ecx,s2  ; 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 'Displaying 9 stars',0xa ; a message
len: equ $ - msg                 ; length of message
s2: times 9 db '*'

次のエラーが出ました。

ninestars.asm:5: error: Mach-O 64-bit format does not support 32-bit absolute addresses
ninestars.asm:11: error: Mach-O 64-bit format does not support 32-bit absolute addresses

おそらくecxというレジスタがダメなようです