我有一个双字节整数数组,我用随机3位数字填充,使用ESI遍历数组。当我尝试访问数组的第9个元素并将其存储在ESI中时,出现访问冲突。运行循环时MASM x86访问冲突
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值)。
当我将数组更改为四字节整数时,我也遇到访问冲突,以尝试访问同一地址处的数组的第五个元素。
阵列有多大,每个值是16位,但您允许多少个值? –
编辑:更新代码以添加更多信息。 – hudspero
查看我的回答下面 –