Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania_k_kursovomu_proektu_VMSi....doc
Скачиваний:
4
Добавлен:
20.04.2019
Размер:
4.98 Mб
Скачать

Сложение с п-кратной точностью

Большинство современных микрокомпьютеров работает со словами длиной 8 бит. Очевидно, что для многих задач такая точность недостаточна, и, следовательно, нужны средства для представления чисел с более высокой точностью. Очевидный спо­соб — это представлять одно число двумя или большим количеством слов. Такие числа можно хранить в последовательных ячейках памя­ти или в последовательных общих регистрах. Будем называть их чис­лами n - кратной точности. Проблема тогда сведется к выполнению ариф­метических действий над числами n -кратной точности с помощью команд, работающих с данными размером в одно слово. Наличие команд «сложения/вычитания с переносом» значительно упрощает ре­ализацию сложения и вычитания над числами n-кратной точности.

Процедуру сложения чисел без знаков с двойной точностью можно реализовать, например, следующим образом. Младшие слова двух чисел складываются без начального переноса, при этом получается младшее слово суммы и итоговый перенос из старшего разряда. Старшие слова двух чисел складываются вместе с входным переносом, ко­торый равен итоговому переносу, полученному при сложении млад­ших слов. Окончательный результат, т. е. сумма,— это число с двой­ной точностью и итоговый перенос. В виде блок-схемы эта процедура представлена на рис. 18.

В табл. 6 показана подпрограмма, реализующая эту процедуру. Исходные числа с двойной точностью обозначены через X и Y, а сум­ма — через S. Предполагается, что общие регистры 1 и 2 содержат соот­ветственно старшую и младшую части X (обозначенные как Хн и XL), а регистры 3 и 4 — старшую и младшую части Y (обозначенные как yh и yl). Старшая и младшая части суммы должны быть поме­щены в регистры 5 и 6 соответственно.

Таблица 5.6

Подпрограмма сложения чисел с двойной точностью

Распределение общих регистров: R1:XH, R3:YH, R5:SH

R2:XL, R4:YL, R6:SL

Ячейка памяти

Команда на машин­ном языке

Команда в символи­ческой форме

Комментарий

0000

12

MOV 0 from 2

Загрузка XL в аккумулятор

0001

84

ADD 4

Сложение YL с XL, С = перенос

0002

06

MOV 0 to 6

Загрузка SL в регистр 6

0003

11

MOV 0 from 1

Загрузка Хн в аккумулятор

0004

93

ADC 3

Сложение Хн, Ун и С

0005

05

MOV 0 to 5

Загрузка SH в регистр 5

0006

F8

RET

Возврат из подпрограммы

Рис. 5.3 Блок-схема алгоритма сложения чисел с

двой­ной точностью

Первая команда загружает младшую часть X в аккумулятор. За­тем команда сложения складывает младшие части X и Y без началь­ного переноса. Итоговый перенос из старшего разряда устанавливается на триггер переноса С. Затем полученная на сумматоре младшая часть суммы передается в регистр 6. После этого старшая часть X передается в аккумулятор. Далее команда «сложение с переносом» складывает старшие части X и Y и перенос С. В результате старшая часть суммы оказывается в аккумуляторе, а окончательный перенос — в триггере переноса С. Старшая часть суммы передается в регистр 5 следующей командой. Последняя команда — возврат из подпрограммы.