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

时间:2013-11-13 23:01:31

标签: c assembly x86

我用两个C char数组输入汇编程序函数:

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(eaxecx为0)时,一切都很好,但如果它更大则不起作用并抛出错误(例如{{1} } == 1)。

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

eax

我做错了什么?

1 个答案:

答案 0 :(得分:1)

你可以查看movsb的装配指南吗?如果正常的英特尔movsb, 它应该像这样编码:

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

此外,需要检查一些事情:

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

2,REP MOVSB期间的中断保护