
- •Основы языка Assembler
- •1. Лабораторная работа №2: «Арифметические и логические команды в ассемблере».
- •1.1 Арифметические команды
- •1.1.1 Сложение и вычитание
- •1.1.2 Переполнения
- •1.1.3 Беззнаковые и знаковые данные.
- •1.1.4 Умножение
- •1.1.5 Беззнаковое умножение: Команда mul
- •1.1.6 Знаковое умножение: Команда imul
- •1.1.7 Многословное умножение
- •1.1.8 Деление
- •1.1.9 Беззнаковое деление: Команда div
- •1.1.10 Переполнения и прерывания
- •1.1.11 Преобразование знака
- •1.2 Логические команды
- •1.2.1 Команды логических операций : and, not,or,xor,test
- •1.2.2 Команды сдвига и циклического сдвига
- •1.2.2.1 Команды сдвига
- •1.2.2.2 Команды циклического сдвига
- •1.3 Примеры
- •1.4 Варианты заданий.
- •1.5 Требования к отчету
- •1.6 Контрольные вопросы и упражнения
- •2 Лабораторная работа №3 «Арифметические команды и команды переходов»
- •2.1 Получение символов с клавиатуры
- •2.2 Вывод символов на экран
- •2.3 Безусловные переходы
- •2.4 Условные переходы
- •2.5 Пример
- •2.6 Задания к лабораторной работе
- •2.7 Требования к отчету
- •2.8 Контрольные вопросы и упражнения
- •3 Лабораторная работа №4 «Программирование на языке ассемблер задач с использованием массивов строковых данных»
- •3.2 Цепочные команды
- •3.2.1 Инструкция lods
- •3.2.2 Инструкция stos
- •3.2.3 Инструкция movs
- •3.2.4 Повторение строковой инструкции
- •3.2.4 Сравнение строк
- •3.3 Режимы адресации к памяти
- •3.4 Ввод-вывод
- •3.6 Задания к лабораторной работе
- •3.7 Требования к отчету
- •3.8 Контрольные вопросы и упражнения
- •4 Лабораторная работа №5 « Работа с массивами и стеком на языке ассемблера»
- •4.1 Общие сведения о массивах
- •4.2 Ввод – вывод массива
- •4.3 Способы сортировки массивов.
- •4.4 Работа со стеком в ассемблере
- •4.4.1 Команды работы со стеком
- •4.4.2 Передача параметров в стеке
- •4.4.3 Передача параметров в потоке кода
- •4.5 Задание
- •4.6 Требования к отчету
- •4.7 Контрольные вопросы и упражнения
- •5 Лабораторная работа №6 «Работа с математическим сопроцессором в среде Assembler»
- •5.1 Основные сведения
- •5.2 Команды сопроцессора
- •5.2.1 Команды пересылки данных
- •5.2.2 Арифметические команды
- •5.3 Пример
- •5.4 Задание
- •5.5 Требования к отчету
- •5.6 Контрольные вопросы и упражнения
- •6 Лабораторная работа №7 «Программирование на языке ассемблера задач с использованием системных ресурсов bios. Работа в графическом режиме»
- •6.1 Графический режим
- •6.2 Прерывание bios int 10h для графики
- •6.3 Задание
- •6.4 Требования к отчету
- •6.5 Контрольные вопросы и упражнения
- •7 Лабораторная работа №8 «Работа с файлами в языке Assembler»
- •7.1 Создание файла
- •7.3 Создание и открытие файла.
- •7.4 Чтение, запись и переименование файла
- •7.7 Переименование файла
- •7.8 Закрытие и удаление файла
- •7.8.2 Удаление
- •7.10 Поиск файлов
- •7.10.1 Найти первый файл
- •7.10.2 Найти следующий файл
- •7.11 Задание
- •7.12 Требования к отчету
- •7.13 Контрольные вопросы и упражнения
- •Список литературы:
3.6 Задания к лабораторной работе
Во всех вариантах необходимо реализовать программу работы со строками. Исходная строка вводится с клавиатуры, результат выводится на экран. Слова в строке могут быть разделены пробелами и знаками препинания.
Найти слова, начинающиеся на заданную с клавиатуры букву, и перевернуть.
Найти слова, оканчивающиеся на заданную трехбуквенную комбинацию.
Отсортировать строку по длине слов.
Переставить слова – 6 слов: 1-6, 2-5, 3-4; 7 слов: 1-7, 2-6, 3-5, 4 на месте (цифры словами не считаются).
Подсчитать в строке количество слов, содержащих в середине гласную букву.
Отсортировать слова строки по третьей букве.
Найти слова, в которых больше трех повторяющихся символов.
Подсчитать количество слов-перевертышей в строке (шалаш).
Отсортировать слова в строки по алфавиту (по 1-ой букве, потом по 2-ой и т.д.).
Удалить в каждом слове строки повторяющиеся в нем буквы.
Вставить в каждое слово строки после заданного символа символ, введенный пользователем.
Найти слова, оканчивающиеся на заданную с клавиатуры букву, и перевернуть.
В каждом слове строки удвоить буквы.
Отсортировать буквы в каждом слове по алфавиту, оставляя позицию данного слова в строке неизменной.
Заменить все слова-перевертыши строки словом, введенным пользователем.
Удалить из каждого слова строки все гласные и вывести те гласные, которых не было в строке.
В каждом слове строки заменить 1-ую букву на последнюю, 2-ую на предпоследнюю и т.д.
Отсортировать слова в строке по количеству разных согласных букв, встречающихся в них.
3.7 Требования к отчету
Отчет лабораторной работы представляется в печатном виде.
Отчет должен содержать:
- титульный лист;
- содержание;
- цель лабораторной работы;
- вариант задания;
- исходный текст программы;
- результат в 16-тиричном и 10-тичном виде.
3.8 Контрольные вопросы и упражнения
1) Перечислите все цепочные команды с параметрами.
2) Опишите подробно работу команды LODS.
3) Опишите подробно работу команды STOS.
4) Опишите подробно работу команды SCAS.
5) Опишите подробно работу команды MOVS.
6) Опишите подробно работу команды CMPS.
7) Опишите подробно работу префикса повторения REP.
8) Напишите аналог префикса повторения REP.
9) Перечислите и подробно опишите режимы адресации.
4 Лабораторная работа №5 « Работа с массивами и стеком на языке ассемблера»
Цель работы: Приобретение навыков использования массивов и стека, а также приобретение навыков работы а графическом режиме при программировании на языке ассемблера.
4.1 Общие сведения о массивах
Как структура представления, массив является упорядоченным множеством элементов определенного типа. Упорядоченность массива определяется набором целых чисел, называемых индексами, которые связываются с каждым элементом массива и однозначно конкретизируют его расположение среди других элементом массива. Локализация конкретного элемента массива - ключевая задача при разработке любых алгоритмов, работающих с массивами.
Наиболее просто представляются одномерные массивы. Соответствующая им структура хранения — это вектор. Она однозначна и есть не что иное, как просто последовательное расположение элементов в памяти. Чтобы локализовать нужный элемент одномерного массива, достаточно знать его индекс. Так как ассемблер не имеет средств для работы с массивом как структурой данных, то для доступа к элементу массива необходимо вычислить его адрес.
Представление двумерных массивов немного сложнее. Здесь мы имеем случай, когда структуры хранения и представления различны. О структуре представления говорить излишне — это матрица. Структура хранения остается прежней — вектор. Но теперь его нельзя без специальных оговорок интерпретировать однозначно. Все зависит от того, как решил разработчик программы «вытянуть» массив — по строкам или по столбцам. Наиболее естествен порядок расположения элементов массива — по строкам. При этом наиболее быстро изменяется последний элемент индекса.