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

ECX是相对于loop指令的倒计时寄存器。从零开始意味着它将循环遍历其完整的 32 位范围,以0xffff ffff. 有时这很有用。

在这种情况下,如果要循环 5 次,请从ecx设置为 5 开始。

于 2012-11-12T16:45:35.823 回答