Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Команды обработки данных
Операции, выполняемые в иллюстративном микропроцессоре при помощи арифметических и логических команд, являются базисными и встречаются в большинстве микропроцессоров. В некоторых микропроцессорах, кроме того, предусмотрены команды десятичной арифметики, двоичного умножения, двоичного деления и других операций. Десятичная арифметика встречается в системе команд многих микропроцессоров. Десятичные числа, как правило, представляются в коде 8421 BCD с четырехбитовыми цифрами, размещаемыми в слове данных вплотную друг к другу. Например, в микропроцессоре с восьмибитовым словом каждое слово интерпретируется как двузначное десятичное целое без знака. Десятичное сложение обычно выполняется с помощью двоичного сложения и последующей коррекции результата. Для коррекции сначала определяются десятичные разряды, в которых выполняется одно из двух условий: (1) десятичная цифра в двоичной системе превышает 9 или (2) возникает перенос из старшего двоичного разряда цифры при двоичном сложении. К каждому такому десятичному разряду прибавляется корректирующая цифра 6, причем это сложение также выполняется обычным образом в двоичной системе с распространением всех переносов. Реализуется описанная процедура в микропроцессорах обычно одним из двух способов. В первом случае предусматривается команда десятичного сложения, которая в процессе выполнения осуществляет и двоичное сложение, и коррекцию. Во втором — предусматривается отдельная команда десятичной коррекции (decimal-adjust instruction). В этом случае при десятичном сложении сначала выполняется обычная команда двоичного сложения, оставляющая результат в регистре, а затем выполняется команда десятичной коррекции. Для правильной работы эта вторая команда должна располагать необходимой информацией. В частности, должно быть известно о наличии или отсутствии переносов из каждого десятичного разряда при двоичном сложении. В связи с этим обычно добавляются триггеры, фиксирующие переносы из каждого четвертого двоичного разряда при двоичном сложении. При восьмибитовом слове данных нужен только один дополнительный триггер переноса, поскольку триггер переноса из восьмого разряда — триггер переноса С — уже есть. Умножение и деление — это относительно сложные операции, и аппаратно они реализуются лишь в немногих микропроцессорах. Обычно эти операции выполняются над двоичными целыми числами без знаков. Как правило, по команде умножения перемножается содержимое двух регистров, и результат двойной длины запоминается в паре регистров. При делении делимое обычно задается парой регистров, а делитель — одним. Целое частное при этом помещается в один регистр, а остаток — в другой. Перед выполнением деления, однако, происходит проверка на возможное переполнение частного. Переполнение происходит в том случае, когда для представления частного требуется больше разрядов, чем содержится в одном регистре. Тест переполнения можно провести, сравнивая делитель со старшей половиной делимого. Переполнения частного не произойдет, если делитель не равен нулю и по крайней мере вдвое превышает старшую половину делимого. В силу сложности операций умножения и деления время их выполнения обычно существенно превышает время выполнения других операций. Каждая из них состоит из многих шагов, выполняемых в микропроцессоре последовательно.
|