Лекции.ИНФО


Управление вычислительным процессом, сдвиги и логические операции.



Задача управления вычислительным процессом, т.е. требуемой последовательностью выполнения команд, решается в базовой ЭВМ при помощи команд переходов (BCS, BPL, BMI, BEQ, BR), команд "Приращение и пропуск" (ISZ) и "Останов" (HLT). Все эти команды являются адресными (кроме HLT), т.е. в них указывается адрес той ячейки памяти, из которой должна быть выбрана следующая команда программы при выполнении того или иного условия. Если же условие не выполняется, то должна исполняться команда, расположенная вслед за данной командой управления. Как и в других адресных ко­мандах, здесь можно использовать косвенную адресацию. Команды переходов не изменяют состояния аккумулятора и регистра перено­са. Они могут лишь изменять содержимое счетчика команд, поместив в него адрес, определяемый адресной частью команды.

BCS M (Переход, если перенос). Переход к команде, располо­женной в ячейке с адресом М, если содержимое регистра переноса равно 1.

BPL M (Переход, если плюс). Переход к команде, расположен­ной в ячейке с адресом М, если содержимое аккумулятора больше или равно нулю, т.е. в его старшем (знаковом) разряде содержится 0.

BMI M (Переход, если минус). Переход к команде, расположен­ной в ячейке с адресом М, если содержимое аккумулятора меньше нуля, т.е. в его старшем (знаковом) разряде содержится 1.

BEQ M (Переход, если нуль). Переход к команде, расположен­ной в ячейке с адресом М, если содержимое аккумулятора равно ну­лю.

BR M (Переход безусловный). Переход к команде, расположен­ной в ячейке с адресом М, осуществляемый при любых значениях А и С или других регистров базовой ЭВМ.

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

Побитовая обработка данных обеспечивается в базовой ЭВМ ко­мандами логического умножения, циклических сдвигов, а также ко­мандами инвертирования и очистки регистра переноса.

Команда AND M (Логическое умножение) выполняет над каждым разрядом содержимого аккумулятора и ячейки М булеву операцию "&".

Результат выполнения команды для каждой пары битов операн­дов равен единице только тогда, когда оба бита равны единице, а в остальных случаях бит результата равен нулю. Команда позволяет выделить или очистить определенные биты слова.

Команды ROL (циклический сдвиг влево на один разряд) и ROR (циклический сдвиг вправо на один разряд) замыкают аккумулятор и регистр переноса в кольцо и сдвигают все биты кольца на один разряд влево или вправо (см. рис. 1.3.).

Регистр Аккумулятор

переноса

а) До сдвига 0 1011100000101011

После сдвига 1 0111000001010110

б) До сдвига 0 1011100000101011

После сдвига 1 0101110000010101

Рис 1.3. Циклические сдвиги: а) - влево, б) - вправо.

Сдвигами числа влево или вправо можно реализовать операции умножения или деления на два (один сдвиг), на четыре (два сдви­га), на восемь (три) сдвига и.т.д.

Подпрограммы.

Достаточно часто встречаются ситуации, когда отдельные час­ти программы должны выполнять одни и те же действия по обработке данных (например вычисление тригонометрической функции). В по­добных случаях повторяющиеся части программы выделяют в подпрог­рамму, а в соответствующие места программы заносят лишь команды обращения к этой подпрограмме. В базовой ЭВМ для этой цели ис­пользуется команда JSR (Обращение к подпрограмме). Ниже показана часть основной программы, содержащая две команды JSR 500, с по­мощью которых осуществляется переход к выполнению команд подп­рограммы.

По команде JSR 500, расположенной в ячейке 55, выполняется запись числа 55+1=56 (текущего значения счетчика команд) в ячей­ку с адресом 500 и запись числа 500+1=501 в счетчик команд (ад­рес первой команды подпрограммы). Таким образом осуществляется переход к выполнению команд подпрограммы. Далее начинается про­цесс выполнения команд подпрограммы, который завершается командой BR (500), расположенной в ячейке 526. Это команда безуслов­ного перехода с косвенной адресацией предписывает ЭВМ выполнить переход к команде, расположенной по адресу, хранящемуся в 500 ячейке (пересылает содержимое 500 ячейки в СК). Так как в эту ячейку ранее было записано число 56, то будет выполняться команда, находящаяся в ячейке 56, т.е. следую­щая за обращением к подпрограмме. Аналогично выполняется команда JSR 500, расположенная в ячейке 82 (после выполнения команд подпрограммы будет выполнен переход к ячейке 83).

 

 
 

 

 


Таким образом, при оформлении подпрограммы перед ее первой командой следует разместить ячейку, в которую будет пересылаться адрес возврата из подпрограммы. В команде обращения к подпрог­рамме указывается адрес именно этой ячейки (например адрес М в команде JSR M). Последней командой подпрограммы должна быть ко­манда выхода (команда BR (M) для подпрограммы, размещенной начи­ная с ячейки М). По ней осуществляется переход к команде, адрес которой сохраняется в начальной ячейке тела подпрограммы.

