IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Графика в Tasm, Как в графическом режиме рисовать?
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8

Репутация: -  0  +


Ну вошел я в графический режим:
         mov ax, 4F02h
         mov bx, 0101h
         int 10h

Ну вышел:
         mov ax, 0003h
         int 10h

А дальше что? Рисовать как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


стало быть это VESA 256 color 640*480
------------
тут если я неошибаюсь будет несколько окон для вывода их нкжно будет переключать - передвигать
 mov ah,4fh
 mov al,05
 mov bh,0
 mov bl,0        ;номер окна
 mov dx,si        ;адрес окна в едницах шага шаг кратен размеру окна
 int 10h


-----------------
Вот пример режим 320*200 16-милионов цветов
.MODEL SMALL
.STACK 100H
.DATA
windows db 0  ;deskriptor step winodw

x	dw 150;The first coordinate on X   |
y	dw 100;The first coordinate on Y   |Matrix of color from 0..20 on 20
x1	dw 170;the second coordinate for X |
y1	dw 120;the second coordinate for Y |

xx	dw 0;Coordinates for a conclusion of a point
yy	dw 0;

color	dd 1h;color

deskr_buf dw 398;Quatity of points т/к/ есть разница 0 до 20 или 1 до 20
des_x	db 20;descriptor X coord
des_y	db 20;-=-=-=-=-=

image_buf dd 126 dup(00fff1ffh),147 dup(000000ffh),126 dup(00ff0001h);Bufer for color

.CODE
START:
.386
	mov ax,@data;Adjust the data on segment 
	mov ds,ax;of the data
;------------------------------------------------
	mov ax,4f02h;фунция VESA
	mov bx,10fh;режим 320*200 16-милионов цветов
	int 10h  ;BIOS video interrupt
  ;
	mov ax,0a000h;video memory adress
	mov es,ax;init es for video memory
	lea di,image_buf;адрес картинки в регистр DI
;------------------------------------------------------------------
	mov ax,[x]
	mov [xx],ax
	mov ax,[y]	
	mov [yy],ax
	
new_pset:  ;
	cmp [deskr_buf],0;сравнение на ноль кончился ли массив
	je end  ;если кончислся то на конец программы
	jmp matrix;на вывод матрицы
end:  ;
	call Wait_Key;ждем клавиши 
	call Exit;выходим
matrix:  ;

	mov eax,[di];получаем цвет
	mov [color],eax;

	call OutPixel;на вывод пикселя первый пиксель
	mov bx,[x1]
	cmp [xx],bx;сравниваем не кончилась ли координата ХХ
	je a_x  ;если больше то на модификацию
	jmp no_ax;нет на вычеричивание по Х
a_x:  ;
	add di,4;меняем положение бегунка в буффере цвета
	mov ax,[x];востанавливаем координату Х 
	mov [xx],ax;-=-=-=
	inc [yy];увеличиваем У
	dec [deskr_buf];уменьшаем дескриптор
	jmp Out_P
no_ax:  ;
	inc [xx];увеличиваем Х
	add di,4;меняем положение бегунка в буффере цвета
	dec [deskr_buf];уменьшаем дескриптор буффера 

;------------------------------------------------------------------
Out_P:
	call OutPixel
	jmp new_pset
;------------------------------------------------------------------

exit proc near
	mov ah,4ch;
	mov al,0; -EXIT to DOS;
	int 21h;
exit endp;

OutPixel proc near
	call mov_w0;всегда начинаем вывод с нулевого окна
	mov ax,1280;1280 количество точек по X т/к/ цвет разме
  ;-щается в видео памяти в 32 расзрядах в 4 байтах
	mul yy  ;умножаем на У
	jc corect;если переполнение то коректир
;============================================
	shl xx,2  ;сдвиг влева корректир т/к/ 4 байта на цвет точки
	add ax,xx;конечный результат сумма 
	adc dx,0	
	jc corect1;если переполнение то на корректировку
	cmp dx,1
	je corect1 
	mov si,ax;теперь адресуем видео память
;на полученый результат
out:	
	mov ebx,color;цвет
	mov es:[si],ebx;ставим точку
	shr xx,2  ;так как мы изменили Х то возвращаем его взад
	jmp ex_t;выходим
corect:	

	shl xx,2  ;сдвиг на 2 умножаем на 4
	add ax,xx;в ax конечный результат
	adc dx,0
corect1:
	mov si,ax;в si ax
	cmp dx,2
	je corect2	
	cmp dx,3
	je corect2
