【发布时间】:2013-04-12 14:55:11
【问题描述】:
我正在开发一个项目,该项目在汇编中实现函数并在 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 指针,我可以找到空终止字符串的结尾。我需要使用不同的方式吗?一切都必须是索引偏移量吗?
【问题讨论】:
-
由于
esi和edi用作指针,jge应替换为jae。例如,如果esi是0x7fffffff并且edi是0x80000000,则不会翻转字符串,因为有符号数0x7fffffff大于有符号数0x80000000。指针值应始终被视为无符号数字(除非您正在做一些特殊的调整)。
标签: c function assembly x86 nasm