Delphi FPU。如何做一个循环?
为什么当它进入ECX中的循环时,会出现一些大的随机值而不是0?还有其他的方法可以在这里循环吗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
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