Abrir un archivo desde el argumento de la línea de comando

Estoy tratando de crear un programa de ensamblaje que cree un archivo que se especifica en la línea de comando (argv [1]). Funciona perfectamente bien si la cadena ya está almacenada, pero si la ejecuto como está con el nombre_archivo no movido a rbx, funciona perfectamente bien.

section .text
   global _start

_start:

  ; Equivalent to mov rsp, [rsp+8]
  pop   rbx; argc
  pop   rbx; argv[0]
  pop   rbx; argv[1]

  mov   rax, 8
 ;mov   rbx, file_name  ; Commented out 
  mov   rcx, 0744
  syscall

  ; Exit
  mov   rax, 1
  mov   rbx, 0
  syscall

section .data
  file_name db'file.txt'

También he intentado esto desdeaquí y ahora me doy cuenta de que esto está saltando para salir a pesar de que argc es 2, pero no obstante lo intenté en vano:

  pop   rcx
  cmp   rcx, 2
  jne   exit
  add   rsp, 8
  pop   rbx

  mov   rax, 8
  mov   rcx, 0744
  syscall

¿Cómo puedo arreglar esto?

Editar 1:

Cambió a syscalls de 64 bits. Aquí está mi práctica hola mundo:

section .text
   global _start

_start:
  mov   rax, 1
  mov   rdi, 1
  mov   rsi, string
  mov   rdx, strlen
  syscall

  ; Exit
  mov   rax, 60
  mov   rbx, 0
  syscall

  section .data
    string      db 'Hello, World!', 10
    strlen      equ $ - string

Ahora con crear archivo:

section .text
   global _start

_start:
  mov   rax, 85
  mov   rdi, file_name
  mov   rsi, 0744
  syscall

  ; Exit
  mov   rax, 60
  mov   rbx, 0
  syscall

section .data
  file_name     db 'File.txt'

Y finalmente con argumentos de archivo:

section .text
   global _start

_start:
  pop   rbx
  pop   rbx
  pop   rbx
  mov   rdi, rbx

  mov   rax, 85
  mov   rsi, 0744
  syscall

  ; Exit
  mov   rax, 60
  mov   rbx, 0
  syscall

Respuestas a la pregunta(0)

Su respuesta a la pregunta