C 在汇编程序中将值从一个数组传递到另一个数组
我使用两个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
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期间的中断保护