111 lines
3.5 KiB
Plaintext
111 lines
3.5 KiB
Plaintext
|
//
|
||
|
//16x16=>32 multiply
|
||
|
//long mul16(register int x, register int y)
|
||
|
//
|
||
|
// Edited by: M Morales, November 2008
|
||
|
// * Updated calling conventions in support of IAR compiler >= 4.x
|
||
|
//*****************************************************************************
|
||
|
// THIS PROGRAM IS PROVIDED "AS IS". TI MAKES NO WARRANTIES OR
|
||
|
// REPRESENTATIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
|
||
|
// INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
|
||
|
// FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
|
||
|
// COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE.
|
||
|
// TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET
|
||
|
// POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY
|
||
|
// INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE PROGRAM OR
|
||
|
// YOUR USE OF THE PROGRAM.
|
||
|
//
|
||
|
// IN NO EVENT SHALL TI BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
|
||
|
// CONSEQUENTIAL OR INDIRECT DAMAGES, HOWEVER CAUSED, ON ANY
|
||
|
// THEORY OF LIABILITY AND WHETHER OR NOT TI HAS BEEN ADVISED
|
||
|
// OF THE POSSIBILITY OF SUCH DAMAGES, ARISING IN ANY WAY OUT
|
||
|
// OF THIS AGREEMENT, THE PROGRAM, OR YOUR USE OF THE PROGRAM.
|
||
|
// EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF
|
||
|
// REMOVAL OR REINSTALLATION, COMPUTER TIME, LABOR COSTS, LOSS
|
||
|
// OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF
|
||
|
// USE OR INTERRUPTION OF BUSINESS. IN NO EVENT WILL TI'S
|
||
|
// AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF
|
||
|
// YOUR USE OF THE PROGRAM EXCEED FIVE HUNDRED DOLLARS
|
||
|
// (U.S.$500).
|
||
|
//
|
||
|
// Unless otherwise stated, the Program written and copyrighted
|
||
|
// by Texas Instruments is distributed as "freeware". You may,
|
||
|
// only under TI's copyright in the Program, use and modify the
|
||
|
// Program without any charge or restriction. You may
|
||
|
// distribute to third parties, provided that you transfer a
|
||
|
// copy of this license to the third party and the third party
|
||
|
// agrees to these terms by its first use of the Program. You
|
||
|
// must reproduce the copyright notice and any other legend of
|
||
|
// ownership on each copy or partial copy, of the Program.
|
||
|
//
|
||
|
// You acknowledge and agree that the Program contains
|
||
|
// copyrighted material, trade secrets and other TI proprietary
|
||
|
// information and is protected by copyright laws,
|
||
|
// international copyright treaties, and trade secret laws, as
|
||
|
// well as other intellectual property laws. To protect TI's
|
||
|
// rights in the Program, you agree not to decompile, reverse
|
||
|
// engineer, disassemble or otherwise translate any object code
|
||
|
// versions of the Program to a human-readable form. You agree
|
||
|
// that in no event will you alter, remove or destroy any
|
||
|
// copyright notice included in the Program. TI reserves all
|
||
|
// rights not specifically granted under this license. Except
|
||
|
// as specifically provided herein, nothing in this agreement
|
||
|
// shall be construed as conferring by implication, estoppel,
|
||
|
// or otherwise, upon you, any license or other right under any
|
||
|
// TI patents, copyrights or trade secrets.
|
||
|
//
|
||
|
// You may not use the Program in non-TI devices.
|
||
|
//*****************************************************************************
|
||
|
public mul16
|
||
|
|
||
|
RSEG CODE
|
||
|
mul16
|
||
|
|
||
|
#define x1 r9
|
||
|
#define z0 r14
|
||
|
#define z1 r15
|
||
|
#define x r12
|
||
|
#define y r13
|
||
|
|
||
|
push r9
|
||
|
|
||
|
clr z0
|
||
|
mov z0,z1
|
||
|
mov z0,x1
|
||
|
tst x
|
||
|
jge xbooth_2
|
||
|
mov #-1,x1
|
||
|
jmp xbooth_2
|
||
|
|
||
|
xbooth_6
|
||
|
add x,z1
|
||
|
addc x1,z0
|
||
|
xbooth_1
|
||
|
rla x
|
||
|
rlc x1
|
||
|
xbooth_2
|
||
|
rra y
|
||
|
jc xbooth_5
|
||
|
jne xbooth_1
|
||
|
jmp xbooth_4
|
||
|
|
||
|
xbooth_5
|
||
|
sub x,z1
|
||
|
subc x1,z0
|
||
|
xbooth_3
|
||
|
rla x
|
||
|
rlc x1
|
||
|
rra y
|
||
|
jnc xbooth_6
|
||
|
cmp #0FFFFh,y
|
||
|
jne xbooth_3
|
||
|
|
||
|
xbooth_4
|
||
|
mov z1,r12
|
||
|
mov z0,r13
|
||
|
|
||
|
pop r9
|
||
|
|
||
|
ret
|
||
|
end
|