0
我在使用MASM訪問數組時遇到了一些困難。我有一個非常大的陣列和一個臨時變量,像這樣:在MASM中訪問數組
.data
array DWORD 65000 DUP (0)
temp DWORD 0
在我的主,我這有來填補它:
mov esi, offset array
mov edi, 0
mov ecx, 0
fill:
mov [esi], ecx
add esi, 4
inc ecx
cmp ecx, 65000
jl fill
mov esi, offset array ;reset the array location to the start
後,我想訪問數組這個循環:
mark:
mov temp, 4 ;get another 4 to temp to move along the array
add esi, temp ;add temp to esi to keep moving
mov edx, [esi] ;access the current value
cmp esi, 20 ;just trying to get first few elements
jmp mark
exit
main ENDP
END main
我始終有一個訪問衝突錯誤,與在那裏我試圖訪問的電流值就行了突破。這也發生在第一個循環。任何想法爲什麼發生這種情況?謝謝!
你的第二個循環是無限的。你比較'esi'到20(這不會發生 - 嘗試'cmp esi,offset array + 20'),然後無條件地跳轉到'mark'。 'jl'是有符號的,'jb'是無符號的。 –
謝謝,我繼續申請。如果你有時間,你能解釋一下在答案中修改數組嗎?也許可以解釋一下這個過程,我似乎認爲簡單訪問和實際修改這些值是有區別的。 – qsorted
我想'mov ecx,[esi]'會「簡單地訪問」數組。 'mov [esi],ecx'會「修改值」。你的「填充」循環修改數組,因爲它被初始化爲零。 –