Contributor: SWAG SUPPORT TEAM 
{$R-}
UNIT MaxMin;
(**) INTERFACE (**)
 FUNCTION MaxS(A, B : ShortInt) : ShortInt;
 FUNCTION MinS(A, B : ShortInt) : ShortInt;
 FUNCTION MaxB(A, B : Byte) : Byte;
 FUNCTION MinB(A, B : Byte) : Byte;
 FUNCTION MaxI(A, B : Integer) : Integer;
 FUNCTION MinI(A, B : Integer) : Integer;
 FUNCTION MaxW(A, B : Word) : Word;
 FUNCTION MinW(A, B : Word) : Word;
 FUNCTION MaxL(A, B : LongInt) : LongInt;
 FUNCTION MinL(A, B : LongInt) : LongInt;
 FUNCTION MaxU(A, B : LongInt) : LongInt;
 FUNCTION MinU(A, B : LongInt) : LongInt;
(**) IMPLEMENTATION (**)
 FUNCTION MaxS(A, B : ShortInt) : ShortInt; Assembler;
 ASM
 MOV AL, A
 CMP AL, B
 JGE @no
 MOV AL, B
 @no:
 END;
 FUNCTION MinS(A, B : ShortInt) : ShortInt; Assembler;
 ASM
 MOV AL, A
 CMP AL, B
 JLE @no
 MOV AL, B
 @no:
 END;
 FUNCTION MaxB(A, B : Byte) : Byte; Assembler;
 ASM
 MOV AL, A
 CMP AL, B
 JAE @no
 MOV AL, B
 @no:
 END;
 FUNCTION MinB(A, B : Byte) : Byte; Assembler;
 ASM
 MOV AL, A
 CMP AL, B
 JBE @no
 MOV AL, B
 @no:
 END;
 FUNCTION MaxI(A, B : Integer) : Integer; Assembler;
 ASM
 MOV AX, A
 CMP AX, B
 JGE @no
 MOV AX, B
 @no:
 END;
 FUNCTION MinI(A, B : Integer) : Integer; Assembler;
 ASM
 MOV AX, A
 CMP AX, B
 JLE @no
 MOV AX, B
 @no:
 END;
 FUNCTION MaxW(A, B : Word) : Word; Assembler;
 ASM
 MOV AX, A
 CMP AX, B
 JAE @no
 MOV AX, B
 @no:
 END;
 FUNCTION MinW(A, B : Word) : Word; Assembler;
 ASM
 MOV AX, A
 CMP AX, B
 JBE @no
 MOV AX, B
 @no:
 END;
 FUNCTION MaxL(A, B : LongInt) : LongInt; Assembler;
 ASM
 MOV DX, Word(A+2)
 MOV AX, Word(A)
 CMP DX, Word(B+2)
 JL @yes
 JG @no
 CMP AX, Word(B)
 JGE @no
 @yes:
 MOV DX, Word(B+2)
 MOV AX, Word(B)
 @no:
 END;
 FUNCTION MinL(A, B : LongInt) : LongInt; Assembler;
 ASM
 MOV DX, Word(A+2)
 MOV AX, Word(A)
 CMP DX, Word(B+2)
 JG @yes
 JL @no
 CMP AX, Word(B)
 JLE @no
 @yes:
 MOV DX, Word(B+2)
 MOV AX, Word(B)
 @no:
 END;
 FUNCTION MaxU(A, B : LongInt) : LongInt; Assembler;
 ASM
 MOV DX, Word(A+2)
 MOV AX, Word(A)
 CMP DX, Word(B+2)
 JB @yes
 JA @no
 CMP AX, Word(B)
 JAE @no
 @yes:
 MOV DX, Word(B+2)
 MOV AX, Word(B)
 @no:
 END;
 FUNCTION MinU(A, B : LongInt) : LongInt; Assembler;
 ASM
 MOV DX, Word(A+2)
 MOV AX, Word(A)
 CMP DX, Word(B+2)
 JA @yes
 JB @no
 CMP AX, Word(B)
 JBE @no
 @yes:
 MOV DX, Word(B+2)
 MOV AX, Word(B)
 @no:
 END;
END. 

AltStyle によって変換されたページ (->オリジナル) /