Хелпикс

Главная

Контакты

Случайная статья





Часть 2. Вычисления с плавающей точкой.



Часть 2. Вычисления с плавающей точкой.

Вычислить значение выражения a+b/c

I. Значения -19,10,-26 будут храниться в 16-ричной системе. Для решения задачи необходим ввод значений с плавающей точкой, которые будут записаны в формате IEEE754. Для записи отрицательных чисел используется дополнительный код. Запишем в таком формате число -19. Первый бит обозначает знак числа, так как число -19 – отрицательное, то первый бит равен 1. Переведём -19 в двоичную систему счисления:

-1910=-100112 Нормализованный вид: -1.00112*24. Следовательно экспонента=4, а мантисса -1.0011. Биты со 2 по 9 отведены под экспоненту. Экспонента равна 4+127=13110= 100000112. Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1. Мантисса = 00110000000000000000000. Таким образом, после преобразования по стандарту IEEE754 число -19 будет иметь вид – 110000011001100000000000000000002.  Переведём в hex = 0xC1980000.

 II. Аналогично проделаем данные действия с числами 10, -26.

Получим: 10=0x41200000, -26=0xC1D00000

III. Входные значения хранятся в переменных a, b, c, результат в a.

IV. Выполнение программы осуществляется по формуле a/(b+c). Переведём это выражение в постфиксную нотацию – bc+a/ (для понимания алгоритма работы с сопроцессором).

V. Текст программы.

1) fld dword [a]; берём переменные из стека

2) fld dword [b]

3) fld dword [c]

4) fadd; cумма b и c

5) fst dword [b]; полученное значение записывается в b

6) fdiv; деление a на b

7) fst dword [a]; записываем результат деления в a

8) ret

9) section .data

10)  a dd 0xC1980000

11)  b dd 0x41200000

12)  c dd 0xC1D00000

13)  ret

I. Результаты работы программы на наборах входных данных.

 II. Трассировочная таблица

№ строки a b c
1-4 -19 -26
-19 -16 -26
1,1875 -16 -26

Результат 1,1875 – совпадает с вычислениями вручную.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.