
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
.