[英]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.