
typedef unsigned char   U8;
typedef unsigned short  U16;
typedef unsigned long   U32;

U32 product;

U32 Mul8x16(U8 b, U16 w)
{
    U32 retVal;
    U16 tmp;

    tmp    = b * (U8)w;
    retVal = b * (U8)(w >> 8);

    return (((U32)retVal << 8) + tmp);
}

void main(void)
{
    product = Mul8x16(0x80, 0x1234);

    /* Store product as 24-bits if needed... */
}
