Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11.DOC
Скачиваний:
20
Добавлен:
16.04.2015
Размер:
195.58 Кб
Скачать

1. Аналитическая часть.

1.1 Двоично-десятичное кодирование.

Целые числа могут быть записаны в двоично-десятичном коде (ДД), в котором под каждую цифру (d0 - d17) отводится четыре двоичных разряда. ДД числа занимают десять байт и располагаются в памяти, начиная с младших разрядов. Знак числа содержится в разряде 79, разряды же 72-78 содержат нули, таким образом, старший байт используется только под знак числа. Под мантиссу выделено 72 разряда (с 0 по 71). Схематично ДД число можно представить следующим образом:

79 72 0

s

0

0

0

0

0

0

d17 d16 d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0

1.2 Арифметические действия над дд – кодами.

Арифметические действия над ДД – кодами выполняются в два этапа:

  1. двоично-десятичные числа обрабатываются как двоичные коды,

  2. результат корректируется для того, чтобы получить двоично-десятичное число.

Двоично-десятичные числа обрабатываются в компьютере побайтно. При этом надо учитывать следующие флаги F - перенос между байтами, AF - вспомогательный перенос (между двоично-десятичными цифрами в байте).

Сложение

Данная операция выполняется в два этапа: сложение и коррекция. После сложения в тетрадах может оказаться недопустимая комбинация или может возникнуть перенос. Алгоритм коррекции состоит из двух шагов:

1) Если AC = 1 или младшая тетрада меньше 15, но больше 9, то к ней прибавляется код 6. Возникающий перенос прибавляется к старшей тетраде;

2) Если C = 1 или старшая тетрада содержит недопустимую комбинацию, то к результирующему байту прибавляется код 60h.

Примеры сложения ДД-чисел представлены ниже:

14 0001 0100

65 0110 0101 нет переноса

79 0111 1001

7 9

59 0101 1001

87 1000 0111 перенос есть

146 1110 0000

0110 0110

CY 1 0100 0110

1 4 6

Вычитание

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

1) Если AC = 1 или младшая тетрада содержит недопустимую комбинацию, то из нее вычитается код 6b (прибавляется код 10b). Флаги AC и C устанавливаются в соостветствии с правилами установки флагов при вычитании;

2) Если C = 1 или старшая тетрада содержит недопустимую комбинацию, то из нее также вычитается код 6b (прибавляется код 10b).

Сверху представлен пример вычитания двух двоично-десятичных чисел. Как показано, получить результат операции можно двумя способами. В первом случае, к текущему результату прибавляется код 66h, и результата такого сложения переводится в обратный код. Во втором случае cначала имеет место перевод в обратный код текущего результата, а затем прибавление к нему кода AAh.

  1. X = 35 = 00110101

Y = 68 = 01101000

-Y=-68 = 10011000

00110101 1) 01100111 2) 01100111

10011000 01100110

11001101 11001101

1010 10011001

11000111 10101010

1010 00110011 00110011

01100111 3 3 3 3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]