Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 12
Текст из файла (страница 12)
Отклонение от основной программы может возникнуть из-за прогноза погоды в странах„ перечисленных в соответствующей программе летней поездки. Всякий раз, когда приходится принимать решение, задается вопрос о прогнозе погоды (хорошая погода сравнивается с той по- эвм годой, которая наблюдается в данной стране, указанной в программе поездки) и при этом нужно решить следующую задачу — придерживаться программы поездки или же отклониться ат нее. Отклонение от основной программы не означает, что мы больше не вернемся назад, потому что первое ветвление может содержать второе ветвление, которое приведет снова в прежний пункт основной программы, так как по ходу поездки погода может существенно измениться. Если в течение отпуска этот вопрос задается повторно, то в программе возникает цикл.
В связи с выполнением ветвления в основной программе (например, в программе поездки, производственной программе или вычислительной) следует запоминать, где именно имело место отклонение. Дело в том, что в случае прерь|вания в программе поездки мы возвращаемся не домой, чтобы начать эту поездку заново, а направляемся в то место, которое быловыбрано. ЭВМ может запомнить адрес (+1), где мы прервали первоначальную основную программу. В случае ветвления можно задать один или несколько раз вопрос о том, будем ли мы возвращаться к исходной программе. Адрес, в который мы должны возвратиться, находится в стековом ЗУ. При появлении в вычислительной программе команд ветвления можно предусмотреть, чтобы адрес возврата вводился в стек автоматически.
Этот адрес возврата равен адресу команды ветвления +1. Такое ветвление в программе (переход из некоторого адреса в основной программе в некоторый адрес в подпрограмме) зависит не только от определенного условия, например состояния погоды, но и от выполнения ряда последовательных регулярных операций в основной программе. Так, например, в нашей повседневной жизни встречается такой регулярно повторяющийся цикл, как «визит» к кофеварочному автомату, т.
е. деятельность, состоящая из одних и тех же операций, но происходящая в разных точках основной программы. Такой цикл может повторяться, если, например, к нам пришли посетители, которых также необходимо угостить кофе. В такой ситуации произойдет переход из основной программы и кофеварочный автомат снова наполнит нам несколько чашек кофе. Эта ситуация (рис. 2.3) отличается тем, что сначала будет совершен один переход из основной программы, а затем несколько локальных переходов, связанных с получением из автомата и чашек кофе — ввод монеты, ожидание, заполнение чашки. После заполнения и-й чашки кофе произойдет возврат в основную программу, которая описана в нашем ежедневном рабочем расписании (графике).
Переход из основной программы может быть условным, если перед его выполнением будет задан какой-либо вопрос. Напри. мер, после 10 часов мы можем регулярно посматривать на часы Глава л Переход в... <ввмав) Ряс. 2.8. Структурная схема процедуры приготовления кофе. и проверять, не наступило ли время 10 ч 30 мин. Когда часы показывают ровно 10 ч 30 мин, мы совершаем переход из основной программы, т. е.
идем пить кофе. Подпрограмма кофе- пития содержит условный переход, перед выполнением которого задается вопрос о числе чашек кофе, котороедолженобеспечить кофеварочный автомат. При утвердительном ответе (Да) 59 эвм этот переход не будет выполнен и произойдет безусловный переход назад в основную программу. При выходе нз основной программы имеет место ветвление. При этом мы запоминаем следующий этап нашей повседневной работы и идем пить кофе. При появлении команды ветвления в основной программе ЭВМ запоминает, где это ветвление произошло, засылая в стек соответствующий адрес +1. После выполнения подпрограммы и появления команды КЕТОВА (ВОЗВРАТ) ЭВМ извлекает из стека адрес +1 и помещает этот код в счетчик команд, после чего выполнение основной программы возобновляется.
Такой стек регистров представляет собой устройство, которым постоянно пользуются в повседневной жизни. Примером стека регистров является автобус со специальным отделением для временного хранения чемоданов во время поездки.
Первые пассажиры, которые входят в автобус, ставят свои чемоданы в багажное отделение и усаживаются на задние сиденья. Чемоданы постепенно накапливаются. В конце поездки пассажир, который вошел в автобус последним, возьмет свой чемодан первым. Те пассажиры, которые поставили свои чемоданы в багажное отделение первыми, получают их последними. Чемодан, который попал в отделение последним, извлекается первым (по принципу — последним вошел, первым вышел). Стек регистров в ЭВМ также работает поэтому принципу. Указатель стека, т. е. счетчик объектов, вводимых в стек и выводимых из него, сообщает, по какому адресу был записан последний объект.
Стек регистров представляет собой ЗУ, в котором можнохранить данные без явной адресации, используя всего лишь одну команду проталкивания (Р138Н), после которой следует спецификация регистра, в котором записаны данные. С помощью команды выталкивания (РОР) данные можно снова извлечь из стека, однако только те, которые были записаны в нем последними. 2.5. Коды команд Следующие друг за другом команды, которые управляют работой ЭВМ, хранятся в программном ЗУ в двоичном коде. С помощью группы битов можно сформировать код, разным конфигурациям которого можно присваивать разные значения.
Для кода из одного бита возможны две конфигурации, для двух бит — 4, для трех бит — 8 и т. д. (рис. 2.4). В общем случае, когда кодовое слово состоит из п бит, число возможных конфигураций составляет 2". Один байт (8 бит) обеспечивает 2з=256 различных битовых конфигураций. Гдова 2 Команда ЭВМ состоит из командной части, также называемой КОП (кодом операции), которая определяет выполняемую операцию, и операнда, т. е. дополнительных данных, необходимых для выполнения команды.
Операнд может указывать регистр или содержать адрес ЗУ, где находятся данные, с помощью которых выполняется команда. Кроме того, операнд может содержать двоичное число или спецификацию портов ввода-вывода системы. гбила Рис. 2.4. Возможные конфигура» ции с одно-, двух- и трехбитовыми кодамн. 1 бит обесневиваев 2 конфигурации, 2 бит — 4 конфигурации, 3 бит — 8 конфигураций, н-битовый код — 2" конфи- гураций. Длина операнда существенно зависит от типа команды.
Известны команды длиной в 1 байт, т. е. без операнда, а также двухбайтовые и трехбайтовые команды, показанные на рис.2.5. Однобайтовые команды обычно связаны с функциями, которые не содержат обращений к внешним устройствам, так что полный адрес для них является излишним. Такими командамп могут быть, например, команды передачи данных между различными регистрами в МП.
Однобайтовая команда имеет длину, достаточную для спецификации регистров. Команды появляются в порядке следования выполняемых операций, коды которых находятся в программном ЗУ. В ЭВМ, использующих для связи с ЗУ однобайтовые слова, трехбайтовая команда означает, что для ее хранения в ЗУ требуетсятрп ячейки.
Тот факт, что команда состоит из 1, 2 или 3 байт, ЭВМ определяет по типу команды, так что при считывании команды автоматически осуществляется обращение к ЗУ 1, 2 или 3 раза, что обеспечивает считывание всей командь| и ее размещение в регистре команд МП. Здесь еще раз проследим, как происходит выполнение программы на примере организационно-производственного аналога, когда манипулируют материалами (данными), хранящимися на складе (ЗУ).
Вернемся еще раз к процессу изготовления ящика по определенной программе, которая хранится на листе бумаги (ЗУ). Необходимые операции описаны в ней достаточно подробно и в требуемом порядке следования. Лист бумаги с перечнем операций, которые необходимо выполнить, представляет собой «программное ЗУ». Часть ЗУ резер- эвм ппзу йяоео О кобоймоеая акнаяда Пячейка ЗУ) ))вукйаймовая команда [2 ячейки ЗУ) Гречйайочовая комакда Ы ячейка ЗУ) Скоко П я <ячейка ЗУ) Рнс. 2.5.
ППЗУ с одно-, двух- н трехбаатонымн номандомн. вируется для хранения обрабатываемых величин; в данном при» мере зто склад с пиломатериалами, крепежом и отделочными материалами. Таким образом, бумага выполняет роль 3У для хранения программы, а склад — роль ЗУ для различных материалов. Исполнительным органом здесь является плотник, голова которого играет роль управляющего органа, а различные приспособления в мастерской — аналоги функциональных устройств ЭВМ.
Конечное (готовое) изделие, т. е. ящик, выносится через 62 Глава 2 дверь. Через эту же дверь в мастерскую вносятся стройматериалы. ЭВМ также работает в соответствии с такой организацией. Плотнику с приспособлениями соответствует АЛУ, «программному ЗУ» — ППЗУ и складу для хранения материалов и обрабатываемых величин — ЗУПВ, Через порты ввода-вывода можно передавать данные в ЭВМ и из ЭВМ. При выполнении производственных операций также даются поручения (команды) с операндом и без него. При перемещении пиломатериалов требуется указать адрес плотника, тогда как в случае команды «соединить две рейки между собой» адрес можно опустить.
Необходимо точно указать, какие именно две детали требуется соединить между собой, однако с учетом того, что число реек, необходимых для изготовления ящика, ограничено. Это обстоятельство можно закодировать достаточно просто уже в самой команде. Программы вычислений могут содержать сотни и тысячи команд. То, что ЭВМ выполняет команду за доли секунды, означает, что на выполнение тысяч команд, т. е. программы в целом, ЭВМ затрачивает относительно небольшое время. Объем программы должен соответствовать типу ЭВМ. Решение этой проблемы следует искать с помощью подпрограмм, предназначенных для многократного использования.
В качестве иллюстрации можно воспользоваться примером с накладными на поставку большого числа товаров. Для разных накладных используется один и тот же метод решения, а отличаются только переменные, такие, как имя клиента, количество товара и его цена. Подпрограмма «оформление накладной» также представляет собой всегда одну и ту же процедуру, в которой изменяются только имя и адрес клиента, спецификация товаров, их количество и полная стоимость. Из более тщательного анализа алгоритма такой подпрограммы «оформление накладной» следует, что отдельные операции в ней выполняются последовательно. В конце этой подпрограммы добавляется ряд дополнительных операций, которые осуществляют переход в начало программы и повторное оформление накладной, однако уже для нового клиента. Также поступает и служащий, который заполняет накладные.