Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессоры Токхайм / 6.11. ВЕТВЛЕНИЕ ПРОГРАММЫ

.doc
Скачиваний:
159
Добавлен:
13.05.2015
Размер:
435.71 Кб
Скачать

6.11. ВЕТВЛЕНИЕ ПРОГРАММЫ

Рассмотрим простую задачу сравнения двух чисел. Нуж­но найти наибольшее и поместить его в определенную ячейку памяти (см. структурную схему решения этой за­дачи на рис. 6.43). В двух первых прямоугольных кадрах представлена операция загрузки двух чисел в регистры А (аккумулятор) и L (данные). Следующий прямоугольный кадр соответствует операции сравнения, где содержимое ре­гистра L вычитается из содержимого регистра А. Команды сравнения не разрушают содержимого регистров, но влия­ют на индикатор. Следующий кадр называется знаком при­нятия решения. Он завершает в программе этап решения и содержит поставленный вопрос [(A)^(L)?]. Если ответ на этот вопрос Да, программа продолжается последова­тельно и содержимое регистра А помещается в память, за­тем процессор останавливается. Если Нет, программа от­ветвляется вправо и содержимое регистра L помещается в память, затем МП останавливается. Использование знаков принятия решения приводит в программах к тому, что на­зывается внутренним ветвлением программы.

В табл. 6.11 представлена на ассемблере задача, кото­рую мы только что описали и в которой наибольшее число помещено в память 2040Н. Заметим, что здесь аккумуля­тор А загружен числом 15Н, а регистр L — числом 6Н. Сравни­вая (третья команда в этом при­мере), находим, что (A)>(L), и, следовательно, индикатор пере­носа (СУ) сброшен в 0. Коман­да перехода (мнемоника JC в примере) проверяет индикатор переноса и находит (СУ)=0. Микропроцессор обращается тог­да к следующей последователь­ной команде ПОМЕСТИТЬ (А) в память по адресу 2040Н и наи­большее число помещено коман­дой STA в память по адресу 2040Н. Затем МП останавливает-

ся (команда HLT). Три последние команды не были ис­пользованы в этом примере. Если обратиться к рис. 6.43, мы установим, что программа прошла последовательно.

Рассмотрим теперь выполнение такой же программы, но в случае, когда содержимое аккумулятора меньше со­держимого регистра L. Программа остается та же (табл. 6.11). Содержимое аккумулятора — ОАН (1010), содержи­мое регистра L — ОЕН (14ю) здесь больше. Команда срав­нения устанавливает индикатор CY в 1, так как (A)<(L). Команда ПЕРЕЙТИ, если индикатор переноса установлен в 1 (JC здесь), проверяет индикатор CY и определяет, уста­новлен ли он. При этом изменяется содержимое счетчика команд, т.е. загружается адрес следующей выполняемой команды (STORE L в нашем примере). Заметим, что МП перешел через две команды для того, чтобы обратиться туда, где находится символический адрес STORE L. Мик­ропроцессор выполняет тогда три последние команды, ко­торые помещают содержимое регистра L, т.е. наибольшее число ОЕН в ячейку памяти по адресу 2040Н. Обратившись к схеме на рис. 6.43, мы установим, что программа выпол­нена последовательно до знака принятия решения, затем ответвилась вправо, заканчиваясь оператором Стоп.

Рассмотрим снова три последние команды в табл. 6.11. Целью этих команд является размещение содержимого ре­гистра L в память по адресу 2040Н. Наш микропроцессор не позволяет поместить содержимое регистра L прямо в па­мять. Нужно последовательно передать сначала содержи­мое L в А, затем поместить содержимое А в память. Таким образом, часто оказывается, что МП с ограниченным со­ставом команд (как в случае типового МП) использовать сложнее, чем устройства, более мощные по своим возмож­ностям.

Таким образом, рассмотренный на структурной схеме способ ветвления осуществляется командами перехода (или ветвления), согласно которым принимаются решения, ос­нованные на состоянии специальных индикаторов. Мы встретились здесь с использованием символического адре­са (метки) при команде перехода. Ветвление очень широко используется при программировании.

Упражнения

6.94. Ромбовидный кадр на рис. 6.43 называется

____ (ромбом решения, знаком принятия решения).

Команда сравнить А и L в табл. 6.11 _______ (из­меняет, не изменяет) содержимое аккумулятора.

Команда сравнить А и L служит в приведенном примере для установки индикатора _______.

См. рис. 6.43. Если содержимые А и L равны, CY будет ________ (установлен в 1, сброшен в 0) командой срав­нения и использована ветвь ________ (Да, Нет).

См. рис. 6.43. Если в регистре А содержится 1АН, а в регистре L — А5Н, в результате команды перехода МП

_____ (продолжит выполнение команд последовательно,

перейдет к STORE L).

6.99. См. табл. 6.11. Операндом команды JC является STORE L; здесь используется ______ (абсолютная, сим- вольная) адресация.

6.100. Команды перехода и ветвления в программах используются ________ (редко, часто).

Решения

6.94. Знаком принятия решения. 6.95. Не изменяет. 6.96. СУ. 6.97. Если (A) = (L), CY=0, то ветвь Да. 6.98. Если (А) = 1АН, a (L)=A5H, переход к STORE L, так как СУ= 1, потому что (A)<(L). 6.99. Сим­вольная. 6.100. Часто.