A generation back when I did my engineering here in India. For electronics and electrical branches. 8085 microprocessor was a subject you studied in 5th Semester. There are both theory and practical exams.
The journey from learning how a transistor works, then simple gates, then adders, flip-flops and eventually registers followed by a 8-bit microprocessor is a mind blowing journey. It's the civil engineering equivalent of going from bricks to pyramids.
You learned so much from those classes. There were no instructions apart from ADD. And you can create subtract(addition with 2's compliment), multiply(repeated addition) and divide(repeated subtraction) from just ADD. Things get really interesting when you learn to use register pairs for 16 bit operations. Once done you move to things like making a real time clock(using a 4 digit, 8 segment led display) or doing something useful with a stepper motor. I learned pointers by learning how the 'Program counter' works. Even to date I understand the loop/recur in Clojure well because of working JMP so often in those days.
In the practical sessions you didn't use a simulator, and had to look up opcode from a sheet. That is your first wrote the program, then looked up opcode and entered them by hand. Mind blowing experience. It almost felt like creating a life form.
The experience completes when you optimize for opcode fetches and memory r/w your program did. And learn to handle interrupts.
In the next semester you did 8086. Here you had to forget what you did in 8085 and reprogram your brain for a new model. The practical exams were on simulators though.
The journey from learning how a transistor works, then simple gates, then adders, flip-flops and eventually registers followed by a 8-bit microprocessor is a mind blowing journey. It's the civil engineering equivalent of going from bricks to pyramids.
You learned so much from those classes. There were no instructions apart from ADD. And you can create subtract(addition with 2's compliment), multiply(repeated addition) and divide(repeated subtraction) from just ADD. Things get really interesting when you learn to use register pairs for 16 bit operations. Once done you move to things like making a real time clock(using a 4 digit, 8 segment led display) or doing something useful with a stepper motor. I learned pointers by learning how the 'Program counter' works. Even to date I understand the loop/recur in Clojure well because of working JMP so often in those days.
In the practical sessions you didn't use a simulator, and had to look up opcode from a sheet. That is your first wrote the program, then looked up opcode and entered them by hand. Mind blowing experience. It almost felt like creating a life form.
The experience completes when you optimize for opcode fetches and memory r/w your program did. And learn to handle interrupts.
In the next semester you did 8086. Here you had to forget what you did in 8085 and reprogram your brain for a new model. The practical exams were on simulators though.