【发布时间】:2011-12-05 23:21:47
【问题描述】:
我正在运行一个调用外部汇编函数的 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)。相反,我通常在 string1 之后得到 13 个 a,不管 string2 有多大。我会很感激任何意见,这真的让我难以置信..
【问题讨论】: