Delphi FPU。如何做一个循环?

Delphi FPU。如何做一个循环?,delphi,assembly,fpu,Delphi,Assembly,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 read

为什么当它进入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

.

ECX
是与
循环
指令相关的倒计时寄存器。从零开始意味着它将在整个32位范围内循环,从
0xffff ffff
开始。有时这是有用的

在这种情况下,如果要循环5次,请先将
ecx
设置为5