Microprocessor Software-Based Self-Testing