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

Ст. адрес

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


 

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

35444. Проблемы административного расследования в таможенных органах в период реформирования таможенного законодательства 484.5 KB
  Объектом дипломного исследования являются общественные отношения, складывающиеся в процессе производства по делам об административных правонарушениях, связанные с проведением административного расследования, предметом - административное расследование в механизме производства по делам об административных правонарушениях.
35445. Хирургия. Шпаргалка 451 KB
  Предраковые заболевания толстой и прямой кишки. Дивертикулы дивертикулез ободочной кишки. Полипозное поражение ободочной кишки облигатный предрак которое может быть в виде: Одиночных полипов аденоматозный ворсичатый которые малигнизируются в 45 случаев особенно полипы величиной более 2 см; ворсинчатые полипы озлокачествляются чаще. Множественного полипоза ободочной кишки который.
35446. ПСИХИАТР, ПСИХОТЕРАПЕВТ, ПСИХОЛОГ – WHO ЕСТЬ КТО 35.5 KB
  В тот день я подумал идя домой что одна из главных проблем всех заинтересованных в этом споре сторон – определиться в терминах к примеру понятие параноидный для психиатра – это не совсем то что вкладывает в него психолог и нет числа этим трудностям перевода. При этом все – и психиатры и психологи – занимаются психотерапией на вполне законных основаниях и порой небезуспешно Еще одна проблема – илиили: двух мнений быть не может существует только единственно правильное учение и психотерапевт который его исповедует а все...
35447. СТРОЕНИЕ, РАЗВИТИЕ И ФУНКЦИОНАЛЬНОЕ ЗНАЧЕНИЕ РАЗЛИЧНЫХ ОТДЕЛОВ НЕРВНОЙ СИСТЕМЫ 15.49 KB
  В центре спинного мозга расположено серое вещество скопление нервных клеток нейронов окруженное белым веществом образованным нервными волокнами. Рефлексы мочеиспускания и дефекации рефлекторного набухания полового члена л иззержснчс семени у мужчины эрекция и ЭЯКУЛЯЦИЯ также связаны с функцией спинного мозга.Спинной мозг осуществляет и проводниковую функцию нервные волокна составляющие основную массу белого вещества образуют проводящее SjTH сииндаго мозга.Деятельность спинного мозга у человека в значительной подчинена координирующим...
35448. My Favourite Film Romeo and Juliet 14.76 KB
  And Ill try to tell you about this film. In the town of Verona there were two rich families, the Capulets and the Montagues. There was an old quarrel between those two families. One day Capulet made a great supper. At that supper Romeo saw Juliet and fell in love with her at ones.
35449. Gone with the wind. My Favourite Film 17.43 KB
  I don't like horror films nd I find them quite disgusting. Sometimes I my wtch police drm or historicl film but I'm not very keen on these types of films. Now let me tell you bout one of my fvourite films Gone with the wind by the novel by Mrgret Mitchell.
35450. Высшая нервная деятельность детей на протяжении первых 3 лет жизни 13.23 KB
  Высшая нервная деятельность детей раннего возраста характеризуется неуравновешенностью двух основных нервных процессов: процессы возбуждения преобладают над процессами торможения. В поведении детей много широко разлитых иррадиированных реакций. Поэтому нельзя требовать от детей быстрого прекращения начатого ими действия или выполнения какоголибо движения и быстрого переключения с одного действия на другое.
35451. Условные и безусловные рефлексы 10.8 KB
  Безусловные рефлексы природный запас готовых стереотипных реакций организма. Безусловные рефлексы одинаковы у всех особей одного вида. Условные рефлексы Но поведение высших животных и человека характеризуется не только врожденными т.
35452. Мотивация и емоции 10.94 KB
  На основании мотиваций формируется поведения ведущее к удовлетворению исходной потребности. Под эмоциями следует понимать определенное состояние организма человека и высших животных которое формируется под влиянием внешней или внутренней потребности или мысленного представления и сопровождается комплексом соматических и вегетативных сдвигов имеющих адаптационное значение. Таким образом эмоции следует рассматривать в качестве своеобразной приспособительной реакции которая формируется в процессе эволюции.