- •Основні поняття Асемблера, принципи написання програм на Асемблері, їхні переваги та недоліки.
- •4. Команди цілочисельної арифметики Intel-сумісного мп. Арифметичні команди
- •Типи даних блоків cpu I fpu Intel-сумісного мп.
- •Вказівник
- •Команди умовних переходів, регістр прапорців та команди циклів.
- •Обробка даних в арифметиці з плаваючою комою (робота копроцесора fpu)
- •Заповнити таблицю за результатами роботи програми DemoFpu.
- •9. Основні технології програмування.
- •10.Сутність технології ооп, її переваги та недоліки. Ідеї ооп.
- •Принципи побудови об’єктної моделі.
- •Показники якості програмного забезпечення – внутрішні і зовнішні.
- •13. Сучасні об’єктно-орієнтовані мови програмування та їхні короткі характеристики.
- •14. Поняття класу. Відмінності класу від об’єкту. Секції класу.
- •15. Що таку інкапсулювання?
- •Синтаксис оголошення класу в Delphi.
- •17. Напишіть приклад опису простого класу в Delphi.
- •18. Методи класів Delphi та їхні модифікатори.
- •19*. Структура проекту в Delphi та його складові частини. Методика створення проекту.
- •19. Структура проекту в Delphi та його складові частини. Методика створення проекту.
- •20. Конструктори та деструктори. Їхнє призначення та правила використання.
- •21. Наведіть приклади використання конструкторів.
- •22. Поясніть призначення кожного із специфікаторів рівня доступу у Delphi.
- •23. Властивості, їхнє призначення, правила використання та синтаксис оголошення.
- •24. Успадкування. Його призначення, види та правила використання.
- •25.Метод класу, їхнє призначення та правила використання.
- •26.Віртуальні та динамічні методи, їхнє призначення та використання
- •27.Абстрактні методи.
- •28.Що таке поліморфізм. Види поліморфізму.
- •29.Ієрархія стандартних класів Delphi
- •30.Напишіть програму Sphere!
- •31. Повідомлення в Delphi.
- •33. Розкладення періодичних функцій в ряд Фур’є (теорія)
- •34. Опишіть методику програмування та складові частини проекту “Ряд Фур’є”
- •35.Виключні ситуації та їхня обробка в Delphi.
- •Опишіть етапи створення та тестування власних компонент у Delphi.
- •Gdi та принципи побудови графічних зображень у Delphi.
- •OpenGl – призначення, основні поняття та правила використання.
- •Поясніть принципи динамічного створення елементів інтерфейсу Delphi.
- •Динамічні масиви, синтаксис оголошення та правила використання.
Обробка даних в арифметиці з плаваючою комою (робота копроцесора fpu)
Для обробки дійсних чисел існує FPU(Floating Point Unit). Він має свої команди(починаються буквою F), регістри, принципи.
Математичний копроцесор (FPU) обробляє три формати чисел з плаваючою комою:ординарної, подвійної та розширеної точності. Ці числа називають відповідно:
коротким дійсним(7 знаків після коми)
подвійним дійсним(15 знаків після коми)
розширеним дійсним(19 знаків після коми)
Кожне число цих форматів містить три поля: знак числа, порядок і мантиса. В оперативній пам’яті, залежно від формату, ці числа займають відповідно 4, 8, 16 байт. Байт із найменшою адресою є наймолодшим байтом мантиси, наступними є більш значущі байти мантиси,за ними розташовані байти порядку від наймолодшого до найстаршого. Останній байт числа містить 7 біт порядку та однобітне поле числа. Нуль у знаковому біті означає, що число додатне, 1 – від’ємне.
|
порядок |
мантиса |
31 22 0
Поле порядку визначає степінь числа 2, на яку потрібно помножити мантису, щоб отримати зазначене число з плаваючою комою. Щоб опрацювати число з від’ємними порядками у полі порядку постійно знаходиться не справжній порядок числа, а сума цього порядку і деякої додатної константи – так званого зміщення.
Для ординарної точності 127, для подвійної 1023, для розширеної 16 383.
Копроцесор містить 13 власних регістрів:
8 80-розрядних регістрів FPU зі стековою формою організації;
5 службових регістрів
Регістри FPUоб’єднані у стек, вершину якого називають ST або ST(0). Нижні елементи відповідно ST(1),…,ST(7). Під час запису чисел в регістри вершина стека може рухатись вниз або вгору.
Для використання команд копроцесора, потрібно його ініціювати командою FINIT. Приклади команд FPU:
FLDзавантажує нуль в вершину стеку
FILD завантажує ціле число у вершину стеку
FSIN обчислює в радіанах синус кута
FADD додає два числа
FMUL перемножує два числа
Заповнити таблицю за результатами роботи програми DemoFpu.
Дану цікаву задачу таблицями не опишу, бо це нічого не дасть(їх було б 4*13+5). Тому коментую команди у цій прозі а далі «хто во што гаразд»
Початок сегменту даних, N к-сть витків циклу, х,у масиви, в одному проходженні циклу реально використовується пара відповідних х та у
x DD 1., 2., 3., 4.
Y DD 2., 4., 6., 8.
N DW 4
CODESEG
START: mov ax, @data ;
mov ds,ax ; datasegment
mov cx,[N]
FINIT
FLDZзаписується нуль в вершину стеку ST(0)=ST
FLDZST(0)ST(1),ST(0) записується 0
FLDZST(1)ST(2),ST(0)ST(1),ST(0) записується 0
FLDZST(2)ST(3),ST(1)ST(2),ST(0)ST(1),ST(0) записується 0
FLDZST(3)ST(4),ST(2)ST(3),ST(1)ST(2),ST(0)ST(1),ST(0) записується 0
Далі іде настроювання,яке нічого не міняє в стеку
XOR SI,SI
lea AX,[X]
MOV BX,DS
ADD AX,BX
MOV ES,AX
Цикл
NACH: FLD [DWORD PTR ES:SI]-в вершину стеку заноситься х(при першому проходженні це 1 при другому 2[x DD 1., 2., 3., 4.])
FADD ST(5),ST–ST(0)*ST(5) і запис. в ST(5)
FLD ST(0)в вершину стеку заноситься х
FMUL ST,ST(0)–добуток вершини стеку саму на себе
FADDP ST(4),ST – додати їх,результат в ST(4),штовхнути вверх(ST(4)ST(3) і т.д.)
FLD [DWORD PTR DS:SI+010h]в вершину стеку заноситься у (при першому проходженні це 2 при другому 4[у DD 2., 4., 6., 8.])
FADD ST(5),ST --ST(0)*ST(5) і запис. в ST(5)
FLD ST(0)в вершину стеку заноситься у
FMUL ST,ST(0)добуток вершини стеку саму на себе
FADDP ST(4),STдодати їх,результат в ST(4),штовхнути вверх(ST(4)ST(3) і т.д.)
FMULсудяподебагеру буде так:ST(1)*ST(0) і штовхнути вверх
FADDсудяподебагеру буде так:ST(1)+ST(0) і штовхнути вверх
ADD SI,4—забезпечує перехід до наст. пари х,у
LOOP NACH–крутити цикл
FSTP [CXY]---виштовхує вершину в змінну CXY
FSTP [ SY]---виштовхує вершину в змінну SY
FSTP [ SX]---виштовхує вершину в змінну SX
FSTP [ MY]---виштовхує вершину в змінну MY
FSTP [ MX]---виштовхує вершину в змінну MX
