- •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
54. Команди копіювання даних
MOV
Ця команда використовується для копіювання значення з одного місця в інше. Це 'місце' може бути регістр, комірка пам'яті або безпосереднє значення (тільки як вихідне значення). Синтаксис команди: mov приймач, джерело. Можна копіювати значення з одного регістра в інший. Розмір джерела і приймача повинні бути однаковими.
ДЖЕРЕЛО http://www.unicyb.kiev.ua/~boiko/ass/3.htm
Xchg Обмін данімі між операндами
Команда xchg пересилає значення першого операнда в другій, а іншого - в перший. Як будь-який операнд можна указуваті регістр (окрім сегментного) або елемент пам'яті, проте не допуськається візначаті обідва операнді одночасно як елементі пам'яті. Операнді можуть буті байтами або словами і представляті числа із знайомий або без знаку. Команда не впліває на прапорі процесора.
Приклад
mov Ax,off01h
mov Si,1000h
xchg Ax,si ;AX=01000h, Si=ff01h
ДЖЕРЕЛО http://www.znannya.org/?view=asm-teams30
55. Команди додавання цілих чисел
Нехай потрібно додати 128-бітові числа. Представимо кожне 128-бітове число
чотирма 32-бітовими групами: Ai та Bі. Спочатку треба додати молодші групи
бітів: A0+B0 . Результат додавання буде 33-бітовим – 32 молодші біти та
перенос. Молодші 32 біти вже є бітами результату, а перенос треба додати при
обчисленні суми наступних груп: A1+B1+перенос. І так далі. Біт переносу
результату додавання старших груп A3+B3 потрібно зберегти, якщо у цьому є
потреба.
При реалізації додавання у програмах на асемблері використовується команда
ADD для додавання молодших груп бітів A0+B0, і команда ADC – для
додавання у вигляді: Ai+Bi+перенос. При виконанні додавання значення
переносу автоматично записується у біт CF регістру EFLAGS.
56. Команди віднімання цілих чисел
Віднімання виконується так само, як і додавання – послідовно від молодших
груп бітів. При відніманні наступних груп бітів потрібно враховувати результат
віднімання попередньої групи.
Позичання виникає при відніманні більшого числа від меншого. Позичання
означає вимогу розповсюдити групу одиниць від старшого до поточного біту.
Цю групу одиниць достатньо закодувати одним бітом, який зветься бітом
позичання (borrow).
При реалізації у програмах на асемблері для віднімання молодших груп бітів
(A0 – B0) використовується команда SUB, а віднімання усіх наступних груп бітів
(Ai – Bi) робиться командою SBB (subtract with borrow). Біт позичання
записується у біт CF регістру EFLAGS.
57. Команди множення цілих чисел
(источник - http://looch-disasm.narod.ru/refe01.htm)
mul op2 – беззнаковое умножение.
imul op2 – знаковое умножение.
Алгоритм умножения
Умноження двух 96-битових операндов A та B.
Результат будет состоять из 192 бітов.
Алгоритм выполнения умножения групами по 32 бита состоит в умножении одного
96-битного операнда (A) на группы 32 битов другого операнда (Bi ).
Алгоритм для данного случая будет выполнен за 3 шага — будет 3 группы по 64 бита.
Потом эти частичные произведения будут прибавлены друг к другу по мере их расположения в разрядной сетке.
Или
A * B = A * B0 + A * B1 + A * B2
