![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
ShadowMaverick |
![]()
Сообщение
#1
|
Гость ![]() |
:D VESA графика из под виндовс не работает
почему кто знает ----- из по DOS работает а из под WINDOWS нет почему ???? ----- при установыке пользуюсь ASM функциями mov ah,4fh mov al,2h mov bx,10eh ;320*200 65536 color ------ режимов много есть и на 16 млн цветов |
![]() ![]() |
Dark |
![]()
Сообщение
#2
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Обьясняю так:
Я сохраняю адрес картинки в ds:si, адрес точки куда выводить - es:di mov di,10000 - это то же, что в твоем примере mov bx,10000 т.е. будет выводиться по адресу A000h:10000 (адрес первой точки) Значение сегмента ds сохраняется потому, что если его потом не востановить - будут глюки в паскале (можешь попробовать его закоментировать) Далее собственно у меня цикл типа for i:=0 to 10 do for j:=0 to 10 do команда movsb помещает содержимое ds:[si] в es:[di] и увеличивает si и di на 1. Т.е я фактически помещаю точку из массива color на экран :-) в сх я храню кол-во линий, в dx - колво точек в линии. Рисую я по линиям: @l1: movsb loop @l1 И еще : заметь, у меня команда pop cx loop @l2 уменьшает cx на 1, а далее я это изменение СОХРАНЯЮ! (push cx) add di,309 - адрес следующей строки (320-11) Ну разбирайся... ;D -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 20:37 |