Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPZ_13V_Мое.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
633.86 Кб
Скачать

6 Математичне обчислення

6.1 Мова assembler під Win32

Мова «асемблер» – це низькорівнева мова, тобто мова, що містить методи, які дозволяють безпосередньо звертатись до функцій операційної системи, зокрема збудження переривань та виклик функцій, робота з периферійними пристроями через порти введення/виведення, а також звертання до конкретних комірок системної пам’яті та регістрів процесора.

При програмуванні математичного співпроцесора може бути використано або програмування співпроцесора для роботи з числами з фіксованою комою, або програмування співпроцесора – з числами з плаваючою комою. В даній програмі використовується програмування співпроцесора для роботи з плаваючою комою [8].

Взагалі написання програм під Win32 стало значно простіше і це обумовлено відсутністю startup коду, характерного для додатків і динамічних бібліотек написаних під Windows 3.x; гнучкою системою адресації до пам'яті: можливістю звертатися до пам'яті через будь-який регістр загального призначення; "відсутністю" сегментних регістрів; доступністю великих об'ємів віртуальної пам'яті; розвиненістю сервісу операційної системи, великою кількістю функцій, що полегшують розробку додатків; різноманіттям і доступністю засобів створення інтерфейсу з користувачем (діалоги, меню і т.п.). Сучасний асемблер розвив засоби виклику процедур, можливість введення шаблонів процедур (опис прототипів), об'єктно-орієнтовані розширення, макроозначення що вводяться користувачем.

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

Програмування зі змішенням мов – це процес створення програм, що використовують дві або більш початкових мови. Microsoft Visual 2008 має вбудований асемблер, який викликається за допомогою _asm.

6.2 Реалізація

В даній програмі використовується програмування співпроцесора для роботи з плаваючою комою та фіксованою комою. Співпроцесора для роботи з плаваючою комою має вісім регістрів, які організовані у вигляді стека.

Основні команди, що використовуються при програмуванні з плаваючою комою:

  1. Finit – команда ініціалізації;

  2. Fld src – завантажити регістр;

  1. Fst dst – зберегти значення у регістр;

  1. Fadd dst, src – додати до першого регістра другий;

  1. Fmul dst, src – помножити перший регістр на другий і зберегти результат в першому;

  1. Fdiv dst, src – поділити перший регістр на другий і зберегти результат в першому.

В даній програмі обчислюється значення y відповідно умови x та заданої формули.

Отже, процедура для обчислення буде мати такий вигляд:

Спочатку порівнюємо умовну зміну x:

cmp x,0

je l1

jg l2

jl l3

Далі, відповідно до значення x переходимо на відповідну мітку. Якщо x=0:

Заносимо зміну b в регістр eax:

mov eax,b

Додаємо с до eax:

add eax,c

Результат множення зберігаємо в змінній tmp:

mov tmp,eax

Заносимо зміну tmp до стеку FPU:

fild [tmp]

Заносимо до tmp 2

mov tmp,2

Ділимо вміст стека FPU на 2

fidiv tmp

Заносимо результат в зміну res

fst res

Решта обчислень проводиться за аналогією, повний лістинг asm-коду наведений в Додатку Б.

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