Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_АСС.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
405 Кб
Скачать
☆

3. Методика выполнения работы

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

MOV приемник, источник.

Mov – это основная команда пересылки данных. В ней допустимо большинство из возможных сочетаний операндов:

Mov ax,table ;пересылка из памяти в регистр,

Mov table, ax ; пересылка из регистра в память,

Mov ds, ax ;пересылка между 16-битовыми регистрами

Mov bl,al ; пересылка между 8-битовыми регистрами,

Mov cl,-30 ;пересылка константы в регистр, замена значения,

Mov [BX],word ptr 25h ; пересылка константы в память.

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

INC регистр

DEC регистр.

Команда INC увеличивает на единицу значение операнда (аналогична k++ в языке СИ++), а команда DEC уменьшает значение операнда на 1 (аналог k--в CИ++).

Для варианта косвенной адресации зашлите адреса начала массивов в базовый и индексный регистры, например командами:

MOV BX, OFFSET SOURCE и

MOV DI, OFFSET DEST,

и далее используйте регистры BX и DI для адресации элементов массивов.

4. Порядок выполнения работы

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

2. Используя индексную и косвенную адресацию (по заданию преподавателя), разработать программу на ассемблере, выполняющую заданные алгоритмы преобразований.

3. Оттранслировать и скомпоновать программу в исполнимый код.

4. Провести отладку программы и проверить получаемые результаты.

Требования к содержанию и оформлению отчета

Отчет должен включать:

а) титульный лист;

б) формулировку задачи работы;

в) описание результатов выполнения пунктов 2-4:

• листинги программ;

• результаты выполнения программ;

г) вывод, согласованный с задачей работы.

Критерии результативности выполнения работы

Лабораторная работа считается успешно выполненной, если:

  • отчет на бумажном носителе содержит все необходимые пункты согласно требованиям;

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

  • студент отвечает на контрольные вопросы преподавателя.

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

1. Каков синтаксис команд ассемблера?

2. Что такое исполнительный адрес и как он используется при определении физического адреса операнда?

3. В чем заключается различие прямых и косвенных режимов адресации?

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

5. Какие режимы адресации Вы знаете?

Варианты заданий

1. В векторе однобайтовых значений SOURCE заменить, используя косвенную адресацию, старший полубайт значений на F (если начальное значение в SOURCE равно 0A, то конечное значение д.б. FA).

Подсказка: для перехода к следующему элементу вектора воспользуйтесь командой инкремента INC, преобразование данных выполните с использованием команды OR.

2. В векторе двухбайтовых значений SOURCE заменить, используя прямую адресацию с индексированием, младший байт значений на 0 (если начальное значение в SOURCE равно АААА, то конечное значение д.б. AА00).

Подсказка: для перехода к следующему элементу вектора воспользуйтесь командой инкремента INC, преобразование данных выполните с использованием команды AND.

3. Из заданного вектора однобайтовых значений SOURCE переместить, используя прямую адресацию с индексированием, данные в область DEST, поменяв местами старший и младший полубайты (если начальное значение в SOURCE равно AB, то конечное значение д.б. BA).

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

4. Из заданного вектора двухбайтовых значений SOURCE переместить, используя косвенную адресацию, данные в область DEST, поменяв местами старшее и младшее слово (если начальное значение в SOURCE равно AАBВ, то конечное значение д.б. BВAА).

Подсказка: для перехода к следующему элементу вектора воспользуйтесь командой инкремента INC, преобразование данных выполните с использованием команды XCHG.

5. Из заданного вектора однобайтовых значений SOURCE переместить, используя прямую адресацию с индексированием, данные в область DEST, преобразовав все исходные значения в нечетные (если начальное значение в SOURCE равно AB, то конечное значение д.б. AВ, а если исходное значение равно AC, то конечное значение равно AD).

Подсказка: для перехода к следующему элементу вектора воспользуйтесь командой инкремента INC, преобразование данных выполните с использованием команды OR.

6. В заданном векторе двухбайтовых значений SOURCE, используя косвенную адресацию, преобразовать все исходные значения в четные (если начальное значение в SOURCE равно AB, то конечное значение д.б. AА, а если исходное значение равно AC, то конечное значение равно AС).

Подсказка: для перехода к следующему элементу вектора воспользуйтесь командой инкремента INC, преобразование данных выполните с использованием команды AND.

7. Из заданного вектора байтов SOURCE, используя косвенную адресацию, переместить в область DEST каждый второй байт.

Подсказка: для перехода к каждому второму байту дважды воспользуйтесь командой инкремента, а для перехода следующему элементу вектора DEST воспользуйтесь командой инкремента INC один раз.

8. Из заданного вектора слов SOURCE переместить, используя прямую адресацию с индексированием, данные в область DEST, обнулив в исходных значениях второй и третий полубайты (если начальное значение в SOURCE равно AАBВ, то конечное значение д.б. A00В).

Подсказка: для перехода к следующему элементу вектора воспользуйтесь командой инкремента INC, преобразование данных выполните с использованием команды AND.