C -结合edi/esi使用ebp/esp



我正在研究一个在汇编中实现函数并在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指针,我可以找到以空结尾的字符串的末尾。我需要用另一种方式吗?所有东西都必须是索引偏移量吗?

如果[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

最新更新