- •Московский институт электронной техники
- •Лабораторная работа 1.
- •Краткие теоретические сведения
- •Определение типа э в м.
- •Определение объема оперативной памяти.
- •Определение типа адаптера дисплея.
- •Ревизия периферийных устройств.
- •Домашнее задание.
- •Пример вызывающей программы
- •Управление выводом символов в си
- •Режим графики
- •Определение времени работы программы
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа n4 Методы защиты программ и данных краткие теоретические сведения
- •1. Шифрование путем замены.
- •2. Шифрование путем перестановок.
- •3. Шифрование с помощью ключа.
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа n 5 Отладчик d e b u g. Краткие теоретические сведения
- •Что такое debug
- •Команды debug
- •Некоторые команды ассемблера
- •Небольшие примеры
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа 6 Вывод точечной графики для ega адаптера. Циклы и процедуры в ассемблере. Краткие сведения о видеосистемах ibm pc.
- •Программа на ассемблере
- •Пример программы
- •Порядок выполнения работы
- •Лабораторная работа 7 Генерация звука краткие теоретические сведения
- •Пример программы
- •Домашнее задание
- •Небольшие примеры Создание файла
- •Домашнее задание
- •Порядок выполнения работы
- •Литература
Порядок выполнения работы
1. Набейте в редакторе приведенный пример (пусть это будет файл PRIMER.ASM)
2. Оттранслируйте его: TASM PRIMER; (на диске появится файл PRIMER.OBJ.)
3. Скомпонуйте программу: TLINK PRIMER; (на диске появится файл PRIMER.EXE)
4. Убедитесь в работоспособности программы.
5. Измените программу так, чтобы она рисовала на экране 16 прямоугольников разного цвета (от 0 до 15) размером hi = 50, len = 8, x0 = 3, y0 = 20, шаг по оси X равен 8 байт, а по оси Y - 30 точек.
Примечание: если не указано h, то ассемблер считает числа десятичными.
Лабораторная работа 7 Генерация звука краткие теоретические сведения
Динамиком IBM можно управлять в двух режимах, задаваемых значениями двух битов выходного регистра ПИПУ (программируемый интерфейс периферийных устройств). Эта микросхема содержит три 8-битовых регистра: два из них используются для операции ввода данных, а один для вывода. Входным регистрам присвоены номера портов ввода-вывода 60Н и 62Н, выходному регистру присвоен номер порта ввода-вывода 61Н. Если бит 0 выходного регистра ПИПУ равен 1, то микросхема таймера задает частоту звучания динамика. Если бит 1 равен 1, то динамик начинает издавать звук и звучит до тех пор, пока бит 1 не станет равным 0. Загрузка в таймер значения 533Н (десятичного числа 1331) приводит к генерации тона с часто-той 1000 Гц. Следовательно, для генерации тона другой частоты нужно умножить заданную частоту на 1,331 и полученное значение загрузить в таймер через регистр АХ с помощью реги-стра DI (см. пример процедуры SOUND).
Кроме частоты звука необходимо задавать и его длительность. Звучание динамика в тече-нии 10 мс можно генерировать с помощью двух команд:
SPON: MOV CX,2801
LOOP SPON
где 2801 - число повторений цикла , при котором этот фрагмент исполняется 10мс (см. пример процедуры SOUND, длительность звучания зависит и от тактовой частоты процессора).
Частоты для первой октавы (в герцах);
-
Нота
До
Ре
Ми
Фа
Соль
Ля
Си
Частота
130,8
146,8
164,8
174,6
196,0
220,0
246,9
Пример программы
;Процедура заставляет динамик IBM издавать тон заданной частоты и длительности.
;Перед вызовом загрузите частоту в регистр DI,
;а длительность в регистр BX. Значение всех регистров сохраняется
SOUND PROC
PUSH AX
PUSH BX ;Сохранить значения регистров
PUSH CX
PUSH DX
PUSH DI
MOV AL,0B6H ;Записять в регистр режим таймера
OUT 43H,AL
MOV DX,14H ;Преобразовать частоту
MOV AX,4F38H ;в число, понятное
DIV DI ;для таймера
OUT 42H,AL ;Записать младший байт счетчика таймера 2
MOV AL,AH
OUT 42H,AL ;Записать старший байт счетчика таймера 2
IN AL,61H ;Считать текущую установку порта В
MOV AH,AL ;и сохранить ее в регистре АН
OR AL,3 ;Включить динамик
OUT 61H,AL
WAIT: MOV CX,2801 ;Выждать 10 мс
SPON: LOOP SPON
DEC BX ;Счетчик длительности исчерпан?
JNZ WAIT ;Нет, продолжить звучание
MOV AL,AH ;Да,восстановить исходную установку порта
OUT 61H,AL
POP DI ;Восстановить значения регистров
POP DX
POP CX
POP BX
POP AX
RET ;Выйти из программы
SOUND ENDP
Пример считывания нажатой клавиши
MOV AH,0 ;Считать нажатую
INT 16H ;клавишу
CMP AL,'q' ;Нажата клавиша 'q'?
JE DO ;Да, перети на метку DO (нота До)
... ;Нет, сделать что-либо еще
DO: MOV DI,131 ;Задать частоту
MOV BX,50 ;Задать длительность
CALL SOUND ;Вызвать SOUND
