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?