Извиняюсь за полусишный код
procedure swap(var a:integer; var b;integer)
var c:integer;
begin
c := a; a := b; b := c;
end;
function nod(a, b:integer):integer;
begin
while b <> 0 do
begin
writeln(a, ' ', b); // тут трассировка выводится
a = a mod b; swap(a, b);
end
end;
begin
writeln(nod(128,56));
end.