Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УММ / Тема 2 / Тема 2 Лекция 2 / Тема 2 Лекция 2.docx
Скачиваний:
50
Добавлен:
16.03.2016
Размер:
4 Мб
Скачать

3. Арифметические операции

В этом параграфе рассматриваются арифметические операции, выполняемые с числами, и команды, реализующие такие операции. С рядом этих команд (CLA, ADD), командой пересылки

Размещение целого двоичного числа в нескольких словах памяти. Используется оно для расширения диапазона представления таких чисел и, следовательно, для увеличения точности расчетов. Так, размещая число в двух 16-битовых словах, мы сможем работать с числами в диапазоне вместо диапазона от —32768 до +32767, в котором изменяются однословные двоичные числа со знаком.

Так как арифметико-логическое устройство базовой ЭВМ позволяет обрабатывать лишь 16-разрядные операнды, то для суммирования многословных чисел приходится выполнять определенную последовательность действий:

1) произвести сложение младших слов чисел, при этом в регистр переноса автоматически занесется 1 или 0 в зависимости от наличия или отсутствия переноса, возникающего при сложении старших разрядов суммируемых слов;

2) записать полученную сумму в младшее слово результата;

  1. произвести сложение следующих по старшинству слов и содержимого регистра переноса, в конце операции в регистр переноса заносится перенос из старшего разряда суммируемых слов (1 или 0);

  1. полученную сумму записать в соответствующее слово результата;

  1. повторять п. п. 3 и 4 до тех пор, пока не будут просуммированы все слова слагаемых.

Таблица 5

Программа суммирования двухсловных чисел

В табл. 5 приведен пример программы сложения чисел Х= 12345678 (BC614E)16и Y = 76543210 (48FF4EA)16. В этой программе используется команда ADCВ, обеспечивающая суммирование содержимых аккумулятора, ячейки с адресом В и регистра переноса, в котором хранится значение переноса (0 или 1), полученное при выполнении предыдущей операции. Результат суммирования сохраняется в аккумуляторе, а в регистр переноса заносится 1 или 0 в зависимости от наличия или отсутствия переноса из старшего разряда суммируемых слов.

Таблица 6

Программа изменения знака числа

Увеличение на единицу (INCrement) и уменьшение на единицу (DECrement). По команде INC к содержимому аккумулятора прибавляется единица, а по команде DEC — единица вычитается. Если при этом появляется перенос из старшего разряда, то в регистр переноса (С) заносится 1, в противном случае — 0.

Изменение знака числа. Выше уже говорилось, что для изменения знака числа, записанного в дополнительном коде, необходимо его инвертировать, а затем прибавить единицу к младшему разряду. На ЭВМ такую операцию можно выполнить с помощью команд СМА (инверсия содержимого аккумулятора) и INC.

В табл. 6 приведен пример программы для получения Y=— X.

Вычитание (X Y). Оно может выполняться путем сложения уменьшаемого X и дополнительного кода вычитаемого Y. Однако это требует записи и исполнения нескольких команд (CLA, ADD Y, СМА, INC, ADD X). Для сокращения программы и времени выполнения вычитания в базовой ЭВМ предусмотрена команда вычитания SUB Y (CLA, ADD X, SUB Y), которая реализует те же действия за меньшее время.

При выполнении вычитания (так же, как и при выполнении сложения) возможно переполнение. Признаком возникновения переполнения является получение положительного результата при Х<0 и Y>0 или отрицательного результата при Х> 0 и Y<0.

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

При двоичном умножении частичное произведение сдвигается на один разряд влево для каждого последующего разряда множителя. Если множитель равен 0, то частичное произведение равно 0; если множитель равен 1, то частичное произведение равно множимому. В качестве примера рассмотрим получение произведений 5×5 = 25, 5×10 = 50 и 5×3 = 15:

Соседние файлы в папке Тема 2 Лекция 2