Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
 
Gasssss
1 / 1 / 0
Регистрация: 02.12.2014
Сообщений: 66
#1

Олимпийские кольца разных цветов - Assembler

21.11.2016, 15:25. Просмотров 413. Ответов 2
Метки нет (Все метки)

Здраствуйте
Как в ассемблере реализовать Олимпийские кольца.
5 окружностей, разных цветов.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 15:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Олимпийские кольца разных цветов (Assembler):

Програма выводит на экран 4 прямоугольника разных цветов
програма выводит на экран 4 прямоугольника разных цветов, при работе программы...

Нарисовать 3 прямоугольниа разных цветов в каждом из них написать цвет
Нарисовать 3 прямоугольниа разных цветов в каждом из них написать цвет

выводит на экран 4 прямоугольника разных цветов, при работе программы произвольно изменяются цвета
Написать программу, которая выводит на экран 4 прямоугольника разных цветов,...

Номера цветов
Подскажите, пожалуйста, каким номерам какие цвета соответствуют в видеорежиме...

Олимпийские кольца
помогите пожалуйста :( Олимпийские кольца. Необходимо вывести на экран цветное...

Олимпийские кольца
Цель работы - создать программу, которая на поверхности формы рисует...

2
ФедосеевПавел
Модератор
3414 / 1911 / 815
Регистрация: 01.02.2015
Сообщений: 6,451
22.11.2016, 00:25 #2
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

Пять раз нарисовать окружность разными цветами.
Вот пояснения в FAQ - http://www.cyberforum.ru/post4641789.html
там алгоритм Брезенхема (https://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма).

А такой пример из книги я когда-то набирал и, скорее всего, немного менял (подгонял под геометрию монитора). Здесь "дубовое" вычисление параметрической функции "окружность"
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
;Пример из книги:
;Рудаков П.И., Финогенов К.Г. программируем на языке ассемблера IBM PC - Изд. 2-е. - Обнинск:
;Издательство "Принтер", 1997.-584 с., илл.
 
;Пример 84.1. Вычисление координат точек, расположенных на окружности
;и вывод их на экран
 
.386
 
data    segment use16
 
x360            dd      180.0           ;константа перевода градусы-радианы
x36             dw      360             ;число точек на окружности
forcolor        db      10              ;салатовый цвет
;Координаты центра окружности
xc              dw      320
yc              dw      175
;Значение радиуса по осям
ratiox          equ     16              ;Соотношение строн монитора: 4:3 или 16:9
ratioy          equ     9
sizex           equ     640             ;Размер экрана при режиме 10h: 640x350
sizey           equ     350
_rx             equ     100
;_ry            equ     (_rx*ratiox*sizey)/(ratioy*sizex)       ;<-- Так будет переполнение и неверный результат
_ry             equ     (((_rx*sizey)/ratioy)*ratiox)/sizex
 
rx              dw      _rx             ;100
ry              dw      _ry             ;70
;Переменные
x               dw      ?               ;Текущие координаты точки окружности
y               dw      ?
angl            dw      1               ;Текущее значение угла
 
data    ends
 
text    segment use16
        assume CS:text, DS:data, SS:stk
;Подпрограмма изменения цвета пиксела
point           proc
 
        push    CX
        mov     CX, xc
        mov     AH, 0Ch
        mov     AL, forcolor
        mov     BH, 0
;       fld     yc1                     ;Это универсальная процедура расчитана на
;       fistp   yc                      ;несколько примеров, поэтому в ней присутствуют
                                        ;"лишние" команды и ссылки на несуществующие переменные
        mov     DX, yc
;       fld     xc1
;       fistp   xc
        mov     CX, xc
        sub     CX, x
        sub     DX, y
        int     10h
        pop     CX
 
        ret
 
point           endp
 
;Главная процедура
main            proc
 
        mov     AX, data                ;Инициализация регистра DS
        mov     DS, AX
 
        mov     AH, 0h                  ;Установка графического режима
        mov     AL, 10h         ;Режим 10h (640x350)
        int     10h
 
        mov     CX, x36         ;Число шагов построения окружности
 
        finit                           ;Инициализация сопроцессора
        fldpi                           ;Загрузка в стек числа pi
        fld     x360                    ;Загрузка в стек числа 180
        fdiv                            ;pi/180, результат в ST
        fstp    x360                    ;Сохранение в памяти коэффициента
                                        ;перевода градусов в радианы
;Вычисление координат точек и вывод рисунка
do:
        fld     x360                    ;Коэффициент градус-радианы в стек
        fild    angl                    ;Очередное значение угла в стек
        fmul                            ;перевод в радианы
 
        fsincos                 ;sin(x) -> ST(1), cos(x) -> ST(0)
 
        fild    ry                      ;Загрузка радиуса по координате y
        fmul                            ;Вычисление координаты y
        fistp   y                       ;Запись её в память в формате целого
                                        ;числа с звлечением из стека
        fild    rx                      ;Загрузка радиуса по координате x
        fmul                            ;Вычисление координаты x
        fistp   x                       ;Запись её в память в формате целого
                                        ;числа с звлечением из стека
        fwait                           ;Ожидание завершения работы сопроцессора
 
        call    point                   ;Вывод точки на экран
 
        inc     angl                    ;Приращение угла
 
        loop    do
 
;Задержка до нажатия клавиши
        mov     AH, 8
        int     21h
 
        mov     AX, 4C00h               ;Выод в DOS с кодом ошибки 0
        int     21h
 
main            endp
 
text    ends
 
stk     segment stack   'stack'
        db      1024 dup(?)
stk     ends
 
end     main
1
Gasssss
1 / 1 / 0
Регистрация: 02.12.2014
Сообщений: 66
22.11.2016, 14:13  [ТС] #3
Спасибо, сделал. То что надо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 14:13
Привет! Вот еще темы с решениями:

Олимпийские кольца! помогите!
Програма вырисовует на канве Олимпийские кольца разного цвета, причем кольца...

Олимпийские кольца (Builder6)
Олимпийские кольца Image1-&gt;Canvas-&gt;Pen-&gt;Width = 8; ...

Нарисовать олимпийские кольца
Составьте программу рисования 5 разноцветных олимпийских колец (верхний ряд:...

Есть н цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их названия вводит пользователь
Есть n цветов разных видов. Составьте все возможные сочетания букетов из всех...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru