- •Московский институт электронной техники
- •Лабораторная работа 1.
- •Краткие теоретические сведения
- •Определение типа э в м.
- •Определение объема оперативной памяти.
- •Определение типа адаптера дисплея.
- •Ревизия периферийных устройств.
- •Домашнее задание.
- •Пример вызывающей программы
- •Управление выводом символов в си
- •Режим графики
- •Определение времени работы программы
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа n4 Методы защиты программ и данных краткие теоретические сведения
- •1. Шифрование путем замены.
- •2. Шифрование путем перестановок.
- •3. Шифрование с помощью ключа.
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа n 5 Отладчик d e b u g. Краткие теоретические сведения
- •Что такое debug
- •Команды debug
- •Некоторые команды ассемблера
- •Небольшие примеры
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа 6 Вывод точечной графики для ega адаптера. Циклы и процедуры в ассемблере. Краткие сведения о видеосистемах ibm pc.
- •Программа на ассемблере
- •Пример программы
- •Порядок выполнения работы
- •Лабораторная работа 7 Генерация звука краткие теоретические сведения
- •Пример программы
- •Домашнее задание
- •Небольшие примеры Создание файла
- •Домашнее задание
- •Порядок выполнения работы
- •Литература
Порядок выполнения работы
При выполнении всех операций используйте два числа:
- номер Вашей группы (число N1),
- Ваш номер по списку (N2).
Запустите отладчик Debug.
1. Cложите два числа N1 и N2, записав их в регистры.
2. Вычтите из N1 число N2.
3. Умножте N1 на N2.
4. Разделите N1 на N2.
5. Выведите на экран букву алфавита с номером N2.
6. Выведите на экран строку символов: - Фамилия Имя.
При выполнении пунктов 1-4 используйте режим трассировки T, записывая в конспект состояние регистров после каждой команды.
7. Запишите программу п.5 на диск как COM файл. Проверьте ее работу.
8. Попробуйте поэкспериментировать с отладчиком, решая свои примеры.
Лабораторная работа 6 Вывод точечной графики для ega адаптера. Циклы и процедуры в ассемблере. Краткие сведения о видеосистемах ibm pc.
Особенности различных видеосистем I B M описаны, например, в [ 1 ]. В работе мы ко-ротко рассмотрим, как выводится графическая информация в EGA. В 16 цветном режиме EGA использует 4 битовые плоскости для хранения информации о цвете каждой из 640*350 точек (каждая точка описывается 4-мя битами). Операции над содержимым битовых плоскостей выполняется не непосредственно, а через 4 регистра фиксатора, регистр палитры и регистр маски. Обмен с регистрами возможен порциями по 8 бит (1 байт). Чтобы задать цвет конкрет-ной точки в байте, остальные надо замаскировать с помощью маски.
Для подробного знакомства с EGA советуем прочитать [ Л1. стр. 228-283].
Программа на ассемблере
Типичная ассемблерная программа типа .EXE состоит из трех сегментов (частей):
- стек
- данные
- код.
Правила оформления можно увидеть в приведенном примере. Описание каждого сегмен-та заканчивается оператором ENDS.
1. Сегмент стека - содержит директиву DW (Define Word), описывающую 128 слов. Это размер стека. Cтрока описания сегмента содержит класс сегмента - 'STACK' и тип сегмента - STACK.
2. Сегмент данных - начало DATASG, класс 'DATA'. В нем приведено описание используемых в программе данных, например:
x0 dw (слово) 0 (значение)
y0 db (байт) 0 (значение)
z0 dd (двойное слово) ABCABCH (значение)
3. Сегмент кода - начало CODESG класс 'CODE' - программный.
Текст программного сегмента начинается с оператора ASSUME, который позволяет транслятору сопоставить сегментные регистры и адресуемые ими сегменты. Сама программа состоит из процедур. Программа из приведенного примера рисует на экране прямоугольник высотой hi = 100 точек и шириной len = 128 точек (16 байт) цветом color = 14. В программе две процедуры: RECT - рисование прямоугольника и MAIN - основная.
Процедура начинается с имени (MAIN) и оператора PROG. Назначение отдельных операторов понятно из коментариев. В программе x0 и y0 - координаты левого верхнего угла прямоугольника (x0 - в байтах, y0 - в пикселах (точках)). Оператор CALL вызывает соответст-вующую программу (у нас RECT).
Перед выходом из программы установим текстовый видеорежим.
Текст программы завершается директивой END, заканчивающей трансляцию. В качестве оператора этой директивы указывается точка входа в главную процедуры (MAIN).
В работе нам потребуется повторять процедуру построения прямоугольника несколько раз. Для этого можно использовать один из вариантов построения циклов. В примере рассмот-рены два способа решения тукой задачи.
ПРИМЕРЫ ПОСТРОЕНИЯ ЦИКЛОВ В АССЕМБЛЕРЕ
1. MOV CX, 4 ; задаем в CX счетчик циклов
L1: .................... ; внутренние
.................... ; операторы цикла
LOOP L1 ; уменьшить CX и повторить, если CX <> 0
2. MOV STEP, 4 ; задаем в STEP счетчик циклов
L1: ........................ ; внутренние
.......................... ; операторы цикла
DEC STEP ; уменьшим STEP
JNZ L1 ; повторим цикл, если STEP <> 0