Я пытаюсь объединить две строки в другую строку для попытки реализации FizzBuzz в сборке. Мои ценности базы данных выглядеть примерно так:String concatenation NASM
buffer: times 10 db 0
fizz: db "Fizz" ; Length of each is 4, so add 4.
buzz: db "Buzz"
То, что я пытался сделать что-то вроде mov buffer, [fizz]
. Однако, когда я пытаюсь что-то вроде этого, NASM говорит invalid combination of opcode and operands
. Я изучаю сборку самостоятельно и только начинаю, поэтому мне жаль, если это может показаться очевидным.
вы не можете просто скопировать данные из одного места памяти в другое, как это. Посмотрите на строковые инструкции. 'movsb', вероятно, является хорошим местом для начала, за которым следуют' movsw' и 'movsd'. Но в основном, укажите источник на fizz, укажите dest в буфере и скопируйте 4 байта. Переместите источник, чтобы указать на гудение, а затем скопируйте еще 4 байта. – enhzflep
В этом случае с двумя строками, имеющими 4 символа, а целевой буфер инициализируется ко всем нулям, вы также можете сделать что-то вроде: «mov eax, [fizz]»/'mov [buffer], eax' /' mov eax, [buzz] '/' mov [buffer + 4], eax' – Michael