Часть 2. Передача параметров через стек

1. Модифицируйте программу таким образом, чтобы передача параметров осуществлялась через стек. Для этого в основной программе определите в качестве вершины стека адрес последнего слова используемой в процессорной системе оперативной памяти. В качестве указателя стека используется регистр sp процессора. Обратите внимание на то, что после помещения в стек или извлечения из стека автоматического изменения регистра sp не происходит. Это должна выполнить Ваша программа. После записи в стек sp следует уменьшить на 4, перед извлечением из стека – увеличить на 4. Возврат найденного большего числа из списка также должен осуществляться через стек. Причем, результат может быть помещен в то место в стеке, где были размещены передаваемые процедуре параметры. Для этого используйте соответствующее смещение относительно текущего указателя стека. Общепринятый прием – сохранение содержимого регистров, используемых в подпрограмме, в стеке в начале работы подпрограммы и восстановление их при завершении подпрограммы. Непосредственно перед выполнением команды ret, выполните коррекцию указателя стека так, чтобы он указывал на возвращаемый результат. Отладьте программу, убедитесь в ее работоспособности, покажите результат преподавателю.

2. Запускайте программу, изменяя исходные данные. Для заполнения памяти используйте соответствующее окно AMP.

Часть 3. Использование вложенных процедур

1. Модифицируйте программу из предыдущей части следующим образом. Оформите вывод на светодиоды в качестве самостоятельной процедуры, передав в качестве параметра отображаемое число через какой-либо регистр процессора. Выполните вызов этой процедуры внутри подпрограммы Max. Из основной программы соответствующую часть кода удалите.

2. Поставьте контрольную точку в конце программы. Запустите программу. Убедитесь, что возврат в основную программу не выполняется. Выясните причину и устраните ее.

3. Убедитесь в работоспособности модифицированной программы. Покажите результат ее работы преподавателю.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: