|
Команди асемблера для Intel: ROL, ROR, SAHF, SAL, SAR
ADO в Delphi AJAX Android C++ CakePHP CMS COM CSS Delphi Flash Flex HTML Internet Java JavaScript MySQL PHP RIA SCORM Silverlight SQL UML XML Бази даних Веб-розробка Генетичні алгоритми ГІС Гітара Дизайн Економіка Інтелектуальні СДН Колір Масаж Математика Медицина Музика Нечітка логіка ООП Патерни Подання знань Розкрутка сайту, SEO САПР Сесії в PHP Системне програмування Системний аналіз Тестологія Тестування ПЗ Фреймворки Штучний інтелект
|
Команди асемблера для Intel: ROL, ROR, SAHF, SAL, SAR
ROL Циклічне зрушення влівоКоманда rol здійснює зрушення вліво всіх бітів операнда. Якщо команда записана у форматі rol операнд,1 зрушення здійснюється на 1 бітій. Старший біт операнда завантажується в його молодший розряд і одночасно заноситися в прапор CF (малий. П6). Якщо команда записана у форматі rol операнд,cl зрушення здійснюється на число бітій, вказане в регістрі-лічильнику CL, при цьому в процесі послідовніх зрушень старші біті операнда переміщаються в його молодші розряді. Останній перенесень біт одночасно заноситися в прапор CF.
![]() Малий. П6. Дія команді rol. Як операнд можна указуваті будь-який регістр (окрім сегментного) або елемент пам'яті розміром як в байт, так і у слово. Не допуськається вікорістовуваті як операнд безпосереднє значення. Команда впліває на прапорі OF і CF. Приклад 1 mov Ax,1 rol Ax,1 ;AX=0002h, Cf=0 Приклад 2 mov Dl,8 Oh rol Dl,1 ;DL=01h, Cf=1 Приклад 3 mov Dx,3000h mov Cl,4 rol Dx,cl ;DX=0003h, Cf=1 Приклад 4 mov Dx,2000h mov Cl,4 rol Dx,cl ;DX=0002h, Cf=0
Приклад mov Еах,012345678h rol Eах,16 ;EAX=56781234h >ROR Циклічне зрушення управо
ror операнд,1 зрушення здійснюється на 1 бітій. Молодший біт операнда запісується в його старший розряд і одночасно поступає в прапор CF (рис.Ш). Якщо команда записана у форматі ror операнд,cl зрушення здійснюється на число бітій, вказане в регістрі-лічильнику CL, при цьому в процесі послідовніх зрушень молодші біті операнда переміщаються в його старші розряді. Останній перенесень біт одночасно заноситися в прапор CF.
![]() Малий. П7. Дія команді ror. Як операнд можна указуваті будь-який регістр (окрім сегментного) або елемент пам'яті розміром як в байт, так і у слово. Не допуськається вікорістовуваті як операнд безпосереднє значення. Команда впліває на прапорі OF і CF. Приклад 1 mov Ax,2 ror Ax,1 ;AX=0001h, Cf=0 Приклад 2 mov Dl,81h ror Dl,1 ;DL=C0h, Cf=1 Приклад 3 mov Bx,000eh mov Cl,4 ror Bx,cl ;BX=E000h, Cf=1 Приклад 4 mov Bx,0009h mov Cl,4 ror Bx,cl ;BX=9000h, Cf=1
Приклад mov Edi,90000001h ror Edi,12 ;EDI=00190000h SAHF Запіс вмісту регістра АН в регістр прапорівКоманда sahf копіює розряді 7, 6, 4, 2 і 0 регістра АН в регістр прапорів процесора, встановлюючи тім самим значення прапорів SF, ZF, AF, PF і CF відповідно. Команда не має операндів. Команда sahf (спільно з командою lahf) дає можлівість читаті і змінюваті значення прапорів процесора, зокрема прапорів SF, ZF, AF і PF, які не можна змініті безпосередньо. Проте слід маті на увазі, що команда sahf заповнює тільки молодший байт регістра прапорів. Тому не можна змініті з її допомогою, напріклад, стан прапора OF. Приклад 1 lahf ;Регистр АН відображає ;стан регістра прапорів or Ан,80h ;Установка бита 7 = SF sahf ;Загрузка АН в регістр ;прапорів, де тепер буде SF = 1 Приклад 2 lahf ;Регистр АН відображає ;стан регістра прапорів and Ан,0bfh ;Сброс бита 6 = ZF sahf ;Загрузка АН в регістр ;прапорів, де тепер буде ZF = 0 Приклад 3 mov АН, 5 sahf ;Устанавливаются прапорі PF і ;CF і ськидається прапорі SF ;ZF і AF SAL Аріфметічне зрушення вліво
sal операнд, 1 зрушення здійснюється на 1 бітій. У молодший біт операнда завантажується 0. Якщо команда записана у форматі sal операнд,cl зрушення здійснюється на число бітів, вказане в регістрі-лічильнику CL, при цьому в процесі послідовніх зрушень старші біті операнда, пройшовши через прапор CF, втрачаються, а молодші заповнюються нулями (малий. П8.).
![]() Малий. П8. Дія команді sal. Як операнд команді sal можна указуваті будь-який регістр (окрім сегментного) або елемент пам'яті розміром як в байт, так і у слово. Не допуськається вікорістовуваті як операнд безпосереднє значення.
Кожне зрушення вліво еквівалентне множенню знакового числа на 2, тому команду sal зручно вікорістовуваті для піднесення операнда до ступеня 2. Приклад 1 mov Al,7 sal Al,1 ;AL= 0Eh=7*2, Cf=0 Приклад 2 mov Ax,ifh mov Cl,8 salAx,cl;AX=lF00h=lFFh*256, Cf=0 Приклад 3 mov Si-1 ;SI=FFFFh mov Cl,4 salsi,cl;SI=FFF0h=-l*16=-16, Cf=1
Приклад mov Ebx,0000c835h sal Ebx,5 ;EBX=001906A0h SAR Аріфметічне зрушення управоКоманда sar здійснює зрушення управо всіх бітів операнда. Молодший біт операнда поступає в прапор CF. Якщо команда записана у форматі sar операнд,1 зрушення здійснюється на 1 бітій. Старший біт операнда зберігає своє значення. Якщо команда записана у форматі sar операнд,cl зрушення здійснюється на число бітій, вказане в регістрі-лічильнику CL, при цьому в процесі послідовніх зрушень молодші біті операнда, пройшовши через прапор CF, втрачаються, а старший біт розширюється управо (малий. П9).
![]() Малий. П.9. Дія команді sar. Як операнд можна указуваті будь-який регістр (окрім сегментного) або елемент пам'яті розміром як в байт, так і у слово. Не допуськається вікорістовуваті як операнд безпосереднє значення. Кожне зрушення управо еквівалентне діленню знакового числа на 2, тому команду sar зручно вікорістовуваті для ділення операнда на цілі ступені 2. Команда впліває на прапорі OF, SF, ZF, AF, PF і CF. Приклад 1 mov Al,7 sarAl,1;AL=3=7/2, Cf=1. Залішок ;втраченій Приклад 2 mov Ax,lff0h mov Cl,4 sarAx,cl;AX=01FFh=lFF0h/16, Cf=0 Приклад 3 mov Bx-8 ;BX=FFF8h mov Cl,2 sarbx,cl;BX=FFFEh=-2=-8/4, Cf=0
Приклад mov Eax,0f0001234h sar Eax,8 Eax=fff00012h Зверніть увагу на додаткові посиланняГоловний розділСторінки, близькі за змістомзагрузка...
|
Сторінки, близькі за змістом ![]() Асемблер (англ. assembler) — загальноприйнята назва транслятора з автокоду. Асемблер переводить початкову програму, написану на автокоді, в переміщувану програму на мові машинній. Оскільки асемблер здійснює трансляцію на мову завантажувача, при завантаженні програми необхідна налаштування умовних адрес, тобто адрес, значення яких залежать від розташування даної програми в пам'яті ЦВМ і від її зв'язків з іншими незалежно трансльованими програмами. |
|
Copyright © 2008—2026 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|