求助高人帮我解释一段程序
void CalculateCRC() // 在RetStr中加入CRC校验和{
WORD CRCValue=0,CRC0,cv,i;
BYTE c;
for (i=9;i<Ret_Str_Len;++i)
{
c = Ret_Str[i];
CRC0 = CRCValue>>8;
cv = CRC0^c;
CRC0 = (CRCValue<<8)&0xffff;
CRCValue = CRC0^CRC[cv];
}
Ret_Str[Ret_Str_Len+0] = (CRCValue>>8)&0xff;
Ret_Str[Ret_Str_Len+1] = CRCValue & 0xff;
Ret_Str_Len += 2;
}