not_cor:
	
	call mov_w1;двигаем окно на 1 шаг
	jmp out  ;на вывод точки
corect2:
	cmp dx,3
	jz corect3
	call mov_w2
	jmp out
corect3:
	call mov_w3
	jmp out
ex_t:
	ret  ;выход из процедуры вывода точки
  ;обратно в Брезенхейм
OutPixel endp

mov_w0 proc near;movenay to window
	mov ah,4fh;in step zero
	mov al,05;62454
	mov bh,0;---------
	mov bl,0;---------
	mov dx,0;переносим окно на один шаг 
	int 10h
	mov windows,0
	ret
mov_w0 endp
mov_w1 proc near
	mov ah,4fh;
	mov al,05;62454
	mov bh,0;---------
	mov bl,0;---------
	mov dx,1;переносим окно на один шаг 
	int 10h
	mov windows,1
	ret
mov_w1 endp
mov_w2 proc near
	mov ah,4fh;
	mov al,05;62454
	mov bh,0;---------
	mov bl,0;---------
	mov dx,2;переносим окно на один шаг 
	int 10h
	mov windows,2
	ret
mov_w2 endp
mov_w3 proc near
	mov ah,4fh;
	mov al,05;62454
	mov bh,0;---------
	mov bl,0;---------
	mov dx,3;переносим окно на один шаг 
	int 10h
	mov windows,3
	ret
mov_w3 endp

wait_key proc near
	mov ah,0
	int 16h
	ret
wait_key endp

END START


Сообщение отредактировано: volvo -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


Луче разобрать что по проще напрмер
320*200 256 цветов
mov ax,0013h  ;режим
int 10h
mov ax,0a000h ;адрес видеопамяти
mov es,ax
mov es:[si],bl   ;es:[si] пара указывающая на видеопамять
                       ; а SI индекс чтобы гулять по ней

координаты точки расчиываюия так
для Y = Y*320 т.е. введенное Y умнож на 320 т.к. всего по Х 320
для X = Y+x а потом к нему приб введеное X это будет адресс точки
в видеопямяти куда и помещвем цвет вот примерно так
.MODEL SMALL
.STACK 100H
.DATA
y_co dw 199
x_co dw 319


.CODE
START:



	call _in_gr13h;init video memory and data
	
	mov ax,320;
	mul y_co;movenay Y
	
	
	mov bx,ax;
	
	add bx,x_co;movenay X
	
	cmp dx,0
	jne exit	
	
	xor ax,ax

	mov al,4;Єа б­л(c)
	mov es:[bx],al
	call _wait_key
exit:
	call _exit_p

;-------------------------------------------
;-------------------------------------------
;-------------------------------------------
_in_gr13h proc near
	mov ax,013h
	int 10h
	mov ax,0a000h
	mov es,ax
	xor ax,ax
	mov ax,@data
	mov ds,ax
	xor ax,ax
	ret
_in_gr13h endp

_wait_key proc near
	mov ah,0
	int 16h
	ret
_wait_key endp

_exit_p proc near
	mov ah,4ch;|\
	mov al,0;| -EXIT to DOS;
	int 21h	;|/
_exit_p endp

END START


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


ЧТО НЕПОНЯТНО СПРАШИВАЙ smile.gif


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Слушай, shadow, напиши демку какую нибудь =)


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


какую демку если какое нить вращение то в чистом ASM это занудно одна обработка чисел с плавающ запятой займет кучу времени
-=-=-=
хотя можно брать тлько целые и хотя взависимости от проца уже на машинном
уровне есть функции SIN и COS начиная с 3 пентиума
-=-=-=
так что писать если выкраду время то с МОНСТРЯЧУ чтонить huh.gif smile.gif


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


плазму можешь?
на тему sin cos создается таблица в файле, он считывается - и уже не надо вычислять => приложение быстрее


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


кстати насчет плазмы если у тебя есть DOS NAVIGATOR то там уже есть готовая
правда откомпилированная программка SCR_SAVER
-=-=-=-=-=-=-=-=
правда никогда не задавался этим вопросом smile.gif поэтому незнаю смогу или нет
но поробовать можно
-=-=-=-=-=-=-=--=
вообще мы отошли ..... куда-то всторону smile.gif
и куда пропал сам человек IVR


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Хих
от темы?
графика? графика :D в асме? в асме lol.gif и все, т.е. это по темы (все по заголовку)


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10





Группа: Пользователи
Сообщений: 8

Репутация: -  0  +


:D
Спасибо Shadow!
Помогло, разобрался.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Best Online Drugstore
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 8.04.2025 14:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name