我使用两个 C char 数组输入汇编函数,如下所示:
EncryptAsm(arr1,arr2)
其中两个都是 type 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
我究竟做错了什么?