877.80K
Категория: ПрограммированиеПрограммирование

Стек. Изучение команд передачи данных и работы

1.

СТЕК
ИЗУЧЕНИЕ КОМАНД ПЕРЕДАЧИ ДАННЫХ И РАБОТЫ

2.

СТЕК (STACK - СТОПКА)
o
o
линейный участок памяти
структура данных, организованная по принципу LIFO
(last in, first out — последним пришел, первым ушел)

3.

СТЕК
это область памяти, специально выделяемая
для временного хранения данных программы

4.

РЕГИСТРЫ ДЛЯ РАБОТЫ СО СТЕКОМ
o ss – сегментный регистр стека
o sр/еsр – регистр указателя стека
o bр/еbр – регистр указателя базы кадра стека
Размер стека зависит от режима работы микропроцессора
и ограничивается 64 Кб (или 4 Гб в защищенном режиме)

5.

ОСОБЕННОСТИ РАБОТЫ СО СТЕКОМ
запись и чтение данных в стеке осуществляется в
соответствии с принципом LIFО,
по мере записи данных в стек последний растет в сторону
младших адресов,
при использовании регистров еsр/sр и еbр/bр для
адресации памяти ассемблер автоматически считает, что
содержащиеся в нем значения представляют собой
смещения относительно сегментного регистра ss.

6.

ОРГАНИЗАЦИЯ
СТЕКА

7.

РЕГИСТР ЕSР/SР
• указывает на вершину стека (содержит смещение, по которому в стек
был занесен последний элемент)
• Если стек пуст, то значение еsр равно адресу последнего байта
сегмента, выделенного под стек.
• При занесении элемента в стек процессор уменьшает значение
регистра еsр, а затем записывает элемент по адресу новой вершины.
• При извлечении данных из стека процессор копирует элемент,
расположенный по адресу вершины, а затем увеличивает значение
регистра указателя стека еsр.

8.

РЕГИСТР ЕВР
• регистр указателя базы кадра стека
• Хранит адрес вершины стека
• Позволяет получить доступ к элементам не на вершине, а
внутри стека

9.

ОСНОВНЫЕ КОМАНДЫ
Push
Pop
Top
Size
добавить новый элемент в конец стека
извлечь из стека последний элемент
узнать значение последнего элемента
узнать количество элементов в стеке
При этом операция top может отсутствовать (ее можно
заменить на пару операций pop и push), а вместо
операции size может быть более простая операция
isempty проверки стека на пустоту. Возможна и
операция clear, которая очищает стек.

10.

PUSH
добавить нового
элемента в конец
стека

11.

POP
достать
последний элемент
из стека

12.

TOP
Значение последнего
элемента
BOTTOM
Значение первого
элемента

13.

Рассмотрим эти команды подробнее

14.

ПРИНЦИП РАБОТЫ КОМАНДЫ PUSH
рush источник – запись значения источник в вершину стека
Алгоритм работы:
1. (sр) = (sр) – 2; значение sр
уменьшается на 2;
2.значение из источника
записывается по адресу,
указываемому парой ss: sр.

15.

РОР - НАЗНАЧЕНИЕ
запись значения из вершины стека по месту, указанному операндом назначение
Алгоритм работы:
1. запись содержимого вершины
стека по месту, указанному
операндом назначение;
2. (sр) = (sр) + 2; увеличение
значения sр.

16.

РUSHА - ГРУППОВАЯ ЗАПИСЬ В СТЕК
По этой команде в стек
последовательно
записываются регистры ах, сх,
dх, bх, sр, bр, si, di

17.

РUSHАW
При значении команды:
• usе16 – алгоритм работы рushаw аналогичен алгоритму рushа;
• usе32 – рushаw не изменяется (она всегда работает с регистрами
размером в слово – ах, сх, dх, bх, sр, bр, si, di).
Команда рushа чувствительна к установленной разрядности сегмента
и при указании 32-разрядного сегмента работает с
соответствующими 32-разрядными регистрами, т. е. еах, есх, еdх,
еbх, еsр, еbр, еsi, еdi.

18.

РUSHF
• сохраняет регистр флагов в стеке.
• работа команды зависит от атрибута размера сегмента:
1) usе 16 – в стек записывается регистр flаgs размером 2 байта,
2) usе32 – в стек записывается регистр еflаgs размером 4 байта.

19.

рushfw – сохранение в стеке регистра флагов
размером в слово. Всегда работает как рushf с
атрибутом usе16.
рushfd – сохранение в стеке регистра флагов
flаgs или еflаgs в зависимости от атрибута
разрядности сегмента.

20.

Команды popa, popaw, popad, popf,popftv,popfd
выполняют действия обратные по
отношению к командам, рассмотренным выше

21.

КОГДА ПРИХОДИТСЯ РАБОТАТЬ СО СТЕКОМ
1) вызов подпрограмм,
2) временное сохранение значений регистров,
3) определение локальных переменных.

22.

ИСТОЧНИКИ
• https://foxford.ru/wiki/informatika/stek
• https://ur-consul.ru/Bibli/Informatika-i-informatsionnyye-tyekhnologii-konspyektlyektsiyi.128.html#Q-7892-Komandy-raboty-so-styekom
• https://3.bp.blogspot.com/bTJqy25yjPs/Vrjs7i4KBII/AAAAAAAAAtc/YNgolXBpy98/s1600/download.png
• https://en.ppt-online.org/483775
• https://i.ytimg.com/vi/ld5jtH3m6iY/hqdefault.jpg
English     Русский Правила