У меня есть массив двухбайтовых целых чисел, который я заполняю случайными 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 при броске).
Когда я изменяю массив на четырехбайтовые целые числа, я также получаю нарушение доступа для попытки доступа к 5-му элементу массива по тому же адресу.
Насколько велик массив, каждое значение составляет 16 бит, но сколько значений вы допустили? –
EDIT: Обновлен код для добавления дополнительной информации. – hudspero
См. Мой ответ ниже –