Das is ja noch einfacher:
Delphi-Quellcode:
var
zz:
array[0..5]
of byte;
var
p: word;
{??? was ist das}
function nextrand: word;
begin
asm
push bx
mov ax, Word ptr zz [0];
mov bx, Word ptr zz [2];
mov cx, Word ptr zz [4];
sub ax, bx;
jnc @@nrStore;
add ax, p
@@nrStore:
mov Word ptr zz [0], bx
mov Word ptr zz [2], cx
mov Word ptr zz [4], ax
mov @result, ax
pop bx
end;
end;
var
i: integer;
begin
randseed := 0;
p := 42;
for i:=0
to 5
do zz[i] := random(256);
for i:=1
to 10
do writeln(nextrand);
end.
Gleich mit Teststub, liefert bei mir: 54350 35009 55073 19341 45514 35732 39405 9782 61905 29623.
Bleiben die Fragen: wie wird zz initialisiert?, was ist p? und wozu das Gedöns in TestRandom?.