FPU. Как сделать петлю?

Почему, когда дело доходит до цикла в ECX, возникает большое случайное значение, равное 0? И есть ли другой способ сделать цикл здесь?

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function FPUTest(a:Double):Double;
asm
  FINIT
  FLD a
  MOV ecx,0
  @cycle:
    FADD st(0), st(0)
  loop @cycle
end;

var a:Integer;
begin
  readln(a);
  Writeln(FPUTest(a));
end

,

1 ответ

Решение

ECX регистр обратного отсчета по отношению к loop инструкция. Начало с нуля означает, что он будет проходить через весь 32-битный диапазон, начиная с 0xffff ffff, Иногда это полезно.

В этом случае, если вы хотите выполнить цикл 5 раз, начните с ecx установите на 5.

Другие вопросы по тегам