爲了完成一個彙編程序項目,我們需要對輸入字符串進行加密,傳輸和解密,我在其中一個類中使用了C和ASM {}。在彙編程序中訪問陣列成員
該鍵被加載到一個空的C字符數組中(20個字符長),然後稍後用XOR語句進行加密。
的代碼來加載陣列的地址是:
LEA ESI,鍵
這使 '關鍵' 的地址放入ESI。當我們在調試模式下檢查寄存器時,這裏的地址與關鍵數組的地址相同,所以我們知道這是有效的。
MOV EDX,[ESI]
,我們認爲這將移動ESI的第一指標的值到EDX,我們用 「MOV [ESI],EAX」 把一個價值註冊到esi數組中。反過來似乎是合理的。
然而,edx實際得到的值是「875575655」(上次運行)或類似。對於char值來說太大了。
我感覺我們可能訪問錯誤的數組, 任何意見,將不勝感激。
注意:通常要增加數組索引,我們只是簡單地使用inc esi,然後像上面那樣讀取,這也是我們計劃從數組讀取數據的方式。