Zmienna drukowania do linii poleceń za pomocą zespołu w systemie Linux

Próbuję swoich sił przy montażu Linuksa i napotykam na następujący problem. Właśnie zaczynam, więc mój program jest stosunkowo prosty i pochodzi z kilku przykładów, które znalazłem w linuxassembly. Przyjmuje pierwszy argument przekazany do linii poleceń i wypisuje go. Oto co mam do tej pory ...

section .bss
    test_string: resb 3

section .text
    global _start

_start:
    pop ebx     ;argument number
    pop ebx     ;program name
    pop ebx     ;first argument
    mov [test_string],ebx

    mov eax,4
    mov ebx,1
    mov ecx,test_string
    mov edx,3
    int 80h

    mov eax,1
    mov ebx,0
    int 80h

Wiem, że jest to źle napisane, ale ponieważ jestem nowy, po prostu staram się lepiej zrozumieć, jak działają instrukcje / zmienne montażowe, zanim przejdę dalej. Składam i łączę używając ...

nasm -f elf first.asm
ld -m elf_i386 -s -o first first.o

Potem biegam używając ..

./first one two

Myślałem, że to się wydrukujeone ale drukuje bełkotY*&. Co ja robię źle? Jest mójtest_string zły typ?

questionAnswers(1)

yourAnswerToTheQuestion