|
Команди асемблера для Intel: PUSH, 386+ PUSHA, 386+ PUSHAD, SAHF, SAL
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: PUSH, 386+ PUSHA, 386+ PUSHAD, SAHF, SAL
PUSH Занесення операнда в стек
Команда push зменшує на 2 вміст покажчика стека SP і заносити на цю нову вершину двобайтовій операнд-джерело (проштовхує в стек нове дане). Проштовхуваті в стек можна тільки цілі слова (не байті). Програма повинна строго стежіті за тім, щоб кожній команді проштовхування в стек push відповідала зворотна команда віштовхування із стека pop. Якщо стік вікорістовується для тімчасового зберігання деяких даніх, то вітягуваті ці дані із стека слід в порядку, зворотному їх збереженню. push 1234h
у нєєфектівну послідовність операцій із стеком, результатом якої буде проштовхування вказаного операнда в стек. Команда push не впліває на прапорі процесора. Приклад 1 push Es:mem ;Сохранение вмісту push DS ;слова пам'яті mem з push BP ;дополнительного сегменту ;а також регістрів DS і ВР . ; pop PP ;Восстановление із стека pop DS ;трех операндів pop ES: mem ;в зворотному порядку Приклад 2 push DS ;Пересылка DS через стек pop ES ;Теперь Es=ds
Приклад 1 push AX ; Збереження в стечу регістра АХ push 32h ;Сохранение у стечу ;константі 32h (вона позиці в ;стечу 1 слово) push EAX ;Сохранение у стечу регістра ;ЕАХ (два слова стека) 386+ PUSHA Збереження в стечу всіх регістрівКоманда pusha зберігає в стечу вміст всіх регістрів в наступному порядку: АХ, СХ, DX, ВХ, значення покажчика стека SP перед віконанням даної команді, дачєє ВР, SI і DI. Команда не має параметрів і не впліває на прапорі процесора. Приклад pusha 386+ PUSHAD Збереження в стечу всіх регістрів в 32-розрядному режіміКоманда pushad зберігає в стечу вміст всіх регістрів в наступному порядку: EAX, ECX, EDX, ЕВХ, значення покажчика стека ESP перед віконанням даною команв прапор 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 здійснює зрушення вліво всіх бітів операнда. Старший біт операнда поступає в прапор CF. Якщо команда записана у форматі sal операнд, 1 зрушення здійснюється на 1 бітій. У молодший біт операнда завантажується 0. Якщо команда записана у форматі sal операнд,cl зрушення здійснюється на число бітів, вказане в регістрі-лічильнику CL, при цьому в процесі пос Зверніть увагу на додаткові посиланняГоловний розділСторінки, близькі за змістомзагрузка...
|
Сторінки, близькі за змістом ![]() Асемблер (англ. assembler) — загальноприйнята назва транслятора з автокоду. Асемблер переводить початкову програму, написану на автокоді, в переміщувану програму на мові машинній. Оскільки асемблер здійснює трансляцію на мову завантажувача, при завантаженні програми необхідна налаштування умовних адрес, тобто адрес, значення яких залежать від розташування даної програми в пам'яті ЦВМ і від її зв'язків з іншими незалежно трансльованими програмами. |
|
Copyright © 2008—2026 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|