We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Each interrupt is assigned a place in the vector table whose base address is configurable, but let's say its 0x1000. So now vector entry for interrupt #16 would be at (0x1000+16*4). There is no magic, so when interrupt 16 happens the CPU automatically fetches the instruction for that interrupt handler by looking up the address from the vector table for that particular interrupt number. That means when you say Uart is interrupt #16 you are deciding that that is the location offset in the vector table which will handle Uart interrupts.