Представление чисел с плавающей точкой

Санкт-Петербургский  государственный технологический  институт

(технический  университет)

       

  Факультет  Информатики и Управления

Кафедра САПРиУ,

II курс, гр.823

 

Дисциплина: Организация ЭВМ и систем 
 
 
 

Пояснительная записка к курсовому проекту.

Тема: ‘Представление чисел с плавающей точкой’.  
 
 

Студент: Сопыгин А.И.

                                     Преподаватель: Гиляров В.Н.

                                                                                                                                                            

                                                                                                                                                                                                                          

                                
 

Санкт-Петербург, 2003г.

Содержание 
 

   стр.

    Введение…...…………………………………………………………………………..3

    Аналитический обзор….…………………………………………………………….3

    Описание выбранной программы-эмулятора……………………………………8

    Практическая  разработка…………………………………………………………..9

    Описание  использованных средств вычислительной техники………………13

    Выводы……………………………………………………………………………………..13

    Использованная  литература………………………………………………………14

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Введение.

    В ячейках памяти 5000-5003h хранится число с плавающей точкой в формате (1+8+23). Восьмиразрядный порядок имеет смещение pсм=12810. Двоичная двадцатитрёхразрядная мантисса не содержит старшей единицы, получаемой в  результате нормализации.

   Требуется составить программу, расположенную в памяти с ячейки  400016, формирующую следующие четыре числа:

  1. «Знак числа» в ячейке 600016 (однобайтное целое число «+» - 00 и «-» - 01),
  2. «Знак порядка» в ячейке 600116 (однобайтное целое число «+» - 00 и «-» - 01),
  3. Модуль порядка в ячейке 600216 (однобайтное целое число),
  4. Мантисса как трёхбайтное целое число в ячейках 600316-600516.
 

