Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архит_ЭВМ_лекции.doc
Скачиваний:
99
Добавлен:
04.06.2015
Размер:
19.16 Mб
Скачать

Ветвление программ

Рассмотрим на примере.

Найти большее число и поместить его в определенную ячейку памяти.

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

Ъ

Метка

Мнемоника

Операнд

Комментарий

MVI

A, ØF

Загрузить число 15 (в десятичной форме) в аккумулятор.

MVI

L, Ø6

Загрузить число Ø6 в регистр L.

CPM

L

Сравнить содержимое А с содержимым регистра L, индикаторCYрегистра состояния =1, если А<L.

JC

STORE, L

Перейти к STORE,L,еслиCY=1 (еслиA<L). В противном случае продолжить последовательность.

STA

2040H

Загрузить содержимое А в ячейку памяти 2040.

HLT

Остановить МП.

STORE,L

MOV

A,L

Поместить регистр Lв А.

STA

2040H

Загрузить содержимое А в ячейку памяти 2040.

HLT

Остановить МП.

В таблице представлена программа на ассемблере, которая решает задачу нахождения наибольшего числа и размещения его в памяти по адресу 2040.

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

В этом примере использовался символический адрес (Метка), при команде перехода. Команда ветвления широко используется при программировании.

ЦИКЛЫ

Вычислительные машины (системы) особенно эффективны в случае выполнения повторяющихся задач.

Например, если программе необходимо провести счет от 0 до 254 (ØØ до FE) и вывести результат счета на какую-либо выбранную периферию, то если не использовать циклов, программа будет содержать не менее 300 строчек.

Нарисуем блок-схему этой задачи.

Приведенная структурная схема представляет собой программу, которая содержит в себе примерно 20 команд. Если бы 255 пропусков через программу были запрограммированы последовательно, их список составил бы несколько тысяч команд.

Рассмотрим другой пример.

Структурная схема размещения ряда чисел (от 0 до 8) последовательно в память с адресами от 2040 до 2048. Два первых кадра соответствуют начальной загрузке пары регистров HLи аккумулятора значениями 2040 и ØØ соответственно. Третий кадр соответствует процессу размещения данных в памяти и который будет повторяться 9 раз, в ходе выполнения этой программы. МП, повторяя свои действия, размещает содержимое аккумулятора в памяти по адресу, указанному в паре регистровHL. Четвертый и пятый кадры представляют операции, которые изменяют адрес в паре регистровHLи числа в аккумуляторе. Кадр сравнение и знак принятия решения составляют операцию тестирования. Команда сравнение вычитает число Ø9 из содержимого аккумулятора для установки или сброса индикатора нуля в регистре состояния.

Если содержимое аккумулятора меньше 9 индикатор нуля сброшен. Команда сравнения и условного перехода используются для проверки изменяющегося счета и определения момента выхода из цикла.

Метка

Мнемоника

Операнд

Комментарий

LXI

H, 2040

Загрузить число 2040 в пару регистров HL.

XRA

A

Сброс А в ØØ.

LOOP

MOV

M, A

Поместить А в М.

INX

H

Инкремент HL.

INR

A

Инкремент А.

CPI

Ø9

Сравнить А= Ø9. Если да, то индикатор нуля Zустановится в единицу.

JZ

LOOP

Перейти к LOOP, еслиZ=0, т.е. если содержимое А ≠ Ø9, если да, то продолжить последовательно.

HLT

Остановить МП.