Лекции.Орг


Поиск:




Команди зрушення




При виконанні команд зрушення прапор CF завжди містить значення останнього висунутого біта. Існують наступні команди cдвига:

SHR;Логічний (беззнаковий) зрушення вправо

SHL;Логічний (беззнаковий) зрушення вліво

SAR;Арифметичне зрушення вправо

SAL;Арифметичне зрушення вліво

Наступний фрагмент ілюструє виконання команди SHR:

 

MOV CL,03; AX:

MOV AX,10110111B; 10110111

SHR AX,1; 01011011;Зрушення вправо на 1

SHR AX,CL; 00001011;Зрушення вправо на 3

 

Перша команда SHR зрушує вміст регістра AX вправо на 1 біт. Висунутий у результаті один біт попадає в прапор CF, а самий лівий біт регістра AX заповнюється нулем. Друга команда зсуває вміст регістра AX ще на три біти. При цьому прапор CF послідовно приймає значення 1, 1, 0, а в три лівих біти в регістрі AX заносяться нулі. Розглянемо дію команд арифметичного вправо SAR:

 

MOV CL,03; AX:

MOV AX,10110111B; 10110111

SAR AX,1; 11011011;Зрушення вправо на 1

SAR AX,CL; 11111011;Зрушення вправо на 3

 

Команда SAR має важливу відмінність від команди SHR: для заповнення лівого біта використовується знаковий біт. Таким чином, позитивні і негативні величини зберігають свій знак. У приведеному прикладі знаковий біт містить одиницю. При зрушеннях уліво праві біти заповнюються нулями. Таким чином, результат команд зрушення SHL і SAL ідентичний. Зрушення вліво часто використовується для подвоєния чисел, а зрушення вправо - для розподілу на 2. Ці операції здійснюються значно швидше, ніж команди чи множення розподілу. Розподіл навпіл непарних чисел (наприклад, 5 чи 7) утворить менші значення (2 чи 3, відповідно) і встановлює прапор CF у 1. Крім того, якщо необхідно виконати зрушення на 2 біти, то використання двох команд зрушення більш эффективніше, ніж використання однієї команди з завантаженням регістра CL значенням 2. Для перевірки біта, занесеного в прапор CF використовується команда JC (перехід, якщо є перенос).

Команди циклічного зрушення

Циклічне зрушення являє собою операцію зрушення, при якому висунутий біт займає розряд, що звільнився. Існують наступні команди циклічного зрушення:

ROR;Циклічне зрушення вправо

ROL;Циклічне зрушення вліво

RCR;Циклічне зрушення вправо з переносом

RCL;Циклічне зрушення вліво з переносом

Наступна послідовність команд ілюструє операцію циклічного зрушення ROR: MOV CL,03; BX:

 

MOV BX,10110111B; 10110111

ROR BX,1; 11011011;Зрушення вправо на 1

ROR BX,CL; 01111011;Зрушення вправо на 3

 

Перша команда ROR при виконанні циклічного зрушення переносить правий одиничний біт регістра BX у ліву позицію, що звільнилася. Друга команда ROR переносить у такий спосіб три правих біти. У командах RCR і RCL у зрушенні бере участь прапор CF. Висуваємий з регістра біт заноситься в прапор CF, а значення CF при цьому надходить у позицію, що звільнилася. Розглянемо приклад, у якому використовуються команди циклічного і простого зрушення. Припустимо, що 32-бітове значення знахо- диться в регістрах DX:AX так, що ліві 16 біт лежать у регістрі DX, а праві - у AX. Для множення на 2 цього значення можливі cлідуючі дві команди:

 

SHL AX,1;Множення пари регістрів

RCL DX,1; DX:AX на 2

 

Тут команда SHL зсуває всі біти регістра AX вліво, причому самий лівий біт попадає в прапор CF. Потім команда RCL зсуває всі біти регістра DX вліво і у правий біт, що звільнився, заносить значення з прапора CF. Арифметичні команди будь-якого мікропроцесора залучають до себе найбільше уваги. Кожний зацікавлений у виконанні арифметичних обчислень, і саме ці команди проробляють таку роботу. Хоча їх небагато, вони виконують більшість перетворень, даних у мікропроцесорі. У реальних же умовах, арифметичні команди займають лише малу частину усіх команд, що виконуються. Команди пересилання використовують більшість принципів роботи команд мікропроцесора 8088, а при вивченні арифметичних команд необхідно розглянути деякі тонкості їх виконання.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 417 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Неосмысленная жизнь не стоит того, чтобы жить. © Сократ
==> читать все изречения...

774 - | 683 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.