MOV A,#56 CALL PeredatByte MOV A,#37 CALL PeredatByte .*****:*:*:*****:*:*:****************************** 5 Подпрограмма передачи байта ;через последовательный порт .****************♦*************************** » PeredatByte: JB Т1,$ ;Если предыдущий байт передан MOV SBUF,G_Per ;то передать очередной байт RET Внимание! Ни в коем случае нельзя попадать в подпрограмму любым способом кроме команды вызова подпрограммы CALL! В противном случае команда возврата из подпрограммы передаст управление случайному адресу! По этому адресу могут быть расположены данные, которые в этом случае будут интерпретированы как программа, или обратиться к внешней памяти, откуда будут считываться случайные числа. Очень часто требуется из одной подпрограммы обращаться к другой подпрограмме. Такое обращение к подпрограмме называется вложенным. Количество вложенных подпрограмм называется уровнем вложенности подпрограмм. Максимально допустимый уровень вложенности подпрограмм определяется количеством ячеек памяти, предназначенных для хранения адресов возврата из подпрограмм. Ячейки памяти, в которых хранятся адреса возврата из подпрограмм, называются стеком. Логически эти ячейки памяти организованы так, чтобы считывание последнего записанного адреса производилось первым, а первого записанного адреса производилось последним. Такая логическая организация формируется специальным счётчиком. Этот счётчик называется указателем стека SP. Ячейка памяти, в которую в данный момент может быть записан адрес возврата из подпрограммы, называется
RkJQdWJsaXNoZXIy MTExODQxMg==