[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]
UNIT HiLo;
(**) INTERFACE (**)
FUNCTION SwapN(B : Byte) : Byte;
FUNCTION HiN(B : Byte) : Byte;
FUNCTION LoN(B : Byte) : Byte;
FUNCTION SwapW(L : LongInt) : LongInt;
FUNCTION HiW(L : LongInt) : Word;
FUNCTION LoW(L : LongInt) : Word;
FUNCTION WordFromB(H, L : Byte) : Word;
FUNCTION LongFromW(H, L : Word) : LongInt;
(**) IMPLEMENTATION (**)
FUNCTION SwapN(B : Byte) : Byte; Assembler;
ASM
MOV AL, B {byte in AL}
MOV AH, AL {now in AH too}
MOV CL, 4 {set up to shift by 4}
SHL AL, CL {AL has low nibble -> high}
SHR AH, CL {AH has high nibble -> low}
ADD AL, AH {combine them}
END;
FUNCTION HiN(B : Byte) : Byte; Assembler;
ASM
MOV AL, B
MOV CL, 4
SHR AL, CL
END;
FUNCTION LoN(B : Byte) : Byte; Assembler;
ASM
MOV AL, B
AND AL, 0Fh
END;
FUNCTION SwapW(L : LongInt) : LongInt; Assembler;
ASM
MOV AX, Word(L+2)
MOV DX, Word(L)
END;
FUNCTION HiW(L : LongInt) : Word; Assembler;
ASM
MOV AX, Word(L+2)
END;
FUNCTION LoW(L : LongInt) : Word; Assembler;
ASM
MOV AX, Word(L);
END;
FUNCTION WordFromB(H, L : Byte) : Word; Assembler;
ASM
MOV AH, H
MOV AL, L
END;
FUNCTION LongFromW(H, L : Word) : LongInt; Assembler;
ASM
MOV DX, H
MOV AX, L
END;
END.
[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]