
3–252
Motorola Sensor Device Data
For More Information On This Product,
Go to: www.freescale.com
/* variables for div32 */
008C 0004 unsigned long DVDND[2]; /* Dividend */
0090 0004 unsigned long DVSOR[2]; /* Divisor */
0094 0004 unsigned long QUO[2]; /* Quotient */
0098 unsigned int CNT; /* Loop counter */
/* The code starts here */
/***************************************************************************/
void add32()
{
#asm
*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
* Add two 32–bit values.
* Inputs:
* ADDEND: ADDEND[0..3] HIGH ORDER BYTE IS ADDEND+0
* AUGEND: AUGEND[0..3] HIGH ORDER BYTE IS AUGEND+0
* Output:
* SUM: SUM[0..3] HIGH ORDER BYTE IS SUM+0
*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
*
083C B6 6F LDA ADDEND+3 low byte
083E BB 73 ADD AUGEND+3
0840 B7 6B STA SUM+3
0842 B6 6E LDA ADDEND+2 medium low byte
0844 B9 72 ADC AUGEND+2
0846 B7 6A STA SUM+2
0848 B6 6D LDA ADDEND+1 medium high byte
084A B9 71 ADC AUGEND+1
084C B7 69 STA SUM+1
084E B6 6C LDA ADDEND high byte
0850 B9 70 ADC AUGEND
0852 B7 68 STA SUM
0854 81 RTS done
*
#endasm
0855 81 RTS }
void sub32()
{
#asm
*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
* Subtract two 32–bit values.
* Input:
* Minuend: MINUE[0..3]
* Subtrahend: SUBTRA[0..3]
* Output:
* Difference: DIFF[1..0]
*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
*
0856 B6 77 LDA MINUE+3 low byte
0858 B0 7B SUB SUBTRA+3
085A B7 7F STA DIFF+3
085C B6 76 LDA MINUE+2 medium low byte
085E B2 7A SBC SUBTRA+2
0860 B7 7E STA DIFF+2
0862 B6 75 LDA MINUE+1 medium high byte
0864 B2 79 SBC SUBTRA+1
0866 B7 7D STA DIFF+1
0868 B6 74 LDA MINUE high byte
086A B2 78 SBC SUBTRA
086C B7 7C STA DIFF
086E 81 RTS done
*
#endasm
086F 81 RTS }
void mul32()
{
#asm
*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
* Multiply 32–bit value by a 32–bit value
*
*
* Input:
F
Freescale Semiconductor, Inc.
n
.