Код:
FUNCTION Swap : REAL
VAR_INPUT
B : ARRAY[0..3] OF BYTE; //сюда пихаете свое ...
Order : WORD; (*2143,3412,4321, все остальное as is - 1234*) //... и определяете как свапить
END_VAR
VAR
{flag noinit on}
_ AT %MB0 : ARRAY[0..3] OF BYTE;
W1 AT %MB0 : WORD;
W2 AT %MB2 : WORD;
D AT %MB0 : DWORD;
X AT %MB0 : REAL;
{flag off}
END_VAR
---------------------------
_ := B;
CASE Order OF 3412,4321:
D := ROL(D, 16);
END_CASE
CASE Order OF 2143,4321:
W1 := ROL(W1, 8);
W2 := ROL(W2, 8);
END_CASE
Swap := X;
ps
такие примитивы быстрее написать чем шарится по каким-то оскатам.
скоро таблицу умножения там искать будут