Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для haseki
4 / 4 / 1
Регистрация: 02.11.2013
Сообщений: 164

Подобие гиперболы

26.11.2015, 14:15. Показов 768. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Задача состоит в том, чтобы вывести на экран нечто вроде графика гиперболы (2 ветви во 2 и 4 четвертях).
Есть код, который выводит что-то отдаленно напоминающее:

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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
Title polinom
.Model SMALL
.stack  256             ;сегмент стека 256 байт
.486                ;используем расширенную систему команд
.data               ;сегмент данных
mas_a DW 7, 10, -12, 6, 8       ;массив коэффициентов полинома ai
NAMBER DW 0         ; номер отсчета для значений Х
number dw 0
M DW 180
G DW -180               ; масштабный коэффициент для вывода графика
X DD -7.0
O DD -7.0               ; начальное значение аргумента Х
step DD 0.1             ; шаг изменения аргумента Х
N DW 4
L DW 2              ; порядок полинома
Y DD 0              ; переменная для хранения значения полинома
J DD 0
.code               ; сегмент кодов
;============== инициализация графического ре-жима============
InitGraph PROC 
    PUSHA               ;все регистры в стек
    MOV AH, 00                      ;установить режим экрана
    MOV AL, 13h             ;320x200x256
    INT 10h             ;средствами BIOS
    POPA                ;извлечение всех регистров общего назначения
    RET             ;возврат процедуры
InitGraph ENDP          ;конец процедуры
;============== закрытие графического режи-ма=================
CloseGraph Proc 
    MOV AX, 3           ;текстовый режим 25x80
    INT 10h             ;BIOS
    RET
CloseGraph ENDP 
;===============Очистка экрана============================ 
CLEAR PROC 
    PUSHA               ;все регистры общего назначения в стек
    MOV CX, 64000           ;число пикселов экрана
    MOV AX, 0A000h          ;адрес графической видеопамяти
    MOV ES, AX              ;в ES
    XOR DI, DI          ;очистка регистра DI
    CLD         ;df=0
    REP STOSB       ;сохранение строки байтов
    POPA
    RET
CLEAR ENDP
;===============ожидание нажатия клавиши==================     
 WaitKey PROC 
    PUSHA           ;поместить в стек все регистры
    MOV AH, 01h     ;ввод с клавиатуры 
    INT 21h         ;прерывание DOS
    POPA            ;снять все регистры из стека
    RET
WaitKey ENDP 
;===============РИСОВАНИЕ ОСЕЙ========================
Osi PROC
    PUSHA
    MOV CX, 10      ;начало горизонтальной
    MOV DX, 100     ;оси
    MOV AL, 00000110b   ;цвет оси желтый
o1: MOV AH, 12      ;вывод точки      
    INT 10h         ;вызов BIOS
    INC CX          ;построить 
    CMP CX, 300     ;300
    JNE o1          ;точек
;---------------------------------------------------------
    MOV CX, 160          ;начало вертикальной
    MOV DX, 0        ;оси
    MOV AL, 00000110b    ;цвет оси желтый
o2: MOV AH, 12       ;вывод точки
    INT 10h
    INC DX          
    CMP DX, 200     ;200 точек
    JNE o2
    POPA
    RET
Osi ENDP
;=================Вывод точки на экран (II четверть)===================
;ecx, edx - координаты точки, color - цвет
PutPixel PROC
    PUSHA; 
    MOV AL,02H  ;цвет пиксела
    mov EDX, 1300       ;номер строки 
    sub EDX, Y      ;вывода
    NOP         ;программная задержка
    MOV CX, -50     ;номер столбца 
    add CX, Namber      ;вывода
    NOP         ;программная задержка
    MOV AH,12       ;вывести пиксел
    INT 10h             ;на экран
    NOP
    POPA        ;извлечение всех регистров из стека
    RET
PutPixel ENDP
xor AL,al
xor ah,ah
;=================Вывод точки на экран (IV четверть)===================
;ecx, edx - координаты точки, color - цвет
PutPixel1 PROC
    PUSHA; 
    MOV AL,1EH  ;цвет пиксела
    mov EDX, 1570       ;номер строки 
    sub EDX, J      ;вывода
    NOP         ;программная задержка
    MOV CX, 50      ;номер столбца 
    add CX, Number      ;вывода
    NOP         ;программная задержка
    MOV AH,12       ;вывести пиксел
    INT 10h             ;на экран
    NOP
    POPA        ;извлечение всех регистров из стека
    RET
