Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5iOGKCvhPS.file-1.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
283.14 Кб
Скачать

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

1) Написать и выполнить следующие программы на базе примеров из теоретической части:

– записать в переменную значение большей из двух других переменных;

– записать в переменную (слово без знака) сумму двух переменных-байтов – байтов без знака (учитывая возможность переноса при сложении байтов);

– вычислить (записать в AX) сумму элементов вектора слов (считая, что результат помещается в слове).

2) Выполнить индивидуальное задание согласно варианту из табл. 4.

Таблица 4

Варианты индивидуальных заданий на лабораторную работу

варианта

Задание

1

Найти (поместить в регистр BX) меньший из элементов массива беззнаковых слов

2

Найти (поместить в специально отведенную ячейку памяти) больший из элементов массива знаковых байтов

3

Найти максимальный отрицательный элемент массива знаковых слов

4

Найти минимальный положительный элемент массива знаковых байтов

5

Поменять местами соседние (первый со вторым, третий с четвертым и т.д.) элементы массива беззнаковых байтов

6

В каждой паре соседних (первый и второй, третий и четвертый и т.д.) элементов массива беззнаковых слов первым поставить больший (из двух)

7

В каждой паре соседних (первый и второй, третий и четвертый и т.д.) элементов массива знаковых байт первым поставить меньший (из двух)

8

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

9

Найти сумму двух массивов слов (т.е. заполнить третий вектор)

10

Найти разность двух массивов байтов (т.е. заполнить третий вектор)

11

Найти количество элементов, равных нулю, в массиве знаковых слов

12

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

    1. 1.4. Отчет по лабораторной работе

Отчет по лабораторной работе должен содержать:

– текст полученного задания с указанным номером варианта;

– тексты программ с комментариями (в комментариях отобразить изменения содержимого регистров и флагов по ходу выполнения программы).

Кроме отчета и демонстрации работающей программы студент отвечает на вопросы по теоретической части, относящейся к данной лабораторной работе.

2. Лабораторная работа № 4

СТЕК

    1. 2.1. Общие методические указания по выполнению лабораторной работы

Цели работы:

– Знакомство с особенностями организации стека.

– Изучение стековых команд и приемов работы со стеком.

Среда выполнения:

Интерпретатор команд DOS, ассемблер MASM, интерактивный отладчик AFD.

2.2. Теоретические сведения

2.2.1. Стек и сегмент стека

Стек – это хранилище, работа с которым ведется по следующему принципу: элемент, записанный в стек последним, считывается из него первым. Под такое хранилище можно отвести любую область памяти, но к ней предъявляются следующие требования: ее размер не должен превышать 64 Кб и ее начальный размер должен быть кратен 16. Иначе говоря, эта область должна быть сегментом памяти, который обычно называют сегментом стека.

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

SS – сегментный регистр, по которому базируются адреса из стека (в нем находятся старшие 16 разрядов абсолютного адреса начала сегмента стека в ОП).

SP – указывает на вершину стека (последний положенный в стек элемент). В данном регистре хранится не сам адрес вершины, а ее смещение, т.е. адрес вершины, отсчитанный от начала сегмента стека. Поэтому абсолютный адрес вершины стека задается парой SS:SP.

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

Оформление сегмента стека размером k байт осуществляется следующим образом:

S SEGMENT STACK

DB k dup (?)

S ENDS

Параметр STACK директивы SEGMENT автоматически записывает в регистр SS начало сегмента стека, а в SP размер стека в байтах (число k).

Если стек явно не используется, то он все равно должен быть (для работы системы прерываний и ОС). Рекомендуемый размер в этом случае – 128 байт. Если же программа сама использует стек, то под него надо отводить столько места, сколько надо программе, плюс 128 байтов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]