Приклади використання бітових команд
and ax, 0x0002; перевірка біта №1 or ax, 0x0200; установка біта №9 xor ax,0x4000; обнуління біта №14 not ax; логічне not над умістом регістра ax shl al,1; зсув регістра вліво на один біт shl byte [bx],1; зсув пам'яті вліво на один біт shl ax, cl; зсув регістра вліво на кількість з cl shl word [bx], cl; зсув пам'яті вліво на кількість з cl shld ax, bx,1; зсув регістра вліво на один біт shld [di], bx,1; зсув пам'яті вліво на один біт shld ax, bx, cl; зсув регістра вліво на кількість з cl shld [di], bx, cl; зсув пам'яті вліво на кількість з cl bt ax, 15; тестує біт у регістрі bts word [bx],15; тестує і ставить біт у пам'яті btr ax, cx; тестує і скидає біт у регістрі btc word [bx], cx; тестує і доповнює біт у пам'яті bsf ax, bx; сканування регістра по зростанню bsr ax,[si]; сканування пам'яті в зворотному порядку bswap edx; перестановка байтів у регістрі Завдання на лабораторну роботу При рішенні прикладів і завдань необхідно: а) скласти алгоритм рішення задачі б) напроти відповідних елементів алгоритму записати команди асемблера в) скласти програму (format pe) і відкомпілювати, при необхідності виправити синтаксичні помилки. г) перевірити виконання програми в дебагері OllyDbg, при наявності помилок виправити текст програми і повторити дії по п. г) д) змінити заголовок програми для компіляції модуля (format coff), додати відповідні зміни для одержання працездатного модуля для стикування з програмою на C++ (див. лабораторну роботу №2). е) створити консольний проект на С++, додати отриманий модуль, скомпілювати додаток (див. лабораторну роботу №2). ж) перевірити правильність роботи програми на різних наборах вхідних даних. з) оформити звіт і зробити осмислені висновки по суті розв'язуваної задачі. Варіанти завдань. 1) Скласти програму для дослідження роботи логічних команд. Проаналізувати поводження прапорів.
2) Скласти програму для дослідження команд зсувів. Проаналізувати поводження прапорів. а) скласти програму для дослідження простих зсувів. б) скласти програму для дослідження циклічних зсувів. 3) Скласти програму, що аналізує поводження визначеного біта (декількох біт) у цілому числі. Проаналізувати поводження прапорів. а) використовувати маску відповідно до таблиці 3. б) використовувати команди роботи з бітами. в) перевірити роботу команди bswap. Таблиця 3 - Варіанти завдань.
Критерії оцінювання. На 3 бали: Вміти дати відповіді на питання для самоконтролю та самоперевірки. Виконати завдання 1 та 2а. На 4 бали: Виконати завдання 1, 2, 3б. На 5 балів: Виконати завдання 1-3 у повному обсязі Питання для самоперевірки Навести таблиці істинності для основних булевих функцій У чому особливості різних команд зсуву (чи змінюється флаг CF)? Який принцип ділення та множення на ступені двійки за допомогою команд зсуву? Як сформувати маску, для перевірки декількох розрядів двійкового числа? Яким чином інтерпретувати результати маскування одразу кількох розрядів? Література 1. Голуб Н. Г. Искусство программирования на Ассемблере. Лекции и упражнения.- СПб.: ООО”ДиаСофтЮП”, 2002. – 656 с.
2. Магда. Ю. С. M12 Ассемблер для процессоров Intel Pentium. – СПб.: Питер, 2006. – 410с. 3. Ирвин Кип. Язык ассемблера для процессоров Intel, 4-е издание.: Пер с англ. – М.: Издательский дом ”Вильямс”, 2005. – 912с.
Читайте также: I Приклади розв’язання задач Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|