0

重複の可能性:
x86 を小文字のアセンブリに変換

私の問題では、すべてを小文字に変更する必要がある 2 次元の char 配列があります。

char list[100][20] = {{"ArtUro"}, {"Bryan"}, {"chris"}, {"David"}, {"Jon"}, {"Mark"}, {"shane"}, {"SIMON"}, {"Thomas"}, {"TONY"}};

そして、私が持っています

int b_search (char list[100][20], int count, char* token)
{
__asm
{   
mov eax, 0          ; zero out the result
mov esi, list       ; move the list pointer to ESI
mov ebx, count      ; move the count into EBX
mov edi, token      ; move the token to search for into EDI 
MOV ecx, 0

LOWERCASE_ARRAY:        ;for(ecx = 0, ecx<ebx; ecx++), loops through each name
    CMP ecx, ebx
    JGE GET_OUT
    INC ecx             ;ecx++
    MOV edx, 0;         ;edx = 0

LOWERCASE_STRING:       ;while next char != 0, loop through each byte to convert to lower case
    OR [esi+edx],20h    ;change to lower case
    INC edx
    CMP [esi+edx],0     ;if [esi+edx] not zero, loop again
    JNZ LOWERCASE_STRING
    JMP LOWERCASE_ARRAY ;jump back to start case change of next name

GET_OUT:

ArtUro を小文字に変換することに成功しましたが、配列を Bryan のアドレスにトラバースする方法がわかりません。これは、20 でスケーリングできず、20 を追加するとESI別の場所に移動するためです。

4

1 に答える 1

0
    LEA esi, [esi+20]       

2番目のループの2つのジャンプ命令の間に配置します。でも私の質問を読んでくれた人たちに感謝します。

于 2012-07-25T23:55:24.973 に答える