Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 02.12.2014
Сообщений: 66

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

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

Студворк — интернет-сервис помощи студентам
Здраствуйте
Как в ассемблере реализовать Олимпийские кольца.
5 окружностей, разных цветов.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2016, 15:25
Ответы с готовыми решениями:

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

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

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

2
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4491 / 1669
Регистрация: 01.02.2015
Сообщений: 13,900
Записей в блоге: 12
22.11.2016, 00:25
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

Пять раз нарисовать окружность разными цветами.
Вот пояснения в FAQ - https://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
1 / 1 / 0
Регистрация: 02.12.2014
Сообщений: 66
22.11.2016, 14:13  [ТС]
Спасибо, сделал. То что надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2016, 14:13
Помогаю со студенческими работами здесь

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

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

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

Вывести на экран рисунок "Олимпийские кольца"
добрый вечер, уважаемые программисты. помогите, пожалуйста, написать программу на C++ Builder XE4 (визуальный режим). задание: нужно...

"Олимпийские кольца": прозрачность и смена цвета
Всем привет,создал кольца,но не знаю как их сделать прозрачными и как привязать смену цвета к клавишам. Надеюсь на помощь) Само...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru