【发布时间】:2016-02-28 17:41:23
【问题描述】:
我有一个两字节整数数组,我用随机的 3 位数字填充它,使用 ESI 遍历数组。当我尝试访问数组的第 9 个元素并将其存储在 ESI 中时,我遇到了访问冲突。
ARRAYSIZE = 200
.data
list WORD ARRAYSIZE DUP(?)
fillArray PROC
push OFFSET list
mov esi, [esp] ;GET ADDRESS OF FIRST ELEMENT INTO ESI
mov ecx, request ;NUMBER OF ELEMENTS TO BE ADDED
ArrFill:
;calculate random 3-digit number, store in eax
dec ecx
mov [esi], eax ;THIS IS THE LINE THAT THROWS THE EXCEPTION
sub esi, 2
cmp ecx, 0
jnz ArrFill
抛出异常:访问冲突写入位置0x00405FFE(抛出时ESI的值)。
当我将数组更改为 4 字节整数时,我还会因为尝试访问同一地址的数组的第 5 个元素而遇到访问冲突。
【问题讨论】:
-
数组有多大,每个值都是 16 位,但你允许多少个值?
-
编辑:更新代码以添加更多信息。
标签: arrays exception assembly masm irvine32