КАТЕГОРИИ: Архитектура-(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 не сохраняется в стеке содержимое регистров общего назначения и, если подпрограмма использует те же рабочие регистры, что и основная программа, то она должна обеспечить сохранение их содержимого. Хранение текущего содержимого регистров осуществляется стеком. Например, подпрограмма, в которой реализуются перечисленные функции, составляется так:
Восстановление содержимого регистров выполняется в порядке, обратном порядку упаковки в стек. Процесс вложения программ заключается в последовательном вызове друг у друга подпрограмм, а их число называется глубиной вложенности, которая ограничивается емкостью стека, т. е. размерами области оперативной памяти, отведенной для стека и адресуемой указателем стека 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; Просмотров: 377; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |