Вывод переменной в командную строку с использованием сборки в 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
неправильный тип?