Вывод переменной в командную строку с использованием сборки в Linux

Пробуя свои силы в сборке Linux, я сталкиваюсь со следующей проблемой. Я только начинаю, так что моя программа является относительно простой, основанной на некоторых примерах, которые я нашел на linuxassembly. Он принимает первый аргумент, переданный в командную строку, и выводит его. Вот что у меня так далеко ...

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

Я знаю, что это плохо написано, но, поскольку я новичок в этом, я просто хочу лучше понять, как работают инструкции / переменные сборки, прежде чем я продолжу. Я собираю и связываю с помощью ...

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

Тогда я бегу, используя ..

./first one two

Я думал, что это будет распечататьone но он печатает бред какY*&, Что я делаю неправильно? Мойtest_string неправильный тип?

Ответы на вопрос(1)

Ваш ответ на вопрос