How memory address register(MAR) and program counter(PC) are different from each other?
The difference is that the program counter points to the next instruction to be fetched / executed , whereas the memory address register points to a memory location where the program being run will fetch some data (not an instruction).