Завдання на лабораторну роботу
При рішенні прикладів і завдань необхідно: а) скласти алгоритм рішення задачі б) напроти відповідних елементів алгоритму записати команди асемблера в) скласти програму (format pe) і відкомпілювати, при необхідності виправити синтаксичні помилки. г) перевірити виконання програми в дебагері OllyDbg, при наявності помилок виправити текст програми і повторити дії по п. г) д) змінити заголовок програми для компіляції модуля (format coff), додати відповідні зміни для одержання працездатного модуля для стикування з програмою на C++ (див. лабораторну роботу №2). е) створити консольний проект на C++, додати отриманий модуль, скомпілювати додаток (див. лабораторну роботу №2). ж) перевірити правильність роботи програми на різних наборах вхідних даних. з) оформити звіт і зробити осмислені висновки по суті розв'язуваної задачі. Індивідуальні завдання 1) виконати приклади 5.1 а 5.2 у FASM та перевірити його роботу у Ollydbg 2) Знайти значення виразу згідно варіанту (варіант обирається за номером списку у журналі групи. Потрібно виконати два приклади: один рахується з початку (тип вихідних даних - байт), інший – з кінця (тип вихідних даних - слово)). 1) (2*с - d + 23) /(а/4 - 1); 2) (с + 4*d - 123)/(1 - а/2); 3) (-2*с + d*82)/(a/4 - 1); 4) (2*с + d - 52)/(а/4 + 1); 5) (с/4 - d*62)/(a*a +1); 6) (-2*с - d + 53)/(а/4 - 1); 7) (2*с - d/4)/(a*a + 1); 8) (2 + с - d*23)/(2*a*a - 1); 9) (2*с - d/3)/(b - а/4); 10) (4*с + d - 1)/(с - а/2); 11) (2*с - d*42)/(c + а - 1); 12) (25/с - d + 2)/(b + а*а-1); 13) (с - d/2 + 33)/(2*а*а-1); 14) (4*с - d/2 + 23)/(а*а - 1); 15) (c*d + 23)/(a/2 -4*d- 1); 16) (c/d + 3*a/2)/(c - а + 1); 17) (2*с + d*51)/(d - а - 1); 18} (2*с + d/4 + 23)/(а*а - 1); 19) (2*с - d/2 + l)/(a*a+7); 20) (2*c/d + 2)/(d - а*а - 1);, 21) (12/с - d*4 +73)/(а*а+1); 22) (2*с/а - d*d)/(d + а - 1);' 23) (-53/а + d -4*a)/(l+a*b); 24) (-15*а + b - a/4)/(b*a -1); 25) (-25/а +c-b*a)/(l+c*b/2); 26) (4*а - 1 + b/2)/(b*c - 5); 27) (8*b+1 - с)/(а/2+ b*c); 28) (4*а - b - l)/(c/b + а); 27) (4*b/c-1)/(12*c+a —b); 30) (b + c*b - a/4)/(a*b - 1);
31) (a+c/b-28)/(4*b*a+l); 32) (c/b - 24 + a)/(2*a*c - 1); 33) (2*b - a + b*c)/(c/4- 1); 34) (41 - d/4 - l)/(c/b + a*d); 35) (a - b*4 - l)/(c/31+a*b); 36) (b/a + 4*c)/(c - b + 1); 37) (21 - a*c/4)/(l+c/a + b); 38) (c - 33 + b/4)/(a*c/b - 1); 39) (2*b - 38*c)/(b+a/c + 1); 40) (c/4 + 28*d)/(a/d - с - 1); 41) (a*b/4 - l)/(41-b*a + c); 42) (1 + 6*a - b/2)/(c + a/d); 43) (a*b + 2*c)/(41-b/c + 1); 44) (4*b - c*a)/(b + c/28 - 1); 45) (2*c + a - 21)/(c/a*b+l); 46) (4/c + 3*a)/(c/a - b - 1); 47) (8*b - 1 - c)/(a*2+ b/c); 48) (4*a/b + l)/(c*b - 18 + a); 49) (4*b/c + l)/(2*c+a*c- b); 50) (b - c/b + a/4)/(a*b - 1); 51) (a - c*b + 28)/(4*b/a+l); 52) (c*b - 24 + a)/(b/2*c - 1); 53) (2*b - a + b/c)/(c/4+ 1); 54) (41*d/4 + l)/(a-c/b + a*d); 55) (a + b/4 - l)/(c/3-a*b); 56) (b*a + c/2)/(4*c - b + 1); 57) (25 + 2*a/c)/(c*a-b - 1); 58) (c + 23 - b*4)/(a*c/b - 1); 59) (b/2-53/c)/(b-a*c + 1); 60) (c*4 + 28/d)/(a*d - с - 1); Критерії оцінювання. На 3 бали: Вміти дати відповіді на питання для самоконтролю та самоперевірки. Виконати завдання 1 На 4 бали: Виконати завдання 2 (один приклад) На 5 балів: Виконати завдання 2 (два приклади) Питання для самоперевірки Особливості виконання досліджуваних базових команд процесора і8086/і286. Поняття про байти коду операції, способах адресації, регістрах і зсувах. Асемблювання і дизасемблювання команд на своїх прикладах. Необхідність у контролі діапазону цілих числових даних при введенні. Поняття про 16- і 32-розрядні обчислювальні платформи. Діапазон припустимих значень для цілих числових змінних. Література 1. Голуб Н. Г. Искусство программирования на Ассемблере. Лекции и упражнения.- СПб.: ООО”ДиаСофтЮП”, 2002. – 656 с. 2. Магда. Ю. С. M12 Ассемблер для процессоров Intel Pentium. – СПб.: Питер, 2006. – 410с. 3. Ирвин Кип. Язык ассемблера для процессоров Intel, 4-е издание.: Пер с англ. – М.: Издательский дом ”Вильямс”, 2005. – 912с. Лабораторна робота 5. Тема: Робота з бітами на асемблері Цель: Вивчити склад команд МП Intel для роботи з бітами. Підготовка до роботи. Ознайомитися із набором команд мови асемблера для роботи із бітами [1, стор. 153-173], [2, стор. 311-313], [3, стор. 249-260,305-320]. Питання для самоконтролю. 1. У чому полягає різниця між командами AND і TEST? 2. Опишіть логіку роботи команди логічного додавання по модулі 2.
3. Які види зсувів ви знаєте? 4. Які команди можуть оперувати з одиничним бітом, що знаходиться в пам'яті або регістрі загального призначення? 5. Для чого застосовується і як працює команда bswap?
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|