Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Процедуры и подпрограммы




Разрабатывая ПО контроллеров, программист применяет два способа организации программ:

монолитный, когда прикладная программа разрабатывается как единое целое;

модульный, когда программа строится из отдельных программных блоков. Каждый из них выполняет законченную логическую функцию, т.е. вычислительную процедуру, оформляемую в виде подпрограмм, к которой вызывающая (основная) программа может обра­щаться по необходимости. Обращение к подпрограмме реализуется вызовом по команде CALL MARK, где MARK - содержательное имя процедуры, используемое в качестве метки, отмечазжющей команду подпрограммы. Командой CALL в стеке сохраняется значение счетчи­ка команд, и возврат из подпрограммы реализуется в то место основ­ной программы, откуда был осуществлен вызов. Поэтому подпрограм­мы заканчиваются командой возврата RET (безусловного или услов­ного), которая восстанавливает содержимое счетчика команд из стека. Командой CALL не сохраняется в стеке содержимое регистров общего назначения и, если подпрограмма использует те же рабочие регистры, что и основная программа, то она должна обеспечить сохранение их содержимого. Хранение текущего содержимого регистров осуществля­ется стеком. Например, подпрограмма, в которой реализуются пере­численные функции, составляется так:

MARK: PUSH PSW ; сохранить в стеке содержимое
    ; аккумулятора и признаков
  PUSH В ; сохранить содержимое регистровой пары ВС
  PUSH D ; сохранить DE
  PUSH H ; сохранить HL
  : ; текст подпрограммы
  POP H ; восстановить содержимое регистровой пары HL
  POP D ; восстановить DE
  POP В ; восстановить ВС
  POP PSW ; восстановить PSW
  RET  

Восстановление содержимого регистров выполняется в порядке, обратном порядку упаковки в стек. Процесс вложения программ за­ключается в последовательном вызове друг у друга подпрограмм, а их число называется глубиной вложенности, которая ограничивается емкостью стека, т. е. размерами области оперативной памяти, отве­денной для стека и адресуемой указателем стека SP.

Чтобы подпрограмма успешно работала, необходимо однозначно определить место хранения ее исходных данных и выходные пара­метры.

Параметрические подпрограммы требуют дополнительных па­раметров для вычисления (например, умножения).

Непараметрические подпрограммы - это подпрограммы, в ко­торых результат выполнения не зависит от момента вызова подпро­граммы и места в основной программе, из которого осуществлен вы­зов. Например, подпрограмма реализации временной задержки длит­ся одну секунду. Но ее можно оформить и как параметризуемую, если в основной программе требуется реализация временных задержек раз­личной длительности. Основная программа при этом обеспечивает передачу в подпрограмму установок, обеспечивающих требуемое время задержки.

Возможности МП характеризуются тремя способами передачи параметров:

- через память. Основная программа обязательно содержит последовательность команд:

STA MEMORY

CALL MARK 1

или:

LXI H, MEMORY MOV M,r

CALL MARK 1

Подпрограмма MARK 1 должна содержать команду LDA MEMORY. При передаче выходных параметров через память в под­программе должна соблюдаться такая последовательность команд'

STA MEM1

RET

или:

LXI H, MEM1

MOV М,г

RET

В основной программе после команды вызова подпрограммы должна быть команда LDA MEM1;

- через регистры. Осуществляется аналогичным образом, но содержимое регистра, выступающего посредником между основной программой и подпрограммой, в стеке не сохраняется.

Программа умножения байтов. В аккумуляторе находится множитель, в регистре С - множимое, а результат формируется в регистровой паре HL:

MULT: DCR A; декремент множителя RM




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


Дата добавления: 2015-04-29; Просмотров: 356; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.