- •Основы языка Assembler
- •1. Лабораторная работа №1: «Арифметические и логические команды в ассемблере».
- •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 Лабораторная работа №2 «Арифметические команды и команды переходов»
- •2.1 Получение символов с клавиатуры
- •2.2 Вывод символов на экран
- •2.3 Безусловные переходы
- •2.4 Условные переходы
- •2.5 Пример
- •2.6 Задания к лабораторной работе
- •2.7 Требования к отчету
- •2.8 Контрольные вопросы и упражнения
- •3 Лабораторная работа №3 «Программирование на языке ассемблер задач с использованием массивов строковых данных»
- •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 Лабораторная работа №4 « Работа с массивами и стеком на языке ассемблера»
- •4.1 Общие сведения о массивах
- •4.2 Ввод – вывод массива
- •4.3 Способы сортировки массивов.
- •4.4 Работа со стеком в ассемблере
- •4.4.1 Команды работы со стеком
- •4.4.2 Передача параметров в стеке
- •4.4.3 Передача параметров в потоке кода
- •4.5 Задание
- •4.6 Требования к отчету
- •4.7 Контрольные вопросы и упражнения
- •5 Лабораторная работа №5 «Работа с математическим сопроцессором в среде Assembler»
- •5.1 Основные сведения
- •5.2 Команды сопроцессора
- •5.2.1 Команды пересылки данных
- •5.2.2 Арифметические команды
- •5.3 Пример
- •5.4 Задание
- •5.5 Требования к отчету
- •5.6 Контрольные вопросы и упражнения
- •6 Лабораторная работа №6 «Программирование на языке ассемблера задач с использованием системных ресурсов bios. Работа в графическом режиме»
- •6.1 Графический режим
- •6.2 Прерывание bios int 10h для графики
- •6.3 Задание
- •6.4 Требования к отчету
- •6.5 Контрольные вопросы и упражнения
- •7 Лабораторная работа №7 «Работа с файлами в языке 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 Контрольные вопросы и упражнения
- •Список литературы:
1.5 Требования к отчету
Отчет лабораторной работы представляется в печатном виде.
Отчет должен содержать:
- титульный лист;
- содержание;
- цель лабораторной работы;
- вариант задания;
- исходный текст программы;
- результат в 16-тиричном и 10-тичном виде.
1.6 Контрольные вопросы и упражнения
1. Нарисуйте программную архитектуру микропроцессора.
2. Перечислите регистры микропроцессора с подробной характеристикой каждого регистра.
3. Перечислите основные флаги регистра flags с подробной характеристикой каждого.
4. Перечислите арифметические команды с подробной характеристикой каждой.
5. Перечислите логические команды с подробной характеристикой каждой.
6. Дано число в двоичном виде. Сделать 2,5,7-ой разряды единичными тремя способами.
7. Даны два числа в двоичном виде. Все четные разряды первого числа логически сложить с четными разрядами второго числа, а нечетные обнулить. Результат разделить на 4 и проинвертировать.
8. Дано число в двоичном виде. Разделить его на две составляющие: в первую войдут только четные разряды, во вторую только нечетные разряды. Их логически перемножить и результат умножить на 16.
9. Даны два числа в двоичном виде. Поменять местами четные разряды первого числа с нечетными разрядами второго числа. Первое умножить на 2, а второе разделить на 2. результаты логически сложить.
10. Даны два числа в двоичном виде. Поменять местами 7,6,5,1- разряды первого числа с 0,2,3,4 разрядами второго числа соответственно. Результаты логически сложить и умножить на 8.
11. Даны два числа в двоичном виде (первое число размером в байт , второе число размером в слово). Первое число умножить на 16 и в полученном значении обнулить 3,5 разряды. Результат сложить со старшей частью второго числа.
12. Дано двоичное число. В старшей части числа все четные биты заменить на противоположные. В младшей части числа все нечетные биты обнулить. Результат разделить на 16
13. Даны число в двоичном виде. В нем поменять местами старшую и младшую части числа.
14. Даны два числа в двоичном виде. Первое число умножить на 4. второе разделить на 2. Результаты логически сложить. 0-ой и 7-ой разряды, в полученном значении, поменять местами.
15. Дано число в двоичном виде. Поменять местами значения четных и нечетных разрядов.
16. Даны четыре числа в двоичном виде. Составить пятое число, которое состоит из 0-го и 1-го битов первого числа, 2-го и 3-го битов второго числа, 4,5-ые биты из третьего числа, 6,7-ой биты из четвертого числа.
2 Лабораторная работа №2 «Арифметические команды и команды переходов»
Цель работы: Приобретение навыков использования арифметических команд при программировании на языке ассемблера.
2.1 Получение символов с клавиатуры
Ввод информации с клавиатуры - один из основных способов взаимодействия с компьютером IBM PC. DOS обеспечивает ряд функций, с помощью которых программа на ассемблере может обрабатывать нажатия клавиш.
Возможно, одним из наиболее простых способов получения символов клавиш является функция "Ввод с клавиатуры", то есть функция DOS номер 1. Функции DOS вызываются путем помещения номера функции в регистр AH и выполнения затем инструкции INT 21h. (Действительная работа инструкции INT несколько более сложна, но сейчас вам требуется только знать, что каждый раз при вызове функции DOS вы должны выполнять инструкцию INT 21h.) Следующий набранный на клавиатуре символ возвращается в регистре AL.
Например, когда выполняется код:
mov ah,1
int 21h
операционная система DOS помещает следующий набранный на клавиатуре символ в регистр AL. Заметим, что если клавиша не нажата, DOS будет ждать, когда она будет нажата; поэтому для выполнения данной функции может потребоваться неопределенное время.