Я нахожусь в процессе написания программы на ассемблере, которая принимает в качестве входных данных две строки и объединяет их. Вот что у меня есть: (с использованием синтаксиса NASM)
SECTION .data
hello: db "Hello ",0
world: db "world!",0
SECTION .text
; do the concatenation
Поскольку я никогда раньше не работал со строками в сборке x86, мне нужно знать, как в первую очередь работают хранение и манипулирование строками.
Я предполагаю, что как только длина каждой строки станет известна, эта конкатенация просто повлечет за собой перемещение частей памяти вокруг. Эта часть может быть упрощена с помощью libc
. (Я могу использовать strlen()
и strcat()
.)
Моя настоящая проблема в том, что я не знаком с тем, как строки хранятся в сборке x86. Они просто добавляются в стек ...? Они куда-нибудь ходят? Должен ли я использовать malloc()
(как-то)?