Я пытаюсь заполнить массив вещественных чисел двойной точности (64-разрядных), используя инструкции цикла в 16-разрядном NASM x86, но получаю ошибку invalid effective address
. ОС — 32-битная Windows XP, но на самом деле программа работает как 16-битная MS-DOS.
Например:
mov cx, 10
fill_array:
fld qword[yArray + cx*8]
fstp qword[xArray + cx*8]
loop fill_array
Возвращает предыдущую ошибку в строках fld
и fstp
.
Массивы объявляются следующим образом:
yArray resq 10
xArray resq 10
Я также пробовал использовать регистр в качестве указателя на массив, но, например, fstp qword[ax]
тоже не работает.
Есть ли способ использовать индексированные массивы с плавающей запятой в 16-битной сборке? Нужно ли мне использовать какие-либо конкретные инструкции FPU?
cx
. - person harold   schedule 15.11.2014fld qword[yArray + 8]
) и ее повторение N раз? - person Ikuzen   schedule 15.11.2014ecx
(должно сгенерировать переопределение размера адреса) или вы можете использовать любую из перечисленных 16-битных адресаций здесь - person harold   schedule 15.11.2014