Выполнение машинных команд.

В процессе выполнения команд устройство управления ЭВМ про­изводит анализ и пересылку команды, отдельных ее частей (кода операции, признака адресации и адреса) или операнда из одного регистра ЭВМ в другой ее регистр, АЛУ, память или устройства ввода-вывода. Эти действия (микрооперации) протекают в опреде­ленной временной последовательности и скоординированы между со­бой. Для обеспечения такой последовательности в ЭВМ используется генератор тактовых импульсов.

Цикл команды. Для реализации одной команды требуется выпол­нить определенное количество микрокоманд, каждая из которых ини­циируется одним тактовым импульсом. Общее число тактовых импуль­сов, требуемых для выполнения команды, определяет время ее вы­полнения, называемое циклом команды. Цикл команды обычно включа­ет один или несколько машинных циклов. Устройство управления ба­зовой ЭВМ может находиться в четырех возможных состояниях: вы­борки команды, выборки адреса, исполнения и прерывания. Длитель­ность каждого из этих четырех состояний определяет время выполнения соответствующего машинного цикла. Основные действия, вы­полняемые ЭВМ во время каждого из машинных циклов описаны ниже.

Выборка команды. В данном машинном цикле выполняется чтение команды из памяти и ее частичное декодирование.

1. Содержимое ячейки памяти, на которую указывает регистр адреса, куда заносится содержимое счетчика команд, читается из памяти в регистр данных.

2. Содержимое счетчика команд увеличивается на 1.

3. Содержимое регистра данных пересылается в регистр ко­манд, код операции команды частично декодируется для выявления типа команды (адресная, безадресная или ввода-вывода), анализи­руется бит признака адресации и происходит подготовка цепей, не­обходимых для выполнения команды.

Безадресные команды и команды ввода-вывода окончательно ис­полняются в этом же цикле, т.е. это одноцикловые команды.

4. Выполняются действия по завершению одноцикловой команды.

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

1. Адресная часть команды пересылается из регистра данных, где пока еще сохраняется копия команды, в регистр адреса.

2. Содержимое ячейки памяти, указываемой регистром адреса, читается в регистр данных. Теперь в этом регистре находится либо адрес операнда, либо адрес результата, либо адрес перехода, ко­торый будет использоваться в цикле исполнения команды.

Если косвенно адресуется одна из индексных ячеек (адреса 8, 9,...,F), то цикл выборки адреса операнда (результата) продолжает­ся.

3. Содержимое регистра данных увеличивается на единицу.

4. Измененное содержимое регистра данных пересылается в ячейку памяти по адресу, указываемому регистром адреса.

5. Содержимое регистра данных уменьшается на единицу.

После этой операции в регистре данных восстанавливается значение адреса, находившегося в индексной ячейке до выполнения шага 3. Содержимое же индексной ячейки увеличилось на 1 и при следующем обращении к ней будет выбран новый адрес операнда (ре­зультата).

Исполнение. Последовательность действий, выполняемых в этом цикле, определяется типом выполняемой адресной команды.

1. Для команд, при выполнении которых требуется выборка операнда из памяти ЭВМ (AND, ADD, ADC, SUB, ISZ), состояние ис­полнения используется для чтения операнда в регистр данных и вы­полнения операции, указываемой кодом операции команды.

2. По команде пересылки (MOV) в этом машинном цикле произ­водится запись содержимого аккумулятора в ячейку памяти с адре­сом, расположенным в регистре данных. Для этого содержимое ре­гистра данных пересылается в регистр адреса, а содержимое акку­мулятора - в регистр данных и далее в ячейку памяти, указываемую регистром адреса.

3. При исполнении команд переходов (BCS, BPL, BMI, BEQ) производится проверка соответствующего условия и пересылка адре­са из регистра данных в счетчик команд при выполнении этого ус­ловия. Иначе будет выбрана команда, расположенная вслед за ко­мандой перехода. При исполнении команды безусловного перехода (BR) пересылка адреса перехода в счетчик команд выполняется без какой-либо проверки.

4. Для команды обращения к подпрограмме (JSR) во время это­го машинного цикла осуществляется пересылка содержимого счетчика команд в ячейку памяти, адрес которой содержится в регистре дан­ных (код команды из регистра данных заносится в регистр адреса, и при этом код операции теряется, а остается адрес), и занесение в счетчик команд увеличенного на единицу содер­жимого регистра данных (код операции теряется, а остается адрес, увеличенный на единицу).









Читайте также:

Последнее изменение этой страницы: 2016-03-17; Просмотров: 87;


lektsia.info 2017 год. Все права принадлежат их авторам! Главная