Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Команди зсуву. Множення на константу
7.1 Мета роботи
Навчитися методом зсуву відтворювати процедуру множення операнду на константу.
3.2 Теоретичні відомості SHR-логічний зсув вправо (CF) ← (Молодший біт операнда) (Операнд) ← (Операнд) /2. По команді SHR виконуються зсуви в байті або слові операнда. При форматі Reg/Mem,l виконується зсув тільки на 1 розряд. Якщо заданий формат Reg/Mem,CL, то число розрядів зсуву задається вмістом регістра CL. Старші розряди результату заповнюються нулями. Якщо після зсуву знаковий біт результату зберігає своє первинне значення, то прапорець OF скидається в 0. При довільному числі зсувів (більшому 1) значення прапорця ОF не визначено. Операнди командии SHR можуть бути задані в регістрах загального призначення або комірках пам'яті. Команда змінює прапорці CF, PF, SF і ZF. Стан прапорця AF не визначено.
Приклад. Нехай регістр BL містить число 77Н, вміст регістру прапорців рівний F046H і виконується команда SHR BL,1. Команда виконується таким чином: Прапорець CF Вміст регістра BL 0 0111 0111 = 77Н Початковий стан 1 0011 1011 = 3ВН Після зсуву Після виконання команди SHR BL,1 вміст регістру BL буде рівний 3ВН, прапорець CF встановлений в 1 і в регістрі прапорців буде записано число F003H. Оскільки біт знаку в результаті операції зсуву не змінив свого первинного стану, прапорець OF скидається в 0. Прапорці, що змінюються після операції: OF, SF, ZF, АF, PF, CF.
SAL/SHL-арифметичний зсув вліво/логічний зсув вліво
(CF) ← (Старший біт операнда) (Операнд) ← (Операнд) * 2. Після цих команд виконуються зсуви в байті або слові операнда. При використовуванні формату Reg/Mem, 1 виконується зсув тільки на 1 розряд. Якщо використовується формат Reg/Mem, CL, то число зсувів задається вмістом регістра CL. Молодші розряди байта або слова при зсуві заповнюються нулями. Якщо знаковий біт результуючого операнда не змінює свого значення, прапорець переповнення скидається в 0. Значення прапорця OF після зсуву на довільне число розрядів, більше 1, не визначено. Операнди команд SAL і SHL можуть бути задані в регістрах загального призначення або комірках пам'яті. Формат операндів – байт або слово. Команди впливають на прапорці CF, PF, SF і ZF. Значення прапорця AF не визначено. Приклад. Нехай вміст регістру ВХ рівний 4231Н, регістру прапорців – F046H, тобто прапорець CF встановлений в 0, Команда SHL ВХ, 1 виконується таким чином:
Прапорець CF Вміст регістру ВХ
0 0100 0010 0011 0001 =4231H Початкове число 0 1000 0100 0110 0010 = 8462H Після зсуву
Після виконання команди вміст регістру прапорців дорівнює F882H, регістру ВХ – 8462Н, прапорець CF скинений в 0, а пра-порець ОF встановлений в 1, оскільки змінився стан знакового бі-та. За допомогою команди SHL можна швидко обчислювати зна-чення ступенів 2 n, де n – число розрядів зсуву. Результат остан-нього прикладу може бути отриманий прямим множенням на 2. Прапорці, що змінюються після операції: OF, SF, ZF, АF, PF, CF. RCL-циклічний зсув вліво з перенесенням (Тимчасовий біт) ← (CF) (CF) ← (Старший біт операнда) (Операнд) ← (Операнд) * 2 + (Тимчасовий біт) Після цієї команди виконується циклічний зсув розрядів в байті або слові операнда. При використанні формату Reg/Mem, 1 проводиться зсув тільки на 1 розряд. Якщо використовується формат Reg/Mem,CL, то число зсувів задається вмістом регістра CL. Прапорець CF також бере участь в операціях зсуву, його значення заноситься в молодший значущий біт операнда-приймача, а на його місце заноситься значення самого старшого значущого біта цього операнда. В режимі зсуву на один біт (без регістра CL) прапорець OF встановлюється в 1 в тому випадку, якщо значення прапорця CF відрізняється від самого старшого значущого біта операнда-приймача. Значення прапорця OF не визначено при зсуві на число розрядів, більше одиниці. Операнди в цій команді можуть бути задані в регістрах загального призначення або комірках пам'яті. Прапорці, що змінюються після операції: OF, CF. а) б) в) Рисунок 7.1 - Схема роботи команд зсуву: а) логічний зсув вправо; б) логічний зсув вліво; в) арифметичний зсув вправо
а) б) в) г) Рисунок 7.2 - Схема роботи команд циклічного зсуву:
|