- •Лабораторная работа № 1
- •1. Цель и задача работы
- •2.1. Архитектура компьютера
- •2.2. Описание частей программы на языке ассемблера
- •2.3. Процедуры формирования исполняемой программы
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 2 режимы адресации
- •1. Цель и задача работы
- •2. Основные теоретические сведения
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа № 3 программирование ветвлений
- •1. Цель и задача работы
- •2. Основные теоретические сведения
- •2.1. Команды условного перехода
- •2.2. Команда безусловного перехода
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа № 4 команды цикла и их использование в программах обработки
- •1. Цель и задача работы
- •2. Основные теоретические сведения
- •2.1. Арифметические операции над целыми числами
- •2.2. Организация циклов
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа № 5 команды ввода-вывода на экран дисплея и их использование в программах обработки
- •1. Цель и задача работы
- •2. Основные теоретические сведения
- •2.1. Метод подъема
- •2.2. Команды прерывания
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Варианты заданий
- •Приложение в
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.
