- •Лабораторная работа №8
- •1. Цель работы.
- •2. Рекомендуемая литература.
- •3. Контрольные вопросы.
- •Часть 1. Формирование изображения и текстовой надписи на экране дисплея
- •4. Подготовка к работе.
- •5. Порядок выполнения работы.
- •Часть 2. Вывод графика функции.
- •4. Подготовка к работе.
- •4.1. Изучить методические указания к лабораторной работе.
- •5. Порядок выполнения работы
- •6. Пример программы.
- •7. Общие положения
Часть 2. Вывод графика функции.
4. Подготовка к работе.
4.1. Изучить методические указания к лабораторной работе.
4.2. Подготовить ответы на контрольные вопросы.
4.3. Проанализировать пример программы GRAFIC , приведенной ниже и реализующей вывод графика функции, последовательность значений которой определена в сегменте данных в виде массива MAS.
4.4. Разработать новую программу для вывода графика функции, заданной в сегменте данных массивом значений FUNC. Заметим, что значения функции следует пронормировать путем деления на некоторый коэффициент с тем, чтобы максимальное значение не превышало допустимого отклонения координаты Y на экране дисплея в обе стороны от начала координат.
4.5. Кроме того, в новой программе следует:
перенести начало осей координат в центр экрана;
обеспечить, чтобы значению Х=0 соответствовало значение седьмого (центрального) элемента массива;
сформировать стрелочки на концах осей координат и вывести их наименование символами X и Y ;
задать другой цвет осей и графика.
Коды символов: 1АН – горизонтальная стрелка вправо;
18Н – вертикальная стрелка вверх.
5. Порядок выполнения работы
5.1. Используя текстовый редактор, создать текстовый файл, получить исполняемый файл сначала для программы GRAFIC , а затем для программы, разработанной в соответствии с домашним заданием.
5.2. Проверить работоспособность обеих программ.
6. Пример программы.
Title GRAFIC
datasg segment para
MAS db 0,1,5,8,9,8,5,1,0,-1,-5,-8,-9,-5,-1
FUNC dw -450, -350, 0, 250, 375, 400, 420, 360,
dw 325, 300, 285, 200, 0 –200, -275
datasg ends
stacksg segment para stack 'stack'
db 128 dup (?)
stacksg ends
codesg segment para 'code'
ASSUME SS: stacksg, CS: codesg, DS: datasg
start: MOV AX, DATASG
MOV DS, AX
; ЗАДАНИЕ РЕЖИМА ЭКРАНА С ОЧИСТКОЙ
MOV AH, 00H
MOV AL, 03H ; цветной, 25 Х 80
INT 10H
; ИЗОБРАЖЕНИЕ ВЕРТИКАЛЬНОЙ ОСИ
MOV BH, 00H
MOV DL, 5 ;координаты верхней точки Х=5,
MOV DH, 1 ; Y =1.
met1: MOV AH, 02H
INT 10H ; установка курсора
MOV CX, 1
MOV AL, 7CH; символ вертикальной черточки
MOV BL, 07H; яркобелый по черному
MOV AH, 09H
INT 10H ; вывод символа
INC DH ;переход к координате Y+1
CMP DH, 24 ;сравнение с нижней позицией
JB met1 ; цикл вывода символа
; ИЗОБРАЖЕНИЕ ГОРИЗОНТАЛЬНОЙ ОСИ
MOV BH, 00H
MOV DL, 5 ; координаты левой позиции Х=5,
MOV DH, 12 ; Y=12.
MOV AH, 02H
INT 10H ; установка курсора
MOV CX, 50 ; длина цепочки символов
MOV AL,5FH ; символ горизонтальной черточки
MOV BL, 07H; яркобелый по черному
MOV AH, 09H
INT 10H ; вывод символа
; ВЫВОД ТОЧЕК ГРАФИКА
LEA SI, MAS ; адрес массива значений
MOV DI, 15 ; счетчик циклов
MOV CX, 1 ; вывод по одному символу
MOV BH, 00H
MOV DL, 5 ; координаты первой точки X=5,
cikl: MOV DH, 12 ; Y=12.
SUB DH, [SI] ; вычисление Y(i)
MOV AH, 02H
INT 10H ; установка курсора
MOV AL, 2AH; символ (*)
MOV BL, 0CH; яркокрасный по черному
MOV AH, 09H
INT 10H ; вывод символа
ADD DL,3 ; следующая координата по Х
INC SI ; адрес следующего значения
DEC DI ;изменение счетчика циклов
JNZ cikl ; цикл вывода
;ЗАВЕРШЕНИЕ ПРОГРАММЫ
MOV AX, 4C00H
INT 21H
CODESG ENDS
END start