Introduction to microprocessor system design