Здравствуйте!

Для преобразования из BCD в десятичные данные использую макрос (может кому пригодиться быстро найти):
Код:
PSW[320] = (PSW[33] / 16) * 10 + PSW[33] % 16; // Hour
PSW[321] = (PSW[34] / 16) * 10 + PSW[34] % 16;
PSW[322] = (PSW[35] / 16) * 10 + PSW[35] % 16;
PSW[323] = (PSW[32] / 16) * 10 + PSW[32] % 16;  //Day
PSW[324] = (PSW[31] / 16) * 10 + PSW[31] % 16;
PSW[325] = 2000 + (LOBYTE(PSW[30]) / 16) * 10 + LOBYTE(PSW[30]) % 16;
Для возвращения обратно в регистры PSW[3х], кроме года, использую такой макрос:
Код:
WORD WORD_TO_BCD( WORD DecValue )
{
  if (DecValue > 99 || DecValue < 0 ) return 255;
  return ((DecValue/10)*6+DecValue);
}

PSW[33] = WORD_TO_BCD(PSW[320]); // Hour
....
А для года как?