Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Команди логічних операцій. Команди зсувів
Логічні операції зображуються операторами and (кон’юнкція), or (диз’юнкція), xor (виняткове або (додавання за модулем два)), not (логічне заперечення), test, яка виконує операцію кон’юнкції і не змінює значення операндів. Усі логічні операції є порозрядними. Їх виконання можна узагальнено зобразити так: OP dst, src; dst = (dst) OP (src) і формуються прапорці, test dst, src; (dst) test (src) і формуються прапорці, not dst; dst= not (dst). де . У кожній з команд припустимий будь-який розмір операндів і режим адресації OP reg/mem, imm; 8| 16| 32 OP reg/mem, reg; 8| 16| 32 OP reg, reg/mem; 8| 16| 32 test reg/mem, imm; 8| 16| 32 test reg/mem, reg; 8| 16| 32 test reg, reg/mem; 8| 16| 32 Бінарні команди and, or, xor, test так впливають на арифметичні прапорці: – прапорці of і cf завжди встановлюються в нуль, оскільки між розрядні зв’язки відсутні; – стан прапорців sf, zf і pf визначається за результатом команди; – стан прапорця af не визначений. Унарна операція not на стан прапорців не впливає. Застосування логічних команд. Команда end застосовується для установки в нуль бітів операнда, які відповідають бітам другого операнда – маски, де вони дорівнюють нулеві. Команда or використовується для установки певних бітів в 1 за допомогою маски. Наприклад, установка в 1 парних бітів регістра al: or al,55h Команда xor використовується для інвертування певних бітів за маскою (маска в цих бітах дорівнює 1), порівняти операнди на абсолютну рівність, забезпечити нульове значення певного регістра: xor al, 0aah; інвертує непарні біти регістра al, xor si, si; забезпечує нульовий стан регістра si. Команда test часто використовується для перевірки стану одного біта. Використовується маска, в якій відповідний біт дорівнює 1. Прапорець zf показує стан потрібного біта (якщо біт у стані 1, то zf=0). Команди зсувів. Однаково діють на всі біти операнда, передаючи вміст i-го біта в (i-1)-й при зсуві вправо (right) або в (i+1)-й при зсуві вліво (left). Відмінності тільки щодо крайніх бітів, один з яких вивільняється, а інший висувається за межі розрядної (бітової) сітки. Останній висунений біт за межі розрядної сітки завжди знаходиться в прапорці перенесення cf. Розрізняють: – логічні зсуви (shift): висунений біт втрачається, в звільнений біт записується 0; – циклічні зсуви (rotation): висунений біт записується на місце звільненого; – арифметичні зсуви (arithmetic shift): в операції арифметичного зсуву вправо знаковий біт не змінюється (копіюється в старших бітах), зберігаючи знак числа, а висунений біт втрачається; арифметичний зсув вліво аналогічний логічному зсуву вліво;
– циклічні зсуви через перенесення (rotate through carry): в ланцюг зсуву приєднується прапорець перенесення cf. Усі команди зсуву мають однакове узагальнене зображення op dst, count; зсув (dst) на count бітів, де op – означає код відповідної операції зсуву: (rcl – циклічний зсув вліво через перенесення; rcr – циклічний зсув вправо через перенесення; rol – циклічний зсув вліво; ror – циклічний зсув вправо; sal/shl – арифметичний/логічний зсув вліво; sar – арифметичний зсув вправо; shr – логічний зсув вправо), count – можна вказати як безпосереднє значення imm8 (статичний зсув) або як регістр cl (динамічний зсув). Вміст регістра cl вважається цілою без знаковою сталою. Якщо count є imm=1, то довжина всіх команд зменшується на один байт. Команди допускають різні розміри операндів і всі можливі режими адресації: op reg/mem, count; розмір 8| 16 | 32 бітів. Прапорці модифікуються так: – стан прапорця af завжди не визначений; – прапорець cf дорівнює значенню останнього висуненого біта; – в одно бітових зсувах of=1, якщо операція змінила значення знакового біта операнда; при зсувах на декілька бітів значення of не визначено; – у звичайних зсувах прапорці sf, zf, pf модифікуються у відповідності до одержаного результату. Наведемо схеми виконання команд зсуву. 31|15|7 1 0
Рис. 21.1 Дії команд зсувів. Команди арифметичних зсувів реалізують множення (зсув вліво) і ділення (зсув вправо) чисел на , де – кількість розрядів зсуву. Однак, команда sar не дає такого ж результату, як команда ділення idiv в тому випадку, коли ділене від’ємне, а при зсуві висуваються одиничні біти. Наприклад, зсув на два біти вправо дає результат , а при діленні на 4 одержимо частку . (Увага! Переконайтеся, що це так! Розробіть просту програму мовою асемблера.) Відмінність у тому, що idiv заокруглює всі частки до нуля, а команда sar від’ємні числа до .
Команди подвійних зсувів. У процесорі i486 введено дві нові команди: подвійного зсуву вправо – shrd і подвійного зсуву вліво – shld. Узагальнене зображення цих команд ShXd dst, src, count , операнд dst – вміст загального регістра або комірки оперативної пам’яті, операнд src – тільки вміст загального регістра, лічильник зсувів count – вміст регістра cl або imm8. Форми
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-27; просмотров: 508; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.87.209.162 (0.093 с.) |