1

アセンブリで関数を実装し、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 ポインターを使用できれば、null で終了する文字列の末尾を見つけることができます。別の方法を使用する必要がありますか? すべてがインデックス オフセットである必要がありますか?

4

1 に答える 1

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
于 2013-04-12T15:06:37.463 に答える