www.pudn.com > slaa274.zip > mul.s43, change:2005-10-21,size:3817b


//***************************************************************************** 
// 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. 
//***************************************************************************** 
//16x16=>32 multiply 
//int32_t mul16(register int16_t x, register int16_t y) 
	    public  mul16 
 
	    RSEG    CODE 
mul16 
 
#define     x1      r9 
#define     z0      r13 
#define     z1      r15 
#define     x       r12 
#define     y       r14 
 
            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 
 
            pop     r9 
 
            ret 
            end