Я запускаю программу на C, которая вызывает функцию внешней сборки. В академических целях я пытаюсь выполнить strcat
. Я передаю две строки в мою программу сборки в качестве параметров char *. Я помещаю ebp в стек и назначаю string1 и string2 для edx и ebx следующим образом:
mov edx, [ebp+8]
mov ebx, [ebp+4]
Теперь все остальное выглядит следующим образом:
procStr1:
cmp BYTE PTR [edx], 0
jne readStr1
procStr2:
cmp BYTE PTR [ebx], 0
jne readStr2
jmp bottom
readStr1:
inc edx
jmp procStr1
readStr2:
mov BYTE PTR [edx], 'a'
inc edx
inc ebx
jmp procStr2
bottom:
inc edx
mov BYTE PTR [edx], 0
pop ebx
pop edx
pop ebp
ret
Я просто проверяю, работает ли он, добавляя в конец строки1. Если я введу «привет» и «пока», я ожидаю, что Hiaaa будет распечатан программой C (распечатав string1). Вместо этого я обычно получаю 13 a после string1, независимо от того, насколько велика string2. Буду признателен за любой вклад, это действительно ошеломляет мой разум ..