¿Cómo imprimir argv [0] en NASM?

Quiero almacenarargv[0] en un registro y luego imprímalo, pero obtengo un error de seguridad cuando ejecuto mi programa de ensamblaje.

Rastro:

$ nasm -f macho -o scriptname.o --prefix _ scriptname.asm
$ ld -o scriptname scriptname.o -arch i386 -lc -macosx_version_min 10.6 -e _start -no_pie
$ ./scriptname
Segmentation fault: 11

scriptname.asm:

[bits 32]

section .data

program: db "Program: %s", 0

section .text

global start
extern printf
extern exit

start:

; skip argc
add esp, 4

; ebx := argv[0]
pop ebx

push ebx
push program
call printf
add esp, 8

push 0
call exit

Especificaciones:

ld 64-134.9nasm 0.98.40Xcode 4.5Mac OS X 10.8.2MacBook Pro 2009

Respuestas a la pregunta(1)

Su respuesta a la pregunta