Опитвам се да попълня масив от реални числа с двойна точност (64 бита), като използвам инструкциите за цикъл в NASM x86 16 бита, но получавам грешката invalid effective address
. Операционната система е Windows XP 32 бита, но всъщност програмата работи като MS-DOS 16-битова.
Например:
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