Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Faz_Kursach_Inna.docx
Скачиваний:
19
Добавлен:
18.09.2019
Размер:
805.52 Кб
Скачать

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

  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 раз быстрее.

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