Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Завдання на лабораторну роботу




При рішенні прикладів і завдань необхідно:

а) скласти алгоритм рішення задачі

б) напроти відповідних елементів алгоритму записати команди асемблера

в) скласти програму (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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...