- •Микропроцессор мс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)
