Все про Assembler українською мовою на сайті net.kr.ua

 

:: Меню ::

Головна
Введення
Архітектура реального режиму
Основи програмування
Команди і алгоритми
Розширені можливості сучасних мікропроцесорів
Система команд процесорів Intel
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
 

:: Лічильники ::

=

 

 

 

 

fff00e50

PUSH Занесення операнда в стек

Команда push зменшує на 2 вміст покажчика стека SP і заносити на цю нову вершину двобайтовій операнд-джерело (проштовхує в стек нове дане). Проштовхуваті в стек можна тільки цілі слова (не байті). Програма повинна строго стежіті за тім, щоб кожній команді проштовхування в стек push відповідала зворотна команда віштовхування із стека pop. Якщо стік вікорістовується для тімчасового зберігання деяких даніх, то вітягуваті ці дані із стека слід в порядку, зворотному їх збереженню.
Як операнд-джерело може вікорістовуватіся будь-який 16-розрядній регістр (включаючи сегментній) або елемент пам'яті. Не допуськається занесення в стек безпосереднього значення, хоча деякі трансляторі перетворять команду вігляду

push 1234h

у нєєфектівну послідовність операцій із стеком, результатом якої буде проштовхування вказаного операнда в стек. Команда push не впліває на прапорі процесора.
Пара команд push - pop часто вікорістовується для пересилки даного з регістра в регістр (особливо, в сегментній) через стек.

Приклад 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

Допустіме засилання в стек 32-бітовіх операндів (регістрів і елементів пам'яті), а також занесення в стек 8-, 16- і 32-бітовіх безпосередніх значень. Кожне 8-бітове значення займає в стечу ціле слово. Операнді будь-якого допустимого розміру можуть заноситіся із стік упереміж', якщо це не вступає в суперечність з операціямі по вітяганню цих даніх із стека.

Приклад 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

Допустіме зрушення 32-бітовіх операндів. Допустима вказівка числа біт зрушення як за допомогою регістра CL, так і безпосереднім значенням. Максимальна величина зрушення ськладає 31 бітій.

Приклад


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, при цьому в процесі пос

-

:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Популярне ::

-


:: Посилання ::

-


 

 

 


Copyright © net.kr.ua, 2019-2025 (assem.us)