[Back to MISC SWAG index] [Back to Main SWAG index] [Original]

    {$S-,R-}
    UNIT MaxMinW;
    (*
      The source code for the MaxMinW unit is released to the public domain.
      No rights are reserved.  Phil Nickell.  NSoft Co.
      This Turbo Pascal unit implements four highly optimized assembly
      language functions that provide MAX() and MIN() for unsigned words and
      signed integers
    *)
    INTERFACE
       function  MAXW  (a,b:word)    : Word;          { max word }
       function  MINW  (a,b:word)    : Word;          { min word }
       function  MAXI  (a,b:integer) : Integer;       { max integer }
       function  MINI  (a,b:integer) : Integer;       { min integer }

    IMPLEMENTATION
    function maxw(a,b:word):word; Assembler;
      Asm
            mov     ax, a       { first parm in ax }
            mov     dx, b       { second parm in dx }
            cmp     ax, dx      { compare parms }
            jae     @1          { return 1st parm }
            mov     ax, dx      { return 2nd parm }
      @1:
      End;

    function minw(a,b:word):word; Assembler;
      Asm
            mov     ax, a       { first parm in ax }
            mov     dx, b       { second parm in dx }
            cmp     ax, dx      { compare parms }
            jbe     @1          { return 1st parm }
            mov     ax, dx      { return 2nd parm }
      @1:
      End;

    function maxi(a,b:integer):integer; Assembler;
      Asm
            mov     ax, a       { first parm in ax }
            mov     dx, b       { second parm in dx }
            cmp     ax, dx      { compare parms }
            jge     @1          { return 1st parm }
            mov     ax, dx      { return 2nd parm }
      @1:
      End;

    function mini(a,b:integer):integer; Assembler;
      Asm
            mov     ax, a       { first parm in ax }
            mov     dx, b       { second parm in dx }
            cmp     ax, dx      { compare parms }
            jle     @1          { return 1st parm }
            mov     ax, dx      { return 2nd parm }
      @1:
      End;

    Begin {INITIALIZATION}
    End.

[Back to MISC SWAG index] [Back to Main SWAG index] [Original]