- •Учебная дисциплина: "Организация эвм и Систем" Пояснительная записка к курсовому проекту. Вариант 18.
- •2. Описание программы-эмулятора___________________________________________8
- •1. Аналитическая часть.
- •1.1 Двоично-десятичное кодирование.
- •1.2 Арифметические действия над дд – кодами.
- •1.3 Стандарты кодирования текстов:
- •2. Описание программы-эмулятора.
- •3.Практическая разработка.
- •3.1 Описание алгоритма программы.
- •3.2 Листинг программы.
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 Арифметические действия над дд – кодами.
Арифметические действия над ДД – кодами выполняются в два этапа:
двоично-десятичные числа обрабатываются как двоичные коды,
результат корректируется для того, чтобы получить двоично-десятичное число.
Двоично-десятичные числа обрабатываются в компьютере побайтно. При этом надо учитывать следующие флаги 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.
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