繁体   English   中英

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

[英]Passing values from one array to another in assembler

我使用两个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( eaxecx为0)时,一切都很好,但是如果它的值更大,它将不起作用并抛出错误(例如eax == 1)。

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

arr1:ptr byte, arr2:ptr byte

我究竟做错了什么?

您可以查看movsb的组装指南吗? 如果是正常的Intel movsb,则其代码应如下所示:

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

而且,还需要检查一些内容:

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

2,REP MOVSB期间的中断保护

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM