将ebp / esp与edi / esi结合使用

时间:2013-04-12 14:55:12

标签: c function assembly x86 nasm

我正在开发一个在程序集中实现函数并在C中调用它们的项目。这样做需要使用EBP和ESP。 [EBP + 8]指向我想在程序集函数中反转的字符串的开头。我打算这样做:

cmp     esi, edi
jge     reversed
mov     al, [esi]
mov     bl, [edi]
mov     [esi], bl
mov     [edi], al
inc     esi
dec     edi
jmp     reverse_string

如果我可以使用esi和edi指针,我可以找到空终止字符串的结尾。我需要使用不同的方式吗?一切都必须是索引偏移吗?

1 个答案:

答案 0 :(得分:1)

如果[EBP + 8]包含字符串指针,您只需将其移至ESI并从那里继续。

mov esi,[ebp+8]
mov edi,esi
mov al,0
mov ecx,-1
cld
repne scasb   ; find the NULL terminator
dec edi
.... your original code follows