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

Трансцендентні функції

FCOS

Обчислення косинуса. ST (0) = COS (ST (0)). Вміст в ST (0) інтерпретується як кут в радіанах. (Тільки починаючи з 80 486 процесора)

FPTAN

Частковий тангенс. Вміст в ST (0) інтерпретується як кут в радіанах. Розміщує в стеку такі два числа x і y, що y / x = tg (ST (0)). Після виконання команди число y розташовується в ST (0), а число x записуєтьсяв стек зверху (тобто записується в ST (1)).

FPATAN

Обчислення часткового арктангенса. ST (0) = arctg (ST (0) / ST (1)).

FSIN

Обчислення синуса. ST (0) = SIN (ST (0)). Вміст в ST (0) інтерпретується як кут в радіанах. (Тільки починаючи з 80 486 процесора)

FSINCOS

бчислення синуса і косинуса. ST (0) = SIN (ST (0)) і ST (1) = COS (ST (0))

(Тільки починаючи з 80 486 процесора)

F2XM1

Обчислення. ST (0) = 2 ^ ST (0) -1. Параметр повинен знаходиться в таких межах: -1 <= x <= 1

FYL2X

Обчислення Y * LOG2 (X). ST (1) = Y, ST (0) = X. Відбувається виштовхування обох операндів з стека, і потім в вершину стека поміщається результат обчислення.

FYL2XP1

Обчислення Y * LOG2 (X +1). ST (1) = Y, ST (0) = X. Відбувається виштовхування обох операндів з стека, і потім в вершину стека поміщається результат обчислення.

На операнд x накладається обмеження: 0 <x <1 - 1/sqrt (2)

Команди управління співпроцесором

FINIT

Ініціалізація співпроцесора.

FSTSW АХ

Запис слова стану в АХ. Далі вміст регістра AH можна переписати в регістр прапорів центрального процесора за допомогою команди SAHF. Біти кодів умов співпроцесора відображаються (проектуються) на регістр прапорів центрального процесора таким чином, щоб без додаткових дій, використовувати команди умовних переходів.

FSTSW dest

Запис слова стану в dest.

FLDCW src

Завантаження керуючого слова (16 біт) з dest.

FSTCW dest

Збереження керуючого слова в dest.

FCLEX

Скидання винятків. Також скидаються біти ES і B

FSTENV dest

Збереження стану устаткування (SR, CR, TAGW, FIP, FDP) в пам'яті.

FLDENV src

Завантаження стану обладнання з пам'яті.

FSAVE dest

Збереження стану обладнання і файлу регістрів в пам'яті.

FRSTOR src

Завантаження стану обладнання і файлу регістрів з пам'яті.

FINCSTP

Інкремент покажчика стека.

FDECSTP

Декремент покажчика стека.

FFREE ST(i)

Звільнення регістру - позначка ST (i) як вільного.

FNOP

Холоста операція співпроцесора.

WAIT (FWAIT)

Очікування процесором завершення поточної операції співпроцесором.

Реалізація функцій через команди співпроцесора

2^x

Співпроцесор має команду f2xm1, яка обчислює для x зпроміжку

[-1; 1]. Такожєкоманда fscale,якаобчислюєдляцілихx.Якщовиділити цілутадробовучастинуx, тозадопомогоюцихкомандможливорозраховувати2^xдля будь якихдіснихx.

e^x

Ми вміємо обчислювати.Звідси.Тоді:

Таким чином:,тобтомизвелизадачудопопередньої.

ln(x)

lg(x)

arcsin(x)

arccos(x)

sin(x)

cos(x)

sh(x)

ch(x)

Виклик стандартних функцій мови С

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

Це виконується з використанням стандартної вхідної точки бібліотеки __ astart (увага, два підкреслення - не помилка). Модуль __ astart виконає установку оточення, включаючи завантаження сегментних регістрів, покажчика стека, емулятора співпроцесора з плаваючою точкою, а також звернення до функції з ім'ям _main і повернення в MS-DOS після виходу з функції _main.

Сегменти для моделей пам'яті Small, використовуваної в даній роботі

Ім’я сегменту

Вирывнювання

Комбінування

Клас

Група

Вміст сегмента

_TEXT

WORD

PUBLIC

CODE

виконувані коди

_DATA

WORD

PUBLIC

DATA

DGROUP

Ініціалізовані дані

CONST

WORD

PUBLIC

CONST

константи

_BSS

WORD

PUBLIC

BSS

неініціалізовані дані

STACK

PARA

STACK

STACK

область стека

Модуль мовою Асемблера, що з'єднуються з середовищем і бібліотечними підпрограмами мови C, повинен мати наступну структуру:

EXTRN __astart:near ; В начале программы

DGROUP GROUP _DATA,STACK

ASSUME CS:_TEXT,DS:DGROUP

_DATA SEGMENT PUBLIC 'DATA'

. . .

_DATA ENDS

_TEXT SEGMENT PUBLIC 'CODE'

; ***********************************************************

; Головна програма, що задається в асемблерному модулі, повинна

; Бути визначена в процедурі main

start: jmp __astart ; В кодовомусегменті

_main proc near

. . .

_main endp

; ***********************************************************

; Далі включаються процедури користувача на асемблері

. . .

_TEXT ENDS

STACK SEGMENT STACK 'STACK'

. . .

STACK ENDS

END start ; кінець програми

Соседние файлы в папке SP_ukr