外部アセンブリ関数を呼び出す C プログラムを実行しています。学術的な目的で、私は を実行しようとしていますstrcat
。2 つの文字列をアセンブリ プログラムに char * パラメーターとして渡します。ebp をスタックにプッシュし、次のように string1 と string2 を edx と ebx に割り当てます。
mov edx, [ebp+8]
mov ebx, [ebp+4]
残りは次のとおりです。
procStr1:
cmp BYTE PTR [edx], 0
jne readStr1
procStr2:
cmp BYTE PTR [ebx], 0
jne readStr2
jmp bottom
readStr1:
inc edx
jmp procStr1
readStr2:
mov BYTE PTR [edx], 'a'
inc edx
inc ebx
jmp procStr2
bottom:
inc edx
mov BYTE PTR [edx], 0
pop ebx
pop edx
pop ebp
ret
string1 の末尾に a を追加して、機能するかどうかをテストしているだけです。'hi' と 'bye' を入力すると、C プログラムによって (文字列 1 を出力することによって) hiaaa が出力されることを期待します。代わりに、string2 がどんなに大きくても、通常は string1 の後に 13 個の a を取得します。ご意見をいただければ幸いです。本当に頭がおかしくなりそうです..