arr dw 100 dup (0) ; массив слов
ind dw 0 ; текущий индекс массива
mov bx, ind
mov arr[bx*2], ax ; записать значение ax в массиве
inc ind
Результат:
**Error** test.asm(238) Illegal indexing mode
Как правильно?
Ответ
Организация и функционирование вычислительных машин
Косвенная адресация с масштабированием
Этот метод адресации полностью
идентичен предыдущему, за исключением
того, что с его помощью можно
прочитать элемент массива слов,
двойных слов или учетверенных слов,
просто поместив номер элемента в
регистр:
mov ax,[esi*2]+2
Множитель, который может быть равен 1,
2, 4 или 8, соответствует размеру
элемента массива - байту, слову,
двойному слову, учетверенному слову
соответственно. Из регистров в этом
варианте адресации можно использовать
только ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI,
ЕВР, ESP, но не SI, DI, ВР или SP,
которые можно было использовать в
предыдущих вариантах.
То есть, как правильно заметил skegg, тут подойдет mov arr[ebx*2], ax
Комментариев нет:
Отправить комментарий