Quote (RSM54)
Почему конкретно нельзя пользоваться GOSUB и GOTO в обработчиках прерываний
 Не пугайте человека. 
 Можно использовать. 
 С GOTO вообще нет проблем,так-как безусловный переход не использует стек. 
 Есть нюанс, если используеш прерывания,в обработчике прерывания нельзя командой GOTO "выскакивать" за пределы 
 обработчика. 
 С Gosub немного сложнее.Gosub вместе с GOTO легко переполнить стек и без прерывания. 
 Основное правило "для выхода из процедуры вызванной командой GOSUB нельзя использовать GOTO" выходить можно, или точнее 
 нужно командой RETURN. 
 Пример неправильного использования 
 Code
. 
 start: 
 . 
 . 
 gosub loop 
 . 
 . 
 goto start 
 loop: 
 . 
 goto start 
 . 
 return 
 end
 Вызвав процедуру loop: (gosub loop:)сохраняем стек , из процедуры вышли на метку start:(goto start:), 
 при этом не востановили стек (обошли return).А дальше тот же цикл с моментальным перполнением стека 
 о чем Proteus радостно нам сообщает  
 
Quote (RSM54)
Stack underflow executing RETURN instruction
 Да-уж...Ну и наваял...Надеюсь хоть что-то понятно.