how does the microprocessor differentiate between data and instruction?