16-bit and 32-bit Microprocessors: Architecture, Software, and Interfacing Techniques