0

次のように、2 つの C char 配列を使用してアセンブラー関数に入ります。

EncryptAsm(arr1,arr2)

どちらも typechar*で、1 つはテキストを含み、2 番目は '#' 記号でいっぱいで、2 次元配列のように機能し、両方とも同じ長さです。

asm プロシージャで、最初の配列から 2 番目の配列にいくつかの値を渡そうとしています。

mov ecx,row ;calculating index of arr2   index=[row*inputLength+column]
imul ecx,ebx
add ecx,column

mov eax,1 ;calculating index of arr1
imul eax,iterator

mov esi,arr1[eax]
mov edi,arr2[ecx]

movsb

両方の配列のインデックスが 0 (eaxおよびecx0) の場合は問題ありませんが、それよりも大きい場合は機能せず、エラーがスローされます (例: eax==1)。

asm コードでは、配列の型は次のとおりです。

arr1:ptr byte, arr2:ptr byte

私は何を間違っていますか?

4

1 に答える 1

1

movsbの組み立てガイドを確認できますか?通常の Intel movsb の場合、次のようにコーディングします。

CLD
MOV ECX ,100
LEA ESI,FIRST
LEA EDI,SECOND
REP MOVSB

また、何かを確認する必要がありました。

1、SI/DI のセグメント、書き込みアクセスとセグメント長が正しい場合

2、REP MOVSB中の割り込み保護

于 2013-11-17T22:34:33.077 に答える