PutPixel1 ENDP
xor AL,al
xor ah,ah
;=====================Основная программа===============
Start:  mov AX, @DATA   ;начальная загрузка
    MOV DS, AX      ;регистра DS,инициализация сегмента данных
    call CLEAR      ;вызов процедуры очистки экрана
    call InitGraph      ;инициализация графического режима
    call Osi        ;построение осей
    call WaitKey        ;пауза
@2:mov CX, N        ;загрузить счетчик циклов
    xor SI,SI           ;для вычисления полинома
    finit           ;инициализировать сопроцессор
    fild mas_a[SI]      ;загрузить целое a1 в st(0)
    fld X           ;загрузить вещественное X в st(1)
@1:fmul         ;перемножть  st(0):=(st(0))*(st(1))
    inc SI          ;перейти к следующему
    inc SI          ;ai
    fiadd mas_a[SI]     ;добавить очередное ai к произведению
    fld X           ;загрузить X в st(1) 
    loop @1         ;перейти на метку, если CX не 0
    fxch st(1)          ;обменять st(0) и st(1)
    fidiv M         ;разделить на масштабный коэффициент M=180
    frndint         ;округлить до целого
    fistp Y         ;переслать (st(0)) в Y
    call PutPixel       ;вывести полученное значение на график
    fadd step           ;увеличить на шаг st(0):=(st(0))+0.1
    fstp X          ;сохранить st(0)+0.1 в память Z
    inc NAMBER      ;перейти к следующему отсчету по X
    cmp NAMBER,135      ;повторить еще 199 раз
    jnz @2      ;если CX<>0
 
xor cx, cx
@4:mov CX, N        ;загрузить счетчик циклов
    xor SI,SI           ;для вычисления полинома
    finit           ;инициализировать сопроцессор
    fild mas_a[SI]      ;загрузить целое a1 в st(0)
    fld o           ;загрузить вещественное X в st(1)
@3:fmul         ;перемножть  st(0):=(st(0))*(st(1))
    inc SI          ;перейти к следующему
    inc SI          ;ai
    fiadd mas_a[SI]     ;добавить очередное ai к произведению
    fld O           ;загрузить X в st(1) 
    loop @3         ;перейти на метку, если CX не 0
    fxch st(1)          ;обменять st(0) и st(1)
    fidiv G         ;разделить на масштабный коэффициент M=180
    frndint         ;округлить до целого
    fistp J         ;переслать (st(0)) в Y
    call PutPixel1      ;вывести полученное значение на график
    fadd step           ;увеличить на шаг st(0):=(st(0))+0.1
    fstp O          ;сохранить st(0)+0.1 в память Z
    inc NuMBER      ;перейти к следующему отсчету по X
    cmp NuMBER,130      ;повторить еще 199 раз
    jnz @4      ;если CX<>0
xor cx, cx
    call WaitKey        ;пауза
    call CloseGraph     ;закрыть графический режим
    MOV AX, 4C00h       ;и выйти
    INT 21h             ; в ДОС
    END Start
А именно вот такие графики полинома (см. вложение)
Как изменить программу, чтобы выводилась гипербола? Или хотя бы ее подобие
Миниатюры
Подобие гиперболы  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2015, 14:15
Ответы с готовыми решениями:

Подскажите подобие Hiew, желательно бесплатное
Подскажите, пож, какое-ниб подобие Hiew, желательно бесплатное или чтоб цена\качество соотв. Я думаю у меня из-за того что ломаная не хочет...

Исследование гиперболы
Вроде простейший график, только не пойму как средствами mathcad показать, что функция y=\frac{1}{x} является нечетной. Проверяю на четность...

Уравнение гиперболы
Застрял на последнем задании теста: Составить уравнение гиперболы, вершины и фокусы которой находятся в соответствующих вершинах и...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.11.2015, 14:15
Помогаю со студенческими работами здесь

Уравнение Гиперболы
Составьте уравнение гиперболы, зная, что расстояние между ее вершинами равно 24, а фокусы F1(-8;3) и F2(18;3)

График гиперболы
Как построить график гиперболы? функция y = k/x &quot;К&quot; вводишь в текстовое поле и строится гипербола.

Написать уравнение гиперболы
Написать уравнение гиперболы, зная четыре точки (2,2) (4,0), (2.8,−0.4), (3.2,2.4) пересечения ее директрис и асимптот.

Найти вершины гиперболы
Уважаемые математики, добрый вечер, подскажите, я правильно нашел вершины гиперболы? Дано каноническое уравнение: ...

Уравнение гиперболы по фокусам
Здравствуйте! Необходимо составить уравнение гиперболы, фокусами которой являются точки (1;-0,5) и (5;-1) (разность расстояний равна 2)....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
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