Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Программа расчета функции синуса с использованием стандартной функции умножения.



1. - 2. - 3. - 4. - 5. - 6. - 7. - 8. - 9. - 10. - 11. - 12. - 13. - 14. - 15. - 16. - 17. - 18. - 19. - 20. - 21. - 22. - 23. - 24. - 25. - 26. - 27. - 28. - 29. - 30. - 31. - 32. - 33. - 34. - 35. - 36. - 37. - 38. - 39. - 40. - 41. - 42. - 43. - 44. - 45. - 46. - 47. - 48. - 49. - 50. - 51. - 52. - 53. - Input x Begin In r1,x IfbZero r1 Call above_zero Call below_zero Above_zero Mov r3,a0 Mov r4,r1 Mul r4,a1 Add r3,r4 Mov r2,r1 Mul r2,r2 Mul r4,a2 Add r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a3 Sub r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a4 Add r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a5 Add r3,r4 Call OutPut below_zero Mov r3,a0 Mov r4,r1 Mul r4,a1 Add r3,r4 Mov r2,r1 Mul r2,r2 Mul r4,a2 Sub r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a3 Sub r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a4 Sub r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a5 Add r3,r4 Call OutPut Output           Out [a],r3     End  

 

 

 

 

Программа расчета функции синуса без использования стандартной функции умножения.

1. - 2. - 3. - 4. - 5. - 6. - 7. - 8. - 9. - 10. - 11. - 12. - 13. - 14. - 15. - 16. - 17. - 18. - 19. - 20. - 21. - 22. - 23. - 24. - 25. - 26. - 27. - 28. - 29. - 30. - 31. - 32. - 33. - 34. - 35. - 36. - 37. - 38. - 39. - 40. - 41. - 42. - 43. - 44. - 45. - 46. - 47. - 48. - 49. - 50. - 51. - 52. - 53. - 54. - 55. - 56. - 57. - 58. - 59. - 60. - 61. - 62. - 63. - 64. - 65. - 66. - 67. - 68. - 69. - 70. - 71. - 72. - 73. - 74. - 75. - 76. - 77. - 78. - 79. - 80. - 81. - 82. - 83. - 84. - 85. - 86. - 87. - 88. - 89. -   Input x Begin In r1,x IfbZero r1 Call above_zero Call below_zero Above_zero Mov r3,a0 Mov r4,r1 Mov x,r4 Mov y,a1 Call Mult Add r3,r4 Mov r2,r1 Mov x,r2 Mov y,a2 Call Mult Mov x,r4 Mov y,a2 Call Mult Add r3,r4 Mov x,r2 Mov y,a1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a3 Call Mult Sub r3,r4 Mov x,r2 Mov y,r1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a4 Call Mult Add r3,r4 Mov x,r2 Mov y,r1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a5 Call Mult Add r3,r4 Call OutPut below_zero Mov r3,a0 Mov r4,r1 Mov x,r4 Mov y,a1 Call Mult Add r3,r4 Mov r2,r1 Mov x,r2 Mov y,a2 Call Mult Mov x,r4 Mov y,a2 Call Mult Sub r3,r4 Mov x,r2 Mov y,a1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a3 Call Mult Sub r3,r4 Mov x,r2 Mov y,r1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a4 Call Mult Sub r3,r4 Mov x,r2 Mov y,r1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a5 Call Mult Add r3,r4 Call OutPut Output Out [a],r3 End  

Подпрограмма умножения Mult:

1.  Mult

2. Skp y, 0

3. Add Res, x

4. Shr Res, 1

5. Skp y, 1

6. Add Res, x

7. Shr Res, 1

8. Skp y, 2

9. Add Res, x

10. Shr Res, 1

11. Skp y, 3

12. Add Res, x

13. Shr Res, 1

14. Skp y, 4

15. Add Res, x

16. Shr Res, 1

17. Skp y, 5

18. Add Res, x

19. Shr Res, 1

20. Skp y, 6

21. Add Res, x

22. Shr Res, 1

23. Skp y, 7

24. Add Res, x

25. Shr Res, 1

26. Skp y, 8

27. Add Res, x

28. Shr Res, 1

29. Skp y, 9

30. Add Res, x

31. Shr Res, 1

32. Skp y, 10

33. Add Res, x

34. Shr Res, 1

35. Skp y, 11

36. Add Res, x

37. Shr Res, 1

38. Skp y, 12

39. Add Res, x

40. Shr Res, 1

41. Copy r3, Res[30]

42. Return

 



Оценка времени выполнения программ

 Программы отличаются только участками кода, где используются операции умножения. Для оценки будем использовать количество тактов, за которое выполняется участок программы. Будем считать, что каждая команда выполняется за 1 такт. Тогда машина с инструкцией умножения будет проводить вычисления максимум за 30 тактов, а машина с заменой инструкции умножения сдвигами и сложением – за 468 тактов. Таким образом, машина с инструкцией умножения работает примерно в 15 раз быстрее.



Заключение

Для выполнения поставленной задачи был разработан алгоритм вычисления функции sin ( x ) на основе формул двойного угла и приведения. Алгоритм представлен в двух вариантах реализации: в машине реализована функция умножения; функция умножения заменена сложением со сдвигом.

Разработана архитектура цифровой вычислительной машины с фиксированной запятой.

- выбрана разрядность машины n = 13;

- разработана система команд;

- выбрано количество регистров, необходимое для выполнения вычислений (для варианта с инструкцией умножения 4 регистров, для варианта с заменой инструкции умножения 7 регистров).

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

Оценено время работы обеих машин. Машина, в которой реализована операция умножения, проводит вычисления за 30 тактов, а машина с заменой операции умножения сложением со сдвигом за 468 тактов, что примерно в 15 раз медленнее. Если время выполнения программы ограничено, то необходимо использовать машину, в которой реализована операция умножения.


 

Литература

1. Д. Мак-Кракен, У. Дорн, «Численные методы и программирование на Фортране», изд. «Мир», М., 1977г.

2. А. И. Канащенков, В.И. Меркулов, «Радиолокационные системы многофункциональных самолетов» в 3-х томах, том 3 «Вычислительные системы РЛС многофункциональных самолетов», изд. «Радиотехника», М., 2007г.

 


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 140; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.01 с.)
Главная | Случайная страница | Обратная связь