Я когда-то читал об этом в Полном дизассемблере от Яна Логана и Френка О-Хары - реализация операторов GO SUB и RETURN. Подробности уже забыл, но по-моему нижнюю (по адресам) границу стека GO SUB задает переменная ERR_SP (23613, 23614). После выполнения оператора GO SUB ее значение уменьшается на 3. В стек записывается номер строки, в которой находится оператор GO SUB, и номер оператора, следующего за ним. Если оператор GO SUB был первым в строке, то в качестве номера оператора возврата записывается двойка. Только что написал простейшую программу на бейсике для проверки - так и есть.
Поскольку ERR_SP задает верхнюю границу машинного стека, и по адресу, лежащему по ERR_SP, осуществляется возврат при ошибке (2 байта) - то стек GO SUB начинается на 2 байта выше, чем значение ERR_SP.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
