Скачиваний:
59
Добавлен:
01.05.2014
Размер:
618.5 Кб
Скачать

10 Лабораторная работа № 4. Использование стека и подпрограмм. Организация внутрисегментных и межсегментных переходов

10.1 Цель работы

Цели лабораторной работы:

1) изучение принципов функционирования памяти и микропроцессора компьютера при выполнении внутрисегментных и межсегментных переходов, а также при работе со стеком;

2) приобретение навыков использования команд безусловного перехода для организации внутрисегментных и межсегментных переходов и стека при написании ассемблерных программ;

3) получение представления об особенностях обработки данных, команд и режимах доступа к данным при организации переходов и использовании стека.

10.2 Контрольные вопросы

1) Процедуры и их размещение в программе.

2) Переходы, виды переходов.

3) Механизмы обработки процедур ближнего вызова и процедур дальнего вызова.

4) Стек, организация стека, принципы работы стека.

5) Особенности размещения в стеке данных разных размерностей.

6) Как описать в программе несколько сегментов данных? Каким образом процессору указывается текущий сегмент данных?

7) Какой вид перехода происходит при изменении текущего сегмента данных, и какие регистры при этом используются?

10.3 Задание на лабораторную работу

1) Написать программу на языке ассемблера, которая использует стек и подпрограммы.

1.1) Описать сегмент стека, в котором зарезервировать 30 ячеек, занятых нулями.

1.2) Описать два сегмента данных: в первом определить массив из семи однобайтовых чисел; во втором – определить массив из семи однобайтовых элементов, первоначально занятых нулями, а также две однобайтовые ячейки для хранения минимального и максимального элементов массива соответственно.

1.3) Программы нахождения минимального, максимального элементов массива, а также реверсирования массива оформить в виде процедур ближнего вызова.

1.4) Реверсирование массива реализовать с использованием стека.

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

2) На основе исходной программы получить исполняемый файл. Выполнить программу по шагам с помощью отладчика TURBO DEBUGGER, описать изменение состояния регистров и ячеек памяти при выполнении программы. Обратить особое внимание на следующие моменты:

2.1) Как расположены процедуры в сегменте кода?

2.2) Сколько ячеек памяти отведено под стек?

2.3) Каким образом изменяется состояние стека при обращении к процедуре ближнего вызова?

2.4) Содержимое каких регистров, и каким образом необходимо изменить для выполнения перехода ко второму сегменту данных?

2.5) Что содержит регистр IP при выполнении команды CALL?

2.6) Что представляет собой адрес возврата и чему он равен? В какую точку основной программы выполняется возврат из процедуры?

2.7) Для чего нужна команда RET в процедуре?

11 Лабораторная работа № 5. Использование стека и подпрограмм. Организация передачи параметров через стек

11.1 Цель работы

Цели лабораторной работы:

1) изучение принципов функционирования памяти и микропроцессора компьютера при выполнении операций со стеком для передачи параметров через стек и рекурсивными подпрограммами;

2) приобретение навыков использования команд для работы со стеком и подпрограммами для организации передачи параметров через стек;

3) получение представления об особенностях обработки данных, команд и режимах доступа к данным при организации передачи параметров в подпрограммы через стек.