Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.р.1-12.СПРГ-1(40, укр).doc
Скачиваний:
5
Добавлен:
27.08.2019
Размер:
2.33 Mб
Скачать

3.3 Команди сканування бітів

bt, bts, btr і btc оперують з одиничним бітом, що може бути в пам'яті або регістрі загального призначення. Розташування біта визначається як зсув від кінця нижнього регістра операнда. Значення зсуву береться з другого операнда, це може бути або регістр загального призначення, або байт.

Ці інструкції спочатку присвоюють прапорові CF значення обраного байта,

bt більше нічого не робить,

bts присвоює обраному бітові значення 1,

btr скидає його на 0,

btc змінює значення біта на його доповнення, тобто перевіряє біт, зазначений другим операндом, у першому операнді, потім копіює його значення у прапор CF і інвертує. Таким чином, номер біта виступає другим операндом, а першим може служити регістр або комірка пам'яті. Крім того, можна вказати номер біта або безпосередньо, або через регістр.

В усіх інструкціях перший операнд може бути словом або подвійним словом.

Інструкції bsf і bsr шукають у слові або подвійному слові перший установлений біт і зберігають індекс цього біта в операнд-адресат, яким повинний бути регістр загального призначення. Рядок бітів, що сканується, визначається операндом-джерелом, їм може бути або регістр загального призначення, або пам'ять. Якщо рядок нульовий (жодного одиничного біта), то встановлюється прапор ZF, інакше він очищається. Якщо не знайдено жодного встановленого біта, значення операнда адресата не визначено, bsf сканує від нижнього регістра до верхнього (починаючи з біта з індексом нуль), bsr сканує від верхнього регістра до нижнього (починаючи з біта з індексом 15 у слові або з індексу 31 у подвійному слові).

bswap перевертає порядок битов у 32-бітному регістрі загального призначення: біти від 0 до 7 міняються місцями з бітами від 24 до 31, а біти від 8 до 15 міняються з бітами від 16 до 23. Ця інструкція передбачена для перетворення значень із прямим порядком байтів до формату зі зворотним порядком і навпаки.

4. Методичні вказівки з оформлення звіту

Звіт до лабораторної роботи повинен містити:

тему лабораторної роботи;

формулювання мети і задач, що вирішуються в ході виконання роботи;

докладний про хід виконання завдання, із наведенням: алгоритмів, текстів програм, умістом комірок пам’яті та регістрів мікропроцесора, що були отримані у дебагері;

осмислені та аргументовані висновки.

5. Приклади використання бітових команд

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 ; перестановка байтів у регістрі

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]