Аналитический обзор.

    Системой  счисления называется совокупность приемов наименования и записи чисел. В любой системе счисления для представления чисел выбираются некоторые символы (их называют цифрами), а остальные числа получаются в результате каких-либо операций над цифрами данной системы счисления.

    Существуют  позиционные и непозиционные  системы счисления.

    В непозиционных системах вес цифры (т.е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.

    В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая – 7 единиц, а третья – 7 десятых долей единицы. Сама же запись числа 757,7 означает сокращенную запись выражения

700 + 50 + 7 + 0,7 = 7∙102 + 5∙101 + 7∙100 + 7∙10-1 = 757,7.

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

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

an-1 qn-1 + an-2 qn-2+ ... + a1 q1 + a0 q0 + a-1 q-1 + ... + a-m q-m,

    где ai – цифры системы счисления; n и m – число целых и дробных разрядов, соответственно.  

    Десятичная  система счисления. Использует десять обычных цифр – 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9, а также символы «+» и «–» для обозначения знака числа и запятую (точку) для разделения целой и дробной частей числа. Существует массовое заблуждение, будто именно десятичная система счисления является наиболее употребительным способом записи чисел. Между тем, более внимательный анализ правил чтения и записи чисел приводит к другому выводу: система счисления, которой мы обычно пользуемся, фактически является двойной, так как имеет основания – 10 и 1000. В частности, в русском языке известны названия только для первых семи разрядов десятичной системы счисления (1 – единица, 10 – десяток, 100 – сотня, 1000 – тысяча, 10000 – тьма, 100000 – легион, 1000000 – миллион), но предпоследние два из них (легион  и тьма) давно вышли из употребления, а соседние с ними (миллион и тысяча) – названия классов, а не только разрядов. Итак, фактически в русском языке остались лишь два самостоятельных названия для десятичных разрядов: десяток и сотня. В других языках – аналогичная ситуация.

    Двоичная система счисления. В настоящий момент – наиболее употребительная в информатике, вычислительной технике и смежных отраслях система счисления. Использует две цифры – 0 и 1, а также символы «+» и «–» для обозначения знака числа и запятую (точку) для разделения целой и дробной части.

    Восьмеричная система счисления. Использует восемь цифр – 0, 1, 2, 3, 4, 5, 6, и 7, а также символы «+» и «–» для обозначения знака числа и запятую (точку) для разделения целой и дробной частей числа. Широко использовалась в программировании в 1950-70-ые гг. К настоящему времени практически полностью вытеснена шестнадцатеричной системой счисления, однако функции перевода числа из десятичной системы в восьмеричную и обратно сохраняются в микрокалькуляторах и многих языках программирования.

    Шестнадцатеричная система счисления. Использует шестнадцать цифр – 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9 в их обычном смысле, а затем A=10, B=11 , C=12 , D=13 , E=14 , F=15 . Также использует символы «+» и «–» для обозначения знака числа и запятую (точку) для разделения целой и дробной частей числа. Внедрена американской корпорацией IBM. Широко используется в программировании для IBM-совместимых компьютеров. С другой стороны, в некоторых языках сохранились и следы использования этой системы счисления в прошлом. Например, в романских языках (испанском, французском и др.) числительные от 11 до 16 образуются по одному правилу, а от 17 до 19 – по другому. А в русском языке известен пуд, равный 16 килограммам. 

    Перевод восьмеричных и шестнадцатеричных чисел в двоичную систему очень прост: достаточно каждую цифру заменить эквивалентной ей двоичной триадой (тройкой цифр) или тетрадой (четверкой цифр).

    Например:

    Чтобы перевести число из двоичной системы в восьмеричную или шестнадцатеричную, его нужно разбить влево и вправо от запятой на триады (для восьмеричной) или тетрады (для шестнадцатеричной) и каждую такую группу заменить соответствующей восьмеричной (шестнадцатеричной) цифрой.

    Например,

    

    При переводе числа из двоичной (восьмеричной, шестнадцатеричной) системы в десятичную надо это число представить в виде суммы степеней основания его системы счисления.

    Примеры:

    При переводе целого десятичного числа в систему с основанием q его необходимо последовательно делить на q до тех пор, пока не останется остаток, меньший или равный q–1. Число в системе с основанием q записывается как последовательность остатков от деления, записанных в обратном порядке, начиная с последнего. 

    Пример: Перевести число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:

    Ответ: 7510 = 1 001 0112 = 1138 = 4B16. 

    При переводе правильной десятичной дроби в систему счисления с основанием q необходимо сначала саму дробь, а затем дробные части всех последующих произведений последовательно умножать на q, отделяя после каждого умножения целую часть произведения. Число в новой системе счисления записывается как последовательность полученных целых частей произведения. Умножение производится до тех пор, пока дробная часть произведения не станет равной нулю. Это значит, что сделан точный перевод. В противном случае перевод осуществляется до заданной точности. Достаточно того количества цифр в pезультате, котоpое поместится в ячейку.

    Пример: Перевести число 0,35 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:

    

    Ответ: 0,3510 = 0,010112 = 0,2638 = 0,5916. 

Представление данных с плавающей точкой.

    Для унификации формата представления  чисел с плавающей точкой Институтом инженеров по электротехнике и радиоэлектронике (IEEE) разработан стандарт 754.

    Стандарт  специфицируется на два формата: 32-битовый – обычной точности представления и 64-битовый – удвоенной точности представления.

    В первом формате поле порядка занимает 8 бит, во втором – 11 бит. Стандарт регламентирует использование числа 2 в качестве неявно заданного значения основания  характеристики. Помимо основных, в стандарте предусмотрены два расширенных варианта форматов обычной и удвоенной точности, конкретная спецификация которых зависит от реализации вычислительной системы. Расширенные форматы позволяют включать дополнительные биты и в поле порядка (расширение диапазона представления) и в поле мантиссы (повышение точности представления). Расширенные форматы предназначаются для промежуточных вычислений. За счёт повышения точности снижается  вероятность появления слишком больших ошибок округления, а при расширении диапазона снижается вероятность появления ошибки переполнения, которая, как правило, приводит к аварийному завершению программы. Ещё одно достоинство расширенного формата обычной точности состоит в том, что он позволяет использовать некоторые свойства формата с удвоенной точностью, но при этом не требует соответствующего увеличения времени выполнения арифметических операций. 

Параметры форматов, регламентированные стандартом IEEE 754.

Параметр Формат
      Обычная точность Расширенный

обычной точности

Удвоенная

точность

Расширенный

удвоенной точности

Размер  слова (бит) 

Поле порядка (бит) 

Смещение порядка 

Максимальное  значение порядка 

Минимальное значение порядка 

Диапазон представления (по основанию 10) 

Поле мантиссы (бит) 

Количество значений порядка 

Количество значений мантиссы 

Количество отличающихся представимых величин

32 

8 

127 

127 
 

-126 
 

10-38, 10+38 
 

23 

254 
 

223 
 

1.98∙231

≥43 

≥11 

Не регламентируется

≥1023 
 

≤-1022 
 

Не регламентируется 

≥31 

Не регламентируется 

Не регламентируется 

Не регламентируется

64 

11 

1023 

1023 
 

-1022 
 

10-308, 10+308 
 

52 

2046 
 

252 
 

1.99∙263

≥79 

≥15 

Не регламентируется 

≥16383 
 

≤-16382 
 

Не регламентируется 
 

≥63 

Не регламентируется 
 

Не регламентируется 
 

Не регламентируется

 

    Не  все двоичные комбинации в форматах, регламентированных стандартом, интерпретируются обычным способом. Крайние значения порядка – все нули (значение 0) и все единицы (значение 255 в формате обычной точности и 2047 в формате удвоенной точности) – представляют особые величины. Стандартом предусматривается представление в заданном формате следующих классов величин.

  • При значениях кода в поле порядка в интервале от 1 до 254 в формате обычной точности и от 1 до 2046 в формате удвоенной точности представляются нормализованные вещественные числа. Используется смещённый формат представления порядка и, следовательно, интервал возможных значений порядка простирается от -126 до +127 в формате обычной точности и от -1022 до +1023 – формате удвоенной точности. Нормализованная мантисса  включает бит, равный 1, слева от разделительной точки, который не хранится в поле мантиссы. Следовательно, в формате обычной точности представляется 24-разрядная мантисса, а в формате удвоенной точности – 53-разрядная.
  • Нулевое значение в поле порядка совместно с нулевым значением в поле мантиссы представляет значение +0 или -0  в зависимости от кода в бите знака мантиссы.
  • Заполнение поля порядка кодом 1 совместно с нулевым значением в поле мантиссы представляет значение +∞ и -∞ в зависимости от кода в бите знака мантиссы. Таким образом, формат позволяет представить на ограниченной разрядной сетке неограниченно большую числовую величину. Пользователь должен решить, трактовать ли переполнение как ошибку или обрабатывать в программе бесконечно большие величины.
  • Нулевое значение в поле порядка совместно с ненулевым значением в поле мантиссы представляет ненормализованные числа. В этом случае считается, что неявный старший разряд мантиссы равен 0, и значение порядка равно – 126 в формате обычной точности или -1022 – в формате удвоенной точности. Код в знаковом бите мантиссы по-прежнему определяет знак числа.
  • Заполнение поля порядка кодом 1 совместно с ненулевым кодом в поле мантиссы представляет так называемые необычные числовые величины (значения типа NaN – Not a Number). Включение в регламентируемые стандартом форматы возможности представлять подобные величины позволяет программисту сигнализировать посредством результата арифметической операции о различных исключительных ситуациях.
 

Представление величин в формате с плавающей точкой в соответствии со стандартом IEEE 754.

      Обычная точность (32 бит) Удвоенная точность (64 бит)
      Знак мантиссы Смещённый порядок Мантисса Значение Знак мантиссы Смещённый порядок Мантисса Значение
Положительный ноль 0 0 0 0 0 0 0 0
Отрицательный ноль 1 0 0 -0 1 0 0 -0
Плюс  бесконеч-ность 0 255 0 +∞ 0 2047 0 +∞
Минус бесконечность 1 255 0 -∞ 1 2047 0 -∞
Простое значение типа NaN 0 или 1 255 ≠0 NaN 0 или 1 2047 ≠0 NaN
Сигнализиру-ющее значение типа NaN 0 или 1 255 ≠0 NaN 0 или 1 2047 ≠0 NaN
Положительное нормализован-ное число 0 0<e<255 f 2e-127∙(1.f) 0 0<e<2047 f 2e-1023∙(1.f)
Отрицательное нормализован-ное число 1 0<e<255 f -2e-127∙(1.f) 1 0<e<2047 f -2e-1023∙(1.f)
Положительное ненормализо-ванное число 0 0 f≠0 2e-126∙(0.f) 0 0 f≠0 2e-1022∙(1.f)
Отрицательное ненормализо-ванное число 1 0 f≠0 -2e-126∙(0.f) 1 0 f≠0 -2e-1022∙(1.f)
 
 

Описание выбранной программы-эмулятора.

    Для решения поставленной задачи воспользуемся эмулятором Смирнова.

Основной  причиной выбора этого эмулятора  было то, что из-за некорректного отображения обоих эмуляторов на ПК с процессором Intel Pentium–IV их размеры окон эмуляторов превышают разрешение монитора пользователя и работа с ними просто невозможна. К тому же у эмулятора Дёмина-Пушкина как бы «срезается» правая часть главного окна программы, и доступ к кнопкам становится невозможен.  

 

Отображение эмуляторов Дёмина-Пушкина  и Смирнова на ПК с процессором  P-IV.

    Однако, из-за того, что эмулятор Смирнова состоит из нескольких окон, «привязанных» друг к другу, и на них доступны все необходимые кнопки управления, то, отменив привязку и удалив окно клавиатуры, можно более-менее комфортно работать с эмулятором. 

Работа  с Эмулятором Смирнова. 
 
 
 
 
 
 

Практическая  разработка программы.

    Для решения поставленной задачи необходимо представить число с плавающей точкой в виде четырёх байт, хранящихся в обратном порядке.

    В 4-м байте, хранящемся по адресу 5003h, находится бит знака числа и 6 бит смещённого порядка числа, а последний (младший) бит смещённого порядка хранится в предыдущем, третьем байте, располагающемся в ячейке 5002h.

    Следовательно, сначала необходимо загрузить в  аккумулятор третий байт числа, а затем, сдвинув байт, записать в аккумулятор 4-й байт числа, содержащий бит знака числа. При этом младший бит смещённого порядка будет располагаться в результате сдвига во флажковом регистре в бите, отвечающем за переполнение.

    Сдвинув 4-й байт числа, скопированный в  аккумулятор, в аккумуляторе мы получим значение смещённого порядка, а во флажке CY – бит знака числа. В зависимости от состояния CY в ячейку 6000h записываем 0h (знак числа – «+») или 1h (знак числа – «-»).

    Далее необходимо получить значение порядка  числа. Так как смещённый порядок  в нашем случае равен 12810 и порядок числа лежит на отрезке [-128; 127], то из полученного значения в аккумуляторе необходимо вычесть это смещение, равно 8016. Однако, если порядок отрицателен, мы не получим нужного нам значения в результате заёма в аккумуляторе при вычитании (значение CY равно 1).

    Например:

=

    То  есть полученное значение даже больше возможного!

    Следовательно, если после вычитания значение CY равно 1, необходимо записать в ячейку 6001h значение 1h (знак порядка – «-») из числа 80h вычесть значение смещённого порядка:

=

    Таким образом, после получения смещённого порядка в аккумуляторе после  второго сдвига необходимо сохранить это значение для последующих вычислений, например, в регистре B.

    После определения знака числа, знака порядка числа и значения самого порядка, сохраняемого в ячейке по адресу 6002h, необходимо проверить, нужно ли восстанавливать старшую единицу мантиссы в третьем байте числа. Если число больше, чем 80h, то старшую единицу восстанавливать не надо, иначе – нужно прибавить к этому байту значение 80h (восстановление старшей единицы). Полученное значение сохраняем по адресу 6005h, а второй и первый байты числа необходимо сохранить по адресу 6004h и 6003h, так как мантисса числа должна храниться в обратном порядке. 

    Перед началом выполнения алгоритма в  ячейки 6000h и 6001h записываются значения 00h для того, чтобы упростить алгоритм программы.

    Для организации диалога с пользователем  внесём в память необходимые строковые  константы, которые будем использовать при вводе и выводе данных. 
 
 
 
 
 
 
 
 
 

Блок-схема  программы.

 

Листинг программы. 

Ячейка

4000

4003

4006

4009

400C

400E

4011

4013

4016

4018

401B

401D

4020

4021

4024

4025

4026

4027

402A

402D

4030

4033

4034

4037

4038

4039

403C

403D

403E

4041

4042

4043

4044

4045

4046

4047

4048

4049

404A

404D

404F

4052

4053

4055

4058

405A

405D

405F

4060

4063

4064

4065

4067

406A

406C

406F

4070

4071

4074

4075

4076

4079

407C

407F

4082

4085

4086

4089

408A

408B

408E

408F

4090

4093

4094

4097

4098

4099

409A

409D

409E

409F

40A2

40A5

40A8

40AB

40AE

40B0

40B3

16-й  код.

31 00 50

01 00 41

CD 4C 00

CD 52 00

3E 1B

CD 58 00

3E 48

CD 58 00

3E 1B

CD 58 00

3E 4A

CD 58 00

AF

21 00 60

77

2C

77

01 00 46

CD 4C 00

21 00 50

CD 67 00

77

CD 67 00

2C

77

CD 67 00

2C

77

CD 67 00

2C

77

2D

7E

17

7E

17

47

D2 53 40

3E 01

32 00 60

78

D6 80

D2 60 40

3E 01

32 01 60

3E 80

90

32 02 60

2D

7E

FE 80

D2 6C 40

C6 80

32 05 60

2D

7E

32 04 60

2D

7E

32 03 60

CD 49 00

01 20 46

CD 4C 00

21 00 60

7E

CD 61 00

2C

7E

CD 61 00

2C

7E

CD 61 00

2C

7E

CD 61 00

2C

7E

CD 61 00

2C

7E

CD 61 00

CD 49 00

01 40 46

CD 4C 00

CD 55 00

FE 59

CA 0C 40

C3 40 00

Код ассемблера.

LXI SP, 5000h;

LXI B, 4100h;

CALL 4Ch;

CALL 52h;

MVI A, 1Bh;

CALL 58h;

MVI A, 48h;

CALL 58h;

MVI A, 1Bh;

CALL 58h;

MVI A, 4A;

CALL 58h;

XRA A;

LXI H, 6000h;

MOV M, A;

INR L;

MOV M, A;

LXI B, 4600h;

CALL 4Ch;

LXI H, 5000h;

CALL 67h;

MOV M, A;

CALL 67h;

INR L;

MOV M, A;

CALL 67h;

INR L;

MOV M, A;

CALL 67h;

INR L;

MOV M, A;

DCR L;

MOV A, M;

RAL;

INR L;

MOV A, M;

RAL;

MOV B, A;

JNC 4053h;

MVI A, 1h;

STA 6000;

MOV A, B;

SUI 80h;

JNC 4060h;

MVI A, 1h;

STA 6001h;

MVI A, 80h;

SUB B;

STA 6002;

DCR L;

MOV A, M;

CPI 80h;

JNC 406Ch;

ADI 80h;

STA 6005h;

DCR L;

MOV A, M;

STA 6004h;

DCR L;

MOV A, M;

STA 6003h;

CALL 49h;

LXI B, 4620h;

CALL 4Ch;

LXI H, 6000h;

MOV A, M;

CALL 61h;

INR L;

MOV A, M;

CALL 61h;

INR L;

MOV A, M;

CALL 61h;

INR L;

MOV A, M;

CALL 61h;

INR L;

MOV A, M;

CALL 61h;

INR L;

MOV A, M;

CALL 61h;

CALL 49h;

LXI B, 4640h;

CALL 4Ch;

CALL 55h;

CPI 59h;

JZ 400Ch;

CALL 40h;

Комментарий к команде.

Создание стека программы по адресу 5000h;

Вывод заставки на ВТА; 
 

Очистка экрана и перевод курсора в начало экрана; 
 
 
 
 
 
 

Очистка аккумулятора;

Получение адреса знака числа;

Засылка в память значения 0h;

Получение адреса знака порядка числа; 

Вывод приглашения для ввода 16-го числа; 
 

Ввод 1-го байта числа;

Сохранение 1-го байта по адресу 5000h;

Ввод 2-го байта числа; 

Сохранение 2-го байта по адресу 5001h;

Ввод 3-го байта числа; 

Сохранение 3-го байта по адресу 5002h;

Ввод 4-го байта числа; 

Сохранение 4-го байта по адресу 5003h;

Получение адреса 3-го байта (5002h);

Копирование 3-го байта в аккумулятор;

Высвобождение младшего бита порядка числа в  CY;

Получение адреса 4-го байта;

Копирование 4-го байта в аккумулятор;

Сдвиг 4-го байта (получение знака числа в CY, порядка числа в аккумуляторе);

Сохранение значения смещённого порядка в регистре B;

Переход на 4053h, если CY=0 (знак числа - плюс);

Запись в аккумулятор 1h (минус числа);

Сохранение минуса числа в ячейку 6000h;

Восстановление  значения смещённого порядка числа;

Вычитание из аккумулятора порядка смещения (80h);

Переход на 4060h, если CY=0 (знак порядка - плюс);

Запись в аккумулятор1h (минус порядка);

Сохранение 1h в ячейке 6001 (сохранение знака числа «-»);

Запись в аккумулятор  порядка смещения (80h);

Вычитание значения смещённого порядка, хранящегося в B;

Сохранение порядка  числа в ячейке 6002;

Получение адреса 3-го байта (5002h);

Копирование 3-го байта в аккумулятор;

Сравнение 3-го байта  с 80h (проверка старшего бита на единицу);

Переход на 406Ch, если результат больше нуля (единицу восстанавливать не надо);

Добавление 80h (восстановление старшей единицы мантиссы);

Сохранение 3-го байта числа с восстановленной  единицей;

Получение адреса 2-го байта числа (5001h);

Копирование 2-го байта в аккумулятор;

Сохранение 2-го байта числа в ячейке 6004h;

Получение адреса 1-го байта числа (5000h);

Копирование 1-го байта числа в аккумулятор;

Сохранение 1-го байта числа в ячейке 6003h;

Перевод курсора  на новую строку ВТА;

Вывод строки результата преобразования; 

Получение адреса знака числа;

Вывод знака  числа на дисплей; 

Получение адреса знака порядка числа;

Вывод знака  числа на дисплей; 

Получение адреса порядка числа;

Вывод порядка  числа на дисплей; 

Получение адреса 3-го байта мантиссы;

Вывод 3-го байта  мантиссы на дисплей; 

Получение адреса 2-го байта мантиссы;

Вывод 2-го байта  мантиссы на дисплей; 

Получение адреса 1-го байта мантиссы;

Вывод 1-го байта  мантиссы на дисплей; 

Перевод курсора  на новую строку ВТА;

Вывод строки подтверждения  повтора программы; 

Ожидание нажатия клавиши;

Сравнение нажатой  клавиши с “Y”;

Переход на 400Ch если нажата клавиша “Y” (повтор программы);

Выход в монитор, ожидание команды;

 

Контрольный пример.

    Для проверки правильности работы программы  приведём контрольный пример.

    В диалоге ввода числа наберём  константу 79A35E71. Представим это шестнадцатеричное число в двоичном виде:

    Содержимое  памяти:  01111001b 10100011b 01011110b 01110001b

    Ячейка  памяти:                   5000h         5001h       5002h        5003h

    Так как число хранится в обратном порядке, то бит, отвечающий за знак числа  – старший бит в ячейке 5003h. Это «0», следовательно, знак числа – «+».

    Следующие семь бит и старший бит в ячейке 5002h составляют значение смещённого порядка. В данном случае это 11100010b. При вычитании из этого значения порядка смещения мы получим: = 01100010b=62h. Знак порядка числа – «+».

      В ячейке 5002h хранится первый байт мантиссы числа. Так как его старший бит не содержит старшей единицы, необходимо восстановить её. При этом мы получим значение 11011110b=DEh.

    Два оставшихся байта должны быть скопированы  без изменения. 

    В результате выполнения программы получим следующий результат:

    Содержимое  памяти:       00h      00h      62h     79h     A3h     DEh

    Ячейка  памяти:           6000h  6001h  6002h 6003h  6004h  6005h 

    Чего  и следовало ожидать. Следовательно, программа работает верно. 

Использованные  средства вычислительной техники.

    При разработке программы был использован  персональный компьютер со следующими техническими характеристиками. 

    Процессор: Intel Pentium IV, 1.5 GHz.

    Оперативная память: 256 MB.

    Жёсткий диск: 40GB.

    Видеокарта: 1024x768, 32-Bit Color, Radeon 7500/7500LE.

    Операционная  система: Windows Millennium Edition. 

Выводы  по работе.

    В результате разработки создана программа, позволяющая наиболее быстро решить поставленную задачу. Данный алгоритм преобразования числа с плавающей точкой, по моему мнению, является самым быстрым в работе, несмотря на то, что дополнительно используется регистр B. Единственным недостатком программы можно считать большой размер текстовых констант, использованных в программе. Однако использование диалога значительно упрощает работу с программой, она становится понятной на интуитивном уровне, а анализ результата на ошибки происходит гораздо быстрее. 

Представление чисел с плавающей точкой