C 在汇编程序中将值从一个数组传递到另一个数组

C 在汇编程序中将值从一个数组传递到另一个数组,c,assembly,x86,C,Assembly,X86,我使用两个C字符数组输入汇编函数,如下所示: EncryptAsm(arr1,arr2) 当两者都是char*类型时,一个包含文本,第二个充满“#”符号,其作用类似于二维数组,两者的长度相同 我试图在asm过程中将一些值从第一个数组传递到第二个数组: mov ecx,row ;calculating index of arr2 index=[row*inputLength+column] imul ecx,ebx add ecx,column mov eax,1 ;calculating

我使用两个C字符数组输入汇编函数,如下所示:

EncryptAsm(arr1,arr2)
当两者都是
char*
类型时,一个包含文本,第二个充满“#”符号,其作用类似于二维数组,两者的长度相同

我试图在asm过程中将一些值从第一个数组传递到第二个数组:

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
ecx
都为0)时,一切都正常,但如果它更大,则不起作用并抛出错误(例如
eax
==1)

在asm代码中,数组的类型为:

arr1:ptr byte, arr2:ptr byte

我做错了什么?

你能检查一下movsb的装配指南吗?如果是一个普通的英特尔公司, 其编码如下:

CLD
MOV ECX ,100
LEA ESI,FIRST
LEA EDI,SECOND
REP MOVSB
此外,还需要检查一些东西:

1,SI/DI的段,如果写访问和段长度正确

2、重复MOVSB期间的中断保护