我正在运行一个调用外部汇编函数的 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
我只是通过在 string1 的末尾添加 a 来测试它是否有效。如果我输入“hi”和“bye”,我希望 C 程序打印出 hiaaa(通过打印出 string1)。相反,无论 string2 有多大,我通常会在 string1 之后得到 13 个 a。我会很感激任何意见,这真的让我难以置信..