must have done 对过去的动作的推测。 如; You must have seen him yesterday. 你昨天一定看到他了。
must do 对现在的动作的推测。 如:You must know him well, for you can tell us more about him.
should have done 表示假设, 过去应该做而没有做含有责备的意思。 如; You should have done your home work earlier.
could have done 表示假设, 与过去的事实相反。 如:He could have been very rich, but he cared for no money at all.
参考资料:http://zhidao.baidu.com/question/5971022.html