what is the difference between subroutine and interrupt service routine?
Simply, a subroutine is code you write and call as required, an interrupt is system bound and cannot be called by the user but occurs when something happens (sources are hardware, software and CPU) that requires immediate attention.