- •1. Що таке Асемблер?
- •9.Які ресурси середовища Intel64 для виконання програм
- •10. Режимы работы процессоров ia-32 (Режими роботи процесорів архітектури x86)
- •1 Реальный режим
- •2 Режим системного управления
- •3 Защищенный режим
- •11) Який адресний простір архітектури ia-32 і чим він визначається?
- •12 Який адресний простір архітектури Intel64 і чим він визначається?
- •14.Способи переведення у іншу систему числення. Приклади
- •13. Позиційні системи числення. Поняття та основні формули
- •15. Способи представлення від'ємних чисел
- •16. Додатковий код. Приклади
- •17. Зміщений код. Приклади
- •18 Формати з плаваючою точкою. Стандарти
- •19 Стандартний двійковий 32-бітовий формат з плаваючою точкою
- •20 Тандартний двійковий 64-бітовий формат з плаваючою точкою
- •21.Стандартний двійковий 80-бітовий формат з плаваючою точкою
- •22. Порівняння основних стандартних двійкових форматів з плаваючою точкою
- •23. Фізична память. Як узнати розрядність адрес?
- •24. Моделі пам'яті у процесорах архітектури x86
- •25. Сегментована пам'ять
- •26. Flat - модель пам'яті
- •27. Сторінкова пам'ять
- •28. Регістри процесора архітектури ia-32
- •29. Регістри процесора архітектури Intel64
- •30. Регістри загального призначення.
- •31. Сегментні регістри
- •8 Прапорів полягання
- •1 Прапор управління
- •5 Системних прапорів
- •35 Операнди команд та способи адресації операндів
- •36 Безпосередні операнди команд
- •37 Регістрові операнди команд
- •38 Способи вказування комірок пам'яті у якості операндів команд
- •39. Що таке опосередкована адресація стосовно вказування операнду команди?
- •40. Що таке база, індекс, зміщення, масштаб у операнді команди?
- •41Полное определение
- •44. Структура вихідного тексту програми на Асемблері
- •45.Директиви Асемблера. Найпопулярніші на вашу думку директиви
- •46.Директиви вказування типу процесора та моделі пам'яті
- •47. Директиви створення даних
- •48. Директива invoke. Приклади
- •49. Директива align. Приклади
- •50. Базові типи даних архітектури процесорів x86
- •51. Числові типи даних
- •52.Упаковані simd типи даних
- •Використання
- •53. Основні групи команд процесорів архітектури x86
- •54. Команди копіювання даних
- •Xchg Обмін данімі між операндами
- •55. Команди додавання цілих чисел
- •56. Команди віднімання цілих чисел
- •57. Команди множення цілих чисел
- •58. Команди ділення цілих чисел
- •59. Побітові логічні команди
- •60. Програмування читання та запису окремих бітів
- •61. Команди зсувів
- •62. Команди циклічного зсуву
- •63 Команды перехода
- •64 Реализация if-then-else
- •65, 66 Програмування циклів на асемблері?
- •67 Цикл з постумовою (рис. 2)
- •68. Програмування циклу зі збереженням біту переносу cf
- •69. Програмування циклу на основі команд loop
- •70. Програмування вкладених циклів
- •71. Команди обробки рядків даних
- •72. Команди stos, stoSx
- •73. Команди movs,movsx.
- •74. Префікс повторення rep та його різновиди.
- •75.Що таке структурованість та модульність програм. Наведіть приклади.
- •76. Макроси. Приклади програмування
- •77. Процедури. Визначення, виклик. Приклади програмування
- •78. Способи передавання значень параметрів процедурам
- •79. Локальні дані процедур
- •80. Пролог та епілог процедури
- •81. Стековий кадр процедури
- •82. Написання модульних програм на Асемблері
- •83. Можливості використання мов високого рівня сумісно з Асемблером
- •84. Конвенції виклику процедур
- •85. Конвенція cdecl. Приклад програмування.
- •86. Конвенція stdcall. Приклад програмування.
- •87. Асемблерні вставки у мовах високого рівня.
- •88. Середовище x87 fpu
- •89. Команди x87 fpu. Приклад програми.
- •90. Стек даних x87 fpu. Приклад програми.
- •91. Команди simd
- •92. Розширення mmx
- •93. Розширення sse
- •94. Типи даних sse
- •95. Векторны команди sse
- •96 Горизонтальне додавання
- •97. Команди movups та movaps. Приклад використання
- •98. Векторні команди множення sse. Приклад використання
- •99. Векторні команди додавання sse. Приклад використання
- •100. Команда shufps та її застосування
- •101. Розширення avx
- •102. Типи даних avx
- •103. Команды avx
- •104. Особенности команд avx по отношению к sse
- •105. Эволюция simd-расширений системы команд процессоров архитектуры х86
86. Конвенція stdcall. Приклад програмування.
stdcall - є стандартним типом виклику для Microsoft Win32 API і Open Watcom C++. Викликана підпрограма залишається відповідальною за очищення стека, але параметри поміщаються в стек у зворотному (справа-наліво, як і в cdecl). Регістри EAX, ECX, EDX призначені для використання в межах функції. Значення, що повертається, зберігається в регістрі ЕАХ.
Приклад. Програма виводить повідомлення в невеликому windows-вікні.
.386
.model flat, stdcall
option casemap:none
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\windows.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
Caption db "Лаб1", 0
Text db "Здоровенькі були", 0
.code
start:
invoke MessageBoxA, 0, ADDR Text, ADDR Caption, MB_ICONINFORMATION
invoke ExitProcess, 0
end start
Джерело:
http://uk.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B3%D0%BE%D0%B4%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F_%D0%B2%D0%B8%D0%BA%D0%BB%D0%B8%D0%BA%D1%96%D0%B2
87. Асемблерні вставки у мовах високого рівня.
Фундаментальною перевагою асемблера перед мовами високого рівня є швидкість. Більшість програм, які працюють у режимі реального часу, або написані на мовою асемблер, або використовують у критичних ділянках програмного коду асемблерні модулі. Асемблер, вбудований у мови високого рівня, використовують для досягнення високої продуктивності роботи програм.
Зручність, вигідність та легкість використовування вбудованого асемблера важко переоцінити, оскільки він не потребує окремого компілювання, компунуванян блоків асемблерного коду. Це є надто важливо для швидкого розробляння та налогоджування програм.
Схематично блок команд на асемблері для програми розробленій на C++ виглядає так:
asm
{ асемблерні команди
}
88. Середовище x87 fpu
Джерело: http://frogs.digdes.ru/netcat_files/1162_49.pdf
89. Команди x87 fpu. Приклад програми.
Команды пересылки данных
Некоторые управляющие команды
Сложение и вычитание
А
рифметические
команды
Приклад обчислення суми двох пар добутків Res = A×B + C×D
90. Стек даних x87 fpu. Приклад програми.
91. Команди simd
Расширения потоковой обработки (Streaming SIMD Extensions) были введены в архитектуру процессоров Intel, начиная с процессора Pentium III. Эти расширения предназначены для использования в программах обработки мультимедийной информации наряду с более ранними мультимедиа-расширениями MMX.
Набор команд SIMD первоначально включает около 70 команд, которые могут оперировать данными как в MMX-регистрах, так и в новых SIMD-регистрах процессора. Специальные форматы данных введены для обеспечения обработки информации, представленной в форме вещественных значений (это необходимо, например, при 3D-моделировании).
При разработке SIMD-команд фирма Intel учла все нововведения, появившиеся в наборе команд 3DNow! компании AMD и практически включила этот набор команд в свое SIMD-расширение.
ADDPS cложить упакованные короткие вещественные значения
ADDSS Сложить одиночные короткие вещественные значения
ANDNPS Логическое НЕ-И над 128-битными операндами
ANDPS Логическое И над 128-битными операндами
CMPPS Сравнить упакованные короткие вещественные значения
CMPSS Сравнить одиночные короткие вещественные значения
COMISS Сравнить упорядоченно одиночные короткие вещественные значения и установить EFLAGS по результатам сравнения
CVTPI2PS Преобразовать упакованные знаковые целые двойные слова в упакованные короткие вещественные значения
CVTPS2PI Преобразовать упакованные короткие вещественные значения в упакованные знаковые целые двойные слова
CVTSI2SS Преобразовать одиночное знаковое двойное целое слово в одиночное короткое вещественное значение
CVTSS2SI Преобразовать одиночное короткое вещественное значение в одиночное знаковое целое двойное слово
CVTTPS2PI Преобразовать упакованные короткие вещественные значения в упакованные знаковые целые двойные слова без точного округления
CVTTSS2SI Преобразовать одиночное короткое вещественное значение в одиночное знаковое целое двойное слово без точного округления
DIVPS Делить упакованные короткие вещественные значения
DIVSS Делить одиночные короткие вещественные значения
LDMXCSR Загрузить регистр управления/статуса SIMD
MASKMOVQ Переслать 64-битные данные из MMX-регистра с маскированием
MAXPS Найти наибольшее для упакованных вещественных значений
MAXSS Найти наибольшее для одиночных вещественных значений
MINPS Найти наименьшее для упакованных вещественных значений
MINSS Найти наименьшее для одиночных коротких вещественных значений
MOVAPS Переслать выровненные упакованные короткие вещественные значения
MOVHLPS Переслать два старших упакованных коротких вещественных значения в младшие
MOVHPS Переслать два старших упакованных коротких вещественных значения в/из памяти
MOVLHPS Пересылать два младших упакованных коротких вещественных значения в старшие
MOVLPS Переслать два младших упакованных коротких вещественных значения в/из памяти
MOVMSKPS Переслать маску состояния упакованных коротких вещественных значений в целочисленный регистр
MOVNTPS Переслать выровненные упакованные короткие вещественные значения без использования КЭШ
MOVNTQ Переслать 64-битные данные из MMX-регистра в память без использования КЭШ
MOVSS Переслать одиночное короткое вещественное значение
MOVUPS Переслать невыровненные упакованные короткие вещественные значения
MULPS Перемножить упакованные короткие вещественные значения
MULSS Перемножить одиночные короткие вещественные значения
ORPS Логическое ИЛИ над 128-битными операндами
PAVGB Усреднить беззнаковые упакованные байты
PAVGW Усреднить беззнаковые упакованные слова
PEXTRW Развернуть слово
PINSRW Вставить слово
PMAXSW Найти наибольшее для упакованных знаковых целых слов
PMAXUB Найти наибольшее для упакованных беззнаковых целых байтов
PMINSW Найти наименьшее для упакованных знаковых целых слов
PMINUB Найти наименьшее для упакованных беззнаковых целых байтов
PMOVMSKB Переслать маску состояния упакованных байтов в целочисленный регистр
PMULHUW Перемножить упакованные беззнаковые слова
PREFETCH Упреждающая выборка данных
PSADBW Вычислить абсолютное отклонение упакованных беззнаковых байтов
PSHUFW Перестановка упакованных слов
RCPPS Найти обратные величины для упакованных коротких вещественных значений
RCPSS Найти обратную величину для одиночного короткого вещественного значения
RSQRTPS Найти обратные величины квадратных корней упакованных коротких вещественных значений
RSQRTSS Найти обратную величину квадратного корня одиночного короткого вещественнго значения
SFENCE Защита операций записи
SHUFPS Перестановка коротких вещественных значений
SQRTPS Найти квадратные корни от упакованных коротких вещественных значений
SQRTSS Найти квадратный корень от одиночного короткого вещественного значений
STMXCSR Сохранить регистр управления/статуса SIMD
SUBPS Вычитание упакованных коротких вещественных значений
SUBSS Вычитание одиночных коротких вещественных значений
UCOMISS Сравнить неупорядоченно одиночные короткие вещественные значения и установить EFLAGS по результатам сравнения
UNPCKHPS Распаковать старшие упакованные короткие вещественные значения
UNPCKLPS Распаковать младшие упакованные короткие вещественные значения
XORPS Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ над 128-битными операндами
