- •Московский институт электронной техники
- •Лабораторная работа 1.
- •Краткие теоретические сведения
- •Определение типа э в м.
- •Определение объема оперативной памяти.
- •Определение типа адаптера дисплея.
- •Ревизия периферийных устройств.
- •Домашнее задание.
- •Пример вызывающей программы
- •Управление выводом символов в си
- •Режим графики
- •Определение времени работы программы
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа n4 Методы защиты программ и данных краткие теоретические сведения
- •1. Шифрование путем замены.
- •2. Шифрование путем перестановок.
- •3. Шифрование с помощью ключа.
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа n 5 Отладчик d e b u g. Краткие теоретические сведения
- •Что такое debug
- •Команды debug
- •Некоторые команды ассемблера
- •Небольшие примеры
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа 6 Вывод точечной графики для ega адаптера. Циклы и процедуры в ассемблере. Краткие сведения о видеосистемах ibm pc.
- •Программа на ассемблере
- •Пример программы
- •Порядок выполнения работы
- •Лабораторная работа 7 Генерация звука краткие теоретические сведения
- •Пример программы
- •Домашнее задание
- •Небольшие примеры Создание файла
- •Домашнее задание
- •Порядок выполнения работы
- •Литература
Пример программы
TITLE GRAPF.EXE
STACKSG SEGMENT PARA STACK 'Stack'
DW 128 DUP(?)
STACKSG ENDS
DATASG SEGMENT PARA 'Data'
x0 dw 0
y0 db 0
len dw 0
hi dw 0
xy dw 0
color db 0
DATASG ENDS
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG,ES:NOTHING
RECT PROC FAR ;Подпрограмма для рисования прямоугольника
MOV AL,y0 ;Н-координата начала
MOV BL,80 ;Число байт в строке
MUL BL ;AL*BL->AX
ADD AX,x0 ;Прибавим смещение курсора
MOV xy,AX ;Сохраним
MOV CX,hi ;Высота прямоугольника (точек)
MOV SI,0 ;Смещение от угла
L2: PUSH CX ;Сохраним в стеке
MOV CX,len ;Ширина прямоугольника (байт)
MOV BX,xy ;Смещение от 0,0
MOV AL,color ;Цвет
L1: MOV ES:[BX][SI],AL ;вывод в видеобуфер
INC BX ;к следующему байту
LOOP L1 ;цикл в строке
ADD SI,80 ;прибавим длину строки
POP CX ;высоту стека
LOOP L2 ;цикл по строкам
RET ;возврат в программу
RECT ENDP
MAIN PROC
MOV AH,00 ;установим графический режим
MOV AL,10H ;640*350 точек
INT 10H
;установим адресацию к видеобуферу
MOV AX,0A000H
MOV ES,AX
MOV BX,0
;установим режим записи 2
MOV DX,3CEH ;адресный регистр контроллера
MOV AL,5 ;регистр режима
OUT DX,AL ;установка адресуемого регистра
MOV DX,3CFH ;регистр данных
MOV AL,2 ;режим 2
OUT DX,AL ;установка режима записи
;установим маску битов OFFH
MOV DX,3CEH ;адресный регистр контроллера
MOV AL,8 ;регистр маски битов
OUT DX,AX ;установка адресуемого регистра
INC DX ;регистр данных
MOV AL,OFFH ;все пикселы байта размаскировать
OUT DX,AL ;установка маски битов
MOV color,14 ;цвет
MOV hi,100 ;высота (в пикселах)
MOV len,16 ;ширина (в байтах)
MOV x0,30 ;X-координата начала
MOV y0,100 ;Y-координата начала
CALL RECT ;вызов процедуры
;завершаем программу
MOV AH,00H ;ввод с клавиатуры
INT 16H
CMP AL,00 ;проверка на <Enter>
JZ EXIT ;если да, то exit
EXIT:
MOV AH,00H ;установим текстовый режим
MOV AL,03H
INT 10H
MOV AX,4C00H ;код выхода
INT 21H
RET
MAIN ENDP
CODESG ENDS
END MAIN
