1. A method of programming data in a memory the memory comprising a plurality of manufacture-defined blocks, a plurality of user-defined blocks and an information block, the method comprising steps of: obtaining a programming address pointing to a user-defined block in the memory and programming data; determining whether there is an empty manufacture-defined block among the manufacture-defined blocks; storing the programming address and a replacing address pointing to the empty manufacture-defined block to an information block if there is an empty manufacturer-defined block; and storing the programming data to the empty manufacture-defined block.