問題があります。配列の最後の 3 つの要素を最初の 3 つに置き換える関数でポインターを送信します。unsigned char 配列を使用して送信する必要があり、ASM で動作するはずです。
int main(int argc, char* argv[])
{
unsigned char arr[24]={
1,2,3,4,5,6,
7,8,9,10,11,12,
13,14,15,16,17,18,
19,20,21,22,23,24
};// example
AsmFlipVertical(arr);
};
void AsmFlipVertical(unsigned char *arr)
{
_asm
{
les esi,arr ; esi=adress of first elem
mov eax,esi
add eax,21
mov edi,eax ; edi=adress of first elem+21;edi is a adress of 21th elem of array
cld
mov ecx,3
rep movsb
}
}
esi から edi への movsb "rep movsb" でエラーが発生しました。何が問題なのですか? この ASM コードをメイン関数で使用する場合は問題ありませんが、関数で ASM コードを使用する必要があります...