![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
При передаче через стек, параметры перед вызовом подпрограммы заносятся в стек командой push src.
Для обращения к параметрам, хранящимся в стеке, обычно используется регистр bp: mov bp, sp.
Необходимо помнить, что поверх параметров, передаваемых в подпрограмму, в стек записываются командой call одно или два слова адреса возврата. Каждая процедура «знает» свой тип вызова (одно или два слова) и отступив от верхушки стека на +2 или на +4 читает параметры:
1) mov ax, bp+2 – первый параметр при ближнем вызове;
2) mov ax, bp+4 – первый параметр при дальнем вызове.
Сохранение регистров
Подпрограмма во время выполнения использует регистры процессора. Значения, которые в них хранились, возможно, ещё понадобятся основной программе. По этой причине каждая подпрограмма обязана сохранить значения регистров перед началом их использования, а после завершения работы перед возвратом восстановить их прежние значения. Для сохранения регистров используется стек. В процессорах, начиная с 386, введены команды pusha и popa, сохраняющие в стеке, а после выполнения подпрограммы, восстанавливающие значения всех регистров.
Пример выполнения работы
Разработать подпрограмму, которая удаляет, начиная с заданной позиции строки, указанного числа символов. Написать программу, которая вводит с клавиатуры строку, позицию и длину удаляемой части строки, удаляет указанную часть и выводит строку.
Дата публикования: 2014-11-28; Прочитано: 249 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!