
- •Микропроцессор мс68000
- •Команда dBcc
- •Команда Scc
- •Команды jmp, nop и stop
- •Управляющие конструкции
- •Работа с подпрограммами.
- •Практическая часть.
- •Команды безусловной передачи управления .
- •Команды условного перехода.
- •1010 Nop Точка останова.
- •Команды условного перехода с декрементом в регистре.
- •Команды работы с подпрограммами
- •Подпрограмма вывода списка слов на терминал output bsr ent Перевести строку
- •Подпрограмма перевода строки
- •Контрольные вопросы и задания.
- •Команды Bcc и bra.
Работа с подпрограммами.
Приведенные выше примеры программ относительно просты по сравнению с реальными программами, при написании которых возникает, как правило, масса проблем с их отладкой и модификацией по мере увеличения объема кода. Наиболее эффективным средством упрощения работы с большими программами является модульное программирование с разделением всей программы на функционально обособленные фрагменты (подпрограммы), каждая из которых может быть индивидуально разработана и отлажена, а впоследствии вызывается из основной программы, объединяющей все подпрограммы в единое целое. Кроме упомянутых преимуществ модульного программирования, делающего исходный текст удобным для понимания и отладки, подпрограммы позволяют уменьшить объем кода за счет возможности вызова подпрограммы из различных точек программы.
a) IF-THEN
å) CASE
Рис.3 Реализация основных управляющих конструкций.
При написании подпрограмм необходимо помнить о трех сопутствующих аспектах:
1. Связь управления. После выполнения подпрограммы управление передается команде, следующей за командой вызова подпрограммы. Это обеспечивается сохранением в стеке содержимого программного счетчика, указывающего на следующую команду, перед передачей управления подпрограмме, с восстановлением этого значения из стека при возврате из подпрограммы.
2. Сохранениие и восстановление содержимого регистров. Необходимо помнить о сохранении в стеке регистров, содержимое которых изменяется в подпрограмме, с восстановлением прежних значений перед возвратом из подпрограммы.
3. Передача параметров. Необходимо продумать способ передачи подпрограмме параметров, которые будут ею использованы, а также способ возврата результата работы подпрограммы в основную программу.
Для передачи управления подпрограмме и возврата из нее в системе команд процессора МС68000 предусмотрены команды, представленные в таблице 3. Команды вызова подпрограммы автоматически сохраняют в стеке адрес возврата (содержимое РС, указывающего на команду, следующую за командой вызова), после чего переходят по адресу, указанному в команду вызова тем или иным способом. Как и в командах безусловного перехода, возможны два типа вызовов подпрограммы: командой JSR (jump to subroutine) и BSR (branch to subroutine). Команда JSR позволяет задать адрес перехода любым способом адресации, допустимым для передачи управления, переход может осуществляться в пределах всего адресного пространства. Команда BSR ограничивает длину перехода пределами относительной адресации (±32 кбайт). При использовании постфикса .S получается более короткий код, а длина перехода ограничивается -128 ...+127 байт.
Последней командой подпрограммы является команда возврата : RTS (return from subroutine) или RTR (return and restore condition codes). Эти команды восстанавливают из стека значение РС и передают управление по содержащемуся в нем адресу. Команда RTR, кроме того, восстанавливает из стека содержимое регистра ССR и используется, если в начале подпрограммы оно было сохранено в стеке.
Таблица 3.
Мнемоника Размерность Формат Допустимый Действие Сост. флагов
или постфикс операнда тип EA N Z V C X
JSR Безразмерная ЕА Управление РС®-(SP); - - - - -
(переход к EA®PC
подпрограмме)
BSR .S èëè áåç DST PC®-(SP) - - - - -
(переход к DST®PC
подпрограмме)
RTS Безразмерная Нет (SP)+®PC - - - - -
(возврат из
подпрограммы)
RTR Безразмерная Нет (SP)+®CCR * * * * *
(возврат с вос- (SP)+®PC
становлением ССR)