/* Decrease a byte integers and Saved into memory cell.  */
U8 Dec8(volatile U8 *data)
/* Decrease a byte integers and Saved into memory cell.  */
U8 Dec8(volatile U8 *data)
{
  register U8  result = 0;
  __asm volatile 
  (
      " PUSH    {R1}     \n"
      " CPSID   I        \n"
      " LDRB    R1,[%1]  \n"
      " SUB     R1,#1    \n"
      " STRB    R1,[%1]  \n"
      " CPSIE   I        \n"
      " MOVS    %0,R1    \n"
      " POP     {R1}     \n"
      :"=r"(result)
      :"r"(data)
  ); 
  return (result); 
}