簡體   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