[英]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( eax
和ecx
为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.