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