36231

Использование стековой памяти

Доклад

Информатика, кибернетика и программирование

Поскольку существует только один регистр сегмента стека SS хранящий начальный базовый адрес стека в каждый момент времени можно обращаться только к одному стеку. Указатель стека SP используется для хранения адреса последнего члена последовательности вершины стека записанного в стек. Такие команды как PUSH записать данные в стек РОР считать данные из стека CLL вызов процедуры RET возврат из процедуры или IRET выход из прерывания автоматически изменяют содержимое указателя стека SP так чтобы отслеживать адрес вершины...

Русский

2013-09-21

52 KB

14 чел.

17. Использование стековой памяти

Работа со стековой памятью.

Стек – это область памяти, специально выделенная для временного хранения параметров или программных данных, необходимых для информационной связи программ и процедур. Максимальная ёмкость стековой памяти составляет 32К (32768) 16-битовых слов. Т. о. стек может полностью размещаться в одном сегменте памяти.

Поскольку существует только один регистр сегмента стека SS, хранящий начальный (базовый) адрес стека, в каждый момент времени можно обращаться только к одному стеку. Указатель стека SP используется для хранения адреса последнего члена последовательности (вершины стека), записанного в стек.

В большинстве случаев программист не должен следить за адресами действительного расположения программных данных в стеке. Такие команды, как PUSH (записать данные в стек), РОР (считать данные из стека), CALL (вызов процедуры), RET (возврат из процедуры) или IRET (выход из прерывания), автоматически изменяют содержимое указателя стека SP так, чтобы отслеживать адрес вершины стека.

Запись данных в стек называется операцией загрузки. При загрузке в стек нового числа содержимое указателя стека возрастает на 2, при этом полагают, что ячейка стека, содержавшая считанные числа, считается свободной и готовой для последующего использования. Физически же содержимое ячейки компьютерной памяти после операции считывания остаётся без изменений.

Команды PUSH (записать данные в стек) и РОР (считать данные из стека) позволяют организовать обмен данными между стеками и любым из 16-битовых регистров общего назначения или ячейками памяти.

Процедуры вызова и возврата, использующие стек.

Процедуры и подпрограммы позволяют многократно использовать фиксированную последовательность команд и данных различными программами, которые могут располагаться в любых участках памяти ПК. Для этого машинные команды CALL (вызов процедур) и RET (возврат из процедур) устанавливают стандартную форму передачи управления от программы к процедуре и возврат управления команде, следующей за командой CALL после выполнения процедуры.

Вызов и возврат внутри сегмента. Если физический адрес ячейки памяти, содержащей команду CALL, и начальная ячейка процедуры лежат внутри сегмента, то для передачи управления процедуре используется внутрисегментная команда CALL. Адрес возврата (адрес команды, следующей за командой CALL) загружается в текущий стек (определяемый указателем стека SP и регистром SS).

Последней командой выполняемой перед выходом из процедуры, должна быть команда RET (шестнадцатеричный машинный код – С3), по которой содержимое вершины стека (являющееся адресом возврата) считывается в указатель команд IP. Это обеспечивает передачу управления команде, следующей за командой CALL. В языке ассемблера процедура, выполненная внутрисегментным вызовом, определяется как NEAR.

Межсегментные вызовы и возвраты.

Программа может передавать управление процедуре, находящейся в произвольном месте памяти МП, используя межсегментную команду CALL. Выполняя её, процессор автоматически  осуществляет следующие операции (рис.17):

  

Указатель стека уменьшается на 2. Содержимое регистра CS, базовый адрес текущего командного сегмента, переносится в ячейку – вершину стека;

Указатель стека вновь увеличивается на 2. В стек загружается перемещаемый адрес команды, следующей за командой CALL.

Последней машинной командой из процедуры, вызванной межсегментной командой вызова, должна быть команда RET (код СВ.). В языке ассемблера процедуры, вызываемые командой межсегментного вызова, определяются как FAR. При осуществлении команды RET МП автоматически выполняет следующие операции

Слово из вершины стека (определяемой указателем стека SP) считывается в указатель команд IP. Для определения новой вершины стека содержимое регистра SP увеличивается на 2;

Слово, занимающее новую вершину стека, переписывается обратно  регистр CS. Содержимое регистра SP вновь возрастает на 2.

Таким образом, управление передаётся команде, следующей за командой CALL.

Вложенные процедуры вызова и возврата.

Программа может передавать управление процедуре, которая в свою очередь может вызывать другую процедуру, расположенную в произвольном месте памяти ЭВМ. В этом случае вторая процедура определяется как вложенная процедура вызова. Благодаря использованию стека, становятся возможными считывание всех адресов возвратов автоматически в требуемом порядке без каких-либо дополнительных программных сложностей и вставка произвольно чередующихся межсегментных и внутрисегментных вызовов без какой бы то ни было путаницы.

Использование стека для передачи переменной.

Хранение в стеке параметров или промежуточных результатов ведущей программы позволяет воспользоваться или при выполнении определяемой процедуры (программы). Во многих случаях операции, осуществляемые процедурой, могут выполняться непосредственно под данными, расположенными в стеке. Для указания данных, хранящихся в стеке, обычно используется регистр ВР. Вместе с командой RET может быть определено смещение для обхода области переменных в стеке, что позволяет при возврате передать контроль команде, следующей за командой CALL.


SP

Ст.адрес

Мл.адрес

тек

перед входом в процедуру

Ст.IP

После использования

команды RET

Рис.16. Внутрисегментная процедура: вызов и возврат.

SP

Старший IP

После использования

команды CALL

Младший адрес

Стек перед входом в процедуру

Старший адрес

SP

Ст. CS.

Ст. IP.

SP

После исполнения межсегментной команды  CALL.

Ст. CS.

Ст. IP.

SP

После исполнения межсегментной команды  RET.

Рис. 17. Межсегментная процедура: вызов и возврат.

Рис. 18. Передача данных через стек

Стек после исполнения команды RET со  смещением.

SP

Старший IP

Старший CS

Арг.3.

Арг.2.

Арг.1.

Стек после исполнения межсегментной команды

SP

Старший IP

Старший CS

Арг.3.

Арг.2.

Арг.1.

Арг3.

Арг.2.

Арг.1.

SP

В стек записали три аргумента

Мл. адрес

SP

Ст. адрес

Стек до входа в процедуру


 

А также другие работы, которые могут Вас заинтересовать

24606. Внутрішній аудит суть, об’єкти і суб’єкти 36.5 KB
  Мета внутрішнього аудиту допомогти членам суб'єкта господарювання ефективно виконувати свої функції. Завдання внутрішнього аудиту: ♦ перевірка системи економічних регламентів і регуляторів на предмет достатності та відповідності чинним правовим актам і статуту; ♦ перевірка правильності складання та умов виконання господарських договорів; ♦ перевірка: наявності стану правильності оцінки майна; ефективності використання матеріальних фінансових і трудових ресурсів; дотримання чинного порядку встановлення та застосування цін тарифів;...
24607. Облік витрат виробництва 52 KB
  Облік витрат виробництва Витратами звітного періоду визнають або зменшення активів або збільшення зобов’язань що призводять до зменшення власного капіталу за умови що ці витрати можна достовірно оцінити. Згідно з ПсБО №16 Витрати€ – витрати визнають витратами певного періоду одночасно з визнанням доходу для отримання якого їх здійснено. Якщо витрати неможливо прямо пов’язати з доходом певного періоду їх відображають у складі витрат того звітного періоду у якому вони були здійснені. Економічна класифікація витрат: за способами...
24608. Облік готової продукції та її реалізації 27.5 KB
  Облік готової продукції та її реалізації До готової продукції належить продя обробка якої закінчена та яка пройшла випробування приймання укомплектування згідно з умовами договорів відповідає затвердженим стандартам пройшла технічний контроль та здана на склад або замовнику. продя має вартісну характеристику у гривневому еквіваленті. Супутня продя продя отримана в одному технологічному циклі одночасно з основною. Побічна продя – яка утворюється паралельно з основною і не потребує додаткових витрат.
24609. Облік фінансових інвестицій 36 KB
  Фінансова інвестиції – активи які утримуються підприємством з метою збільшення прибутку зростання вартості капіталу. первісно оцінюються за собівартістю з:ціни придбання комісійних винагород мита податків зборів та ін. за Дт придбання Кт зменшення їх вартості та вибуття.35 за варт.
24610. Облік власного капіталу 44.5 KB
  Облік власного капіталу В момент створення підпрва його страховий капітал втілюється в активах інвестованих засновниками і представляє собою варт. Власний капітал ВК – частина в активах підпрва яка залишається після вирахування всіх його зобов’язань К=АЗ. Складові: статутний капітал рах. капіт.
24611. Облік розрахунків векселями 38.5 KB
  Облік розрахунків векселями Облік розрахунків за векселями регламентується постановою Верховної Ради України Про застосування векселів в господарському обороті України. Вексель являє собою письмове боргове зобов'язання векселедавця сплатити векселедержцю власнику векселя по настанні строку суму вказану у векселі.Розрізняють векселі прості і переказні. У простому векселі беруть участь дві сторони: векселедавець І векселедержєць.
24612. Облік кредитів банку 41.5 KB
  Синтетичний облік розрахунків по банківських кредитах здійснюється на пасивних рахунках 60 Короткострокові позики 50 Довгострокові позики. На рахунку 60 Короткострокові позики ведеться облік розрахунків у національній і іноземній валюті по кредитах банків строк повернення яких не перевищує 12 місяців з дати балансу та за позиками строк погашення яких минув.По кредиту рахунка 60 Короткострокові позики відображаються суми одержаних кредитів позик по дебету сума їх погашення та переведення до довгострокових зобов'язань у разі...
24613. Облік фінансових результатів діяльності підприємства 39 KB
  Облік фінансових результатів діяльності підприємства Формування доходів і витрат за видами діяльності і функціями. Фінансові результати за видами діяльності в результаті яких вони виникають поділяються на прибуток збиток від звичайної діяльності та від надзвичайних подій.Під звичайною діяльністю розуміють будьяку діяльність підприємства а також операції які забезпечують її або які виникають внаслідок здійснення такої діяльності.Прикладом звичайної діяльності є виробництво і реалізація продукції робіт послуг розрахунки з...
24614. Склад та призначення фінансової звітності підприємства 37 KB
  Склад та призначення фінансової звітності підприємства За видами звітність поділяється на бухгалтерську статистичну та оперативну. Бухгалтерська звітність містить показники виробничофінансової діяльності підприємства. Оперативна звітність призначена для поточного контролю та управління всередині підприємства на момент здійснення господарських операцій або одразу ж після їх завершення. В ній містяться дані про виконання плану поставок матеріалів виробництва продукції а також про дотримання укладених договорів та фінансовий стан підприємства...