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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Сортировка массива чисел

Цель работы

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

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

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

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

1. Описание процедур. Варианты размещения процедур в программе.

2. Процедуры и сопрограммы. Особенности передачи управления при вызове процедур и при вызове сопрограмм.

3. Команды вызова процедуры и возврата из неё.

4. Механизмы обработки процедур ближнего и дальнего вызовов. Что представляет собой «адрес возврата» и где он размещается?

5. Обязательно ли наличие сегмента стека в программе, содержащей процедуры, и почему?

6. Сопрограммы. Принципы взаимодействия сопрограмм.

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

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

1.1. В сегменте стека зарезервировать 5 двухбайтовых ячеек.

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

1.3. Используя один из алгоритмов сортировки, выполнить упорядочивание элементов массива по возрастанию.

1.4. Фрагмент программы, соответствующий сортировке, представить в виде процедуры ближнего вызова. Вариант размещения процедуры в программе выбрать самостоятельно.

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

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

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

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

2.4. Что представляет собой адрес возврата и чему он равен? Как изменяется состояние стека при возврате из процедуры?

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

2.6. Удалить из программы сегмент стека. Запустить программу на исполнение. Объяснить, что происходит при вызове процедуры сортировки.

Лабораторная работа № 6. Обработка структур. Ведение базы данных о пациентах

Цель работы

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

2. Приобретение навыков использования команд для работы со структурами на примере обработки информации о пациентах.

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

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

1. Структуры и определение шаблона структуры в программе.

2. Инициализация полей структуры в программе.

3. Режимы адресации для доступа к элементам структуры, для доступа к элементам массива структур.

4. Каким образом вычисляется расстояние до некоторого поля отдельного элемента массива структур?

5. Назначение оператора TYPE.

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

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

1.1. Определить шаблон структуры для хранения информации о пациентах, состоящей из следующих полей:

номер медкарты – dw с нулевым начальным значением;

пол – db с произвольным начальным значением;

год рождения – dw с нулевым начальным значением;

дата поступления – db с шаблоном ‘/ /’;

дата выписки – db с шаблоном ‘/ /’.

1.2. В сегменте данных определить три экземпляра записи, указав конкретную информацию о трёх пациентах.

1.3. В сегменте кода вывести информацию о количестве пациентов, поступивших на конкретную дату.

1.4. Получить сведения о количестве пациентов женского пола, которые были выписаны на определённую дату.

1.5. Найти год рождения пациента по номеру медкарты.

1.6. Найти количество пациентов мужского пола по указанному году рождения.

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

2.1. В каком месте программы расположено описание шаблона структуры?

2.2. Как расположены элементы структуры в памяти, элементы массива структур в памяти?

2.3. Сколько байтов отведено под одну структуру, под весь массив структур?

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

2.5. На что указывает метка начала массива? На что указывает название поля структуры?

4.7. Лабораторная работа № 7. Использование стека.         Проверка баланса расстановки скобок в строке

Цель работы

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

2. Приобретение навыков использования команд для работы со стеком и строками.

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

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

1. Память с последовательным доступом. Виды памяти с последовательным доступом.

2. Определение стека. Организация стека.

3. Команды работы со стеком.

4. Какие регистры используются при работе со стеком? Каково их назначение?

5. Как изменяется содержимое указателя вершины стека при включении нового элемента в стек и извлечении элемента из стека? Почему?

 

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

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

1.1. В сегменте стека определить стек из 20 двухбайтовых ячеек с начальным значением в виде символа «$».

1.2. В сегменте данных определить строку не более 20 символов, содержащую произвольное арифметическое выражение, в котором используются три вида скобок: «()», «[ ]» и «{ }». Последовательность и вложенность скобок может быть любая.

1.3. Также в сегменте данных определить байтовую ячейку для сохранения результата проверки.

1.4. В сегменте кода,  используя стек, проверить, все ли скобки закрыты, соответствует ли каждая закрывающаяся скобка открывающейся и нет ли лишних закрывающихся скобок.

1.5. В соответствующую ячейку памяти поместить код результата проверки (0 – скобки расставлены правильно, 1 – несоответствие скобок, 2 – не все скобки закрыты, 3 – лишние закрывающиеся скобки).

1.6. Если возникла ошибка несоответствия скобок, то в регистр DL поместить код скобки, которая ожидается, иначе – 0.

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

2.1. С какого адреса в памяти начинается сегмент стека? Какое значение содержится в регистре SP перед началом загрузки элементов в стек? На что указывает регистр SP?

2.2. Как изменяется содержимое регистра SP при помещении одного элемента в стек, при извлечении одного элемента из стека?

2.3. В каком порядке помещаются в стек и извлекаются элементы из стека?

2.4. Что является признаком опустошения стека?



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 245; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.189.193.172 (0.011 с.)