Скачиваний:
29
Добавлен:
18.12.2018
Размер:
176.48 Кб
Скачать

Int 10h ;средствами bios.

popa

ret

Point ENDP

;============ Закрашивание экрана цветом фона ==============

Fon PROC

pusha

mov CX, 0 ;x

mov DX, 0 ;y

mov AL, 00h ;Цвет фона - черный

mov BH, 0 ;Номер страницы.

c_1: mov AH, 12 ;Вывести пиксел

Int 10h ;средствами bios.

inc CX ;+1

cmp CX, 319 ;размер экрана 320*200

jne c_1 ;если не ноль и не равно то переход

xor CX, CX ;исключающего ИЛИ 1 0(1) =1

inc DX ;+1

cmp DX, 199 ;сравнение (изменение флага zf)

jne c_1 ;если не ноль и не равно то переход

popa

ret

Fon ENDP

;================ Вывод символа ========================

Simv PROC

pusha

mov AH, 02 ;Функция установки курсора.

mov BH, 0 ;Номер текущей страницы.

mov DL, 30 ;Номер столбца.

mov DH, 7 ;Номер строки.

int 10h ;Установка курсора.

lea SI, xc_yc ;Загрузить смещение строки в SI.

c_2: mov AH, 0Eh ;Функция вывода символа.

mov BL, 84h ;Выбор цвета символов.

lodsb ;Переслать символ из строки DS:SI в AL.

cmp AL, '$' ;Определить конец строки.

je exit_pr ;Если конец строки достигнут, выход.

int 10h

jmp c_2

exit_pr: popa

ret

Simv ENDP

;=============== Ожидание нажатия клавиши ===============

WaitKey PROC

pusha

mov AH, 08h

int 21h

popa

ret

WaitKey ENDP

;=============== Главная процедура =======================

Main PROC

;Подготовка данных

mov AX, @DATA ;Инициализация

mov DS, AX ;регистра DS.

mov AH, 0 ;Установка графического

mov AL, 0Dh ;режима 320x200x16

Int 10h ;средствами bios.

call Fon ;Вызов процедуры закрашивания фона.

call WaitKey ;Вызов процедуры задержки.

mov CX, x36 ;Число шагов построения окружности.

finit ;Инициализация сопроцессора.

fldpi ;Загрузка в стек числа pi.

fld x360 ;Загрузка в стек числа 180.

fdiv ;pi/180, результат в ST(0).

fstp x360 ;Сохранение в памяти коэффициента

;перевода градусов в радианы.

;--------------- Вычисление координат точек окружности ---------

do: fld x360 ;Коэффициент градус->радиан в стек.

fild angl ;Очередное значения угла в стек.

fmul ;Перевод в радианы.

fsincos ;sin(x) -> st(1), cos(x) -> st(0).

fild rx ;Загрузка радиуса по координате x.

fmul ;Вычисление координаты x=rx*cos(angl).

fistp x ;Запись ее в память в формате целого

;числа с извлечением из стека.

fild ry ;Загрузка радиуса по координате y.

fmul ;Вычисление координаты y=ry*sin(angl).

fistp y ;Запись ее в память в формате целого

;числа с извлечением из стека.

fwait ;Ожидание завершения работы сопроцессора.

call Point ;Вывод точки на экран.

inc Angl ;Приращение угла.

loop do ;Повторить цикл, пока CX не 0.

call Simv

call P

call WaitKey

mov AX, 4C00h ;Выход в

int 21h ;DOS.

Main ENDP

END Main

Соседние файлы в предмете Автоматизированные информационные системы