Подпрограммы

 

2.15.1. Подпрограмма (subroutine) – программа, являющаяся частью другой программы и удовлетворяющая требованиям, которые язык программирования предъявляет к структуре программы [ 3 ].

Подпрограммы используются для уменьшения объема программы, а также с целью снижения трудоемкости и повышения качества программирования (снижения вероятности ошибок в программе). Наиболее часто к подпрограммам обращаются в том случае, когда в программе многократно повторяются одинаковые фрагменты.

2.15.2. В системе команд МК семейства MCS-51 (см. табл. 2.4) для вызова подпрограмм есть специальные команды LCALL (вызов подпрограммы в пределах всего адресного пространства программной памяти) и ACALL (вызов подпрограммы в пределах страницы размером 2К байт). По команде вызова подпрограммы процессором автоматически выполняются следующие операции:

1) содержимое программного счетчика PC увеличивается на 3,

2) инкрементируется содержимое регистра-указателя стека SP,

3) младший байт программного счетчика загружается в стек,

4) инкрементируется содержимое регистра-указателя стека,

5) старший байт программного счетчика загружается в стек,

6) в программный счетчик загружается 16-битный (LCALL) или 11-битный (ACALL) начальный адрес подпрограммы (адрес первой команды подпрограммы).

2.15.3. Подпрограмма должна заканчиваться командой RET (return), по которой из стека извлекается и загружается в программный счетчик адрес возврата в главную программу (сначала старший байт, а затем младший), в результате чего происходит переход к команде, следующей в главной программе за командой вызова подпрограммы.

2.15.4. Подпрограммы могут быть вложенными, т.е. одна подпрограмма может вызываться из другой. Количество вложенных подпрограмм ограничено только объемом памяти, отведенной под стек.

2.15.5. Если в подпрограмме задействованы какие-либо регистры, используемые главной программой, в начале подпрограммы содержимое этих регистров должно быть сохранено (обычно для этой цели используется стек), а перед выходом из подпрограммы содержимое этих регистров должно быть восстановлено (извлечение из стека осуществляется в обратном порядке).

2.15.6. Для передачи аргументов из главной программы в подпрограмму и передачи результатов из подпрограммы в главную программу можно использовать:

1) память данных,

2) регистры общего назначения,

3) флаги общего назначения,

4) стек.

 








Дата добавления: 2015-10-09; просмотров: 1029;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.