4

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

4

1 に答える 1

6

ECXloop命令に対するカウントダウンレジスタです。ゼロから始まるということは、 から始まる 32 ビットの範囲全体をループすることを意味します0xffff ffff。時々それは役に立ちます。

この場合、5 回ループする場合は、5 にecx設定して開始します。

于 2012-11-12T16:45:35.823 に答える