Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2011, 16:16   #21
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

push 0x0A000
pop es
mov al, 13h
int 10h
stosw
mov cx, 320 * 200 / 2
@ @:
rdtsc
mov bp, ax
stosb
loop @b

ребят поясните етот код..
push 0x0A000
pop es
ето пересылка по стеку.. в ес теперь адрес..

mov al, 13h
int 10h
вывод строки символов..

stosw
а ето что??! не могу понять зачем ето тут..
и rdtsc..
и все остальное..
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 19.08.2011, 18:32   #22
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

asmars
Единственное, что тут может быть непонятно, так это stosw, старый грязный хак для обнуления di.
SnX вне форума Ответить с цитированием
Старый 19.08.2011, 18:41   #23
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
какая скорость и что с ней не так?
если нужно поставить всего одну точку разница почти не заметна.
а вот если блочная операция, то сильно заметна разница.
Цитата:
ну я так и понял, ок.
я делаю вид что её нет, потому что считаю что лучше применять прямую работу с видеопамятью + у меня нет привычки к BIOS-прерываниям, ибо обычно работаю в P32 режиме.(в R ставлю только видеорежим обычно+первичный лоадер)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.08.2011, 19:29   #24
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Цитата:
я делаю вид что её нет, потому что считаю что лучше применять прямую работу с видеопамятью + у меня нет привычки к BIOS-прерываниям, ибо обычно работаю в P32 режиме.(в R ставлю только видеорежим обычно+первичный лоадер)
Делайте что хотите, не надо только людей в заблуждение вводить. Пример выше как раз показывает прямую работу с видеопамятью.
SnX вне форума Ответить с цитированием
Старый 19.08.2011, 19:46   #25
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Пример выше как раз показывает прямую работу с видеопамятью.
а вы вообще где увидели что я про ваш пример чтото говорил?
Цитата:
Делайте что хотите, не надо только людей в заблуждение вводить.
давайте вы всетаки не будете мои слова переиначивать.

я ему про функцию 0Ch(в винапи аналог SetPixel), а он мне про свой пример...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.08.2011, 19:50   #26
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Все понятно. Слив засчитан.
SnX вне форума Ответить с цитированием
Старый 19.08.2011, 20:06   #27
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

какой слив?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.08.2011, 21:05   #28
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

ребят поясните код.. принцип.. я вообще не понимаю при чем здесь регистр di.. и так далее.

push 0x0A000
pop es
mov al, 13h
int 10h
stosw
mov cx, 320 * 200 / 2
@ @:
rdtsc
mov bp, ax
stosb
loop @b
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 23.01.2015, 15:35   #29
kovalexius
 
Регистрация: 12.11.2014
Сообщений: 4
По умолчанию Чувак, у меня тоже такая идея раньше была.

Я тоже когда учился в инсте и впервые увидел первые поколения видеоускорителей 3D графики задался вопросом, а как выглядят двоичные машинные команды при выводе 3D?
Но ответа не нашел.

То что происходит, скажем, при вызове функции glVertex3f я думаю можно посмотреть в отладчике уровня ядра(WinDbg).

Парень, я не помню точно кода но то что удалось нагуглить счас по поводу создания окна на асме http://www.cyberforum.ru/assembler/thread324485.html
У меня дома есть книжка по асму в винде, я могу потом скопипастить оттуда нормальный асм код по поводу создания окна.

То же самое по подобию создания окна тебе надо сделать чтобы создать контекст OpenGL. (нужно знать в какой системной дллке содержится wglGetProcAddress, wglCreateContext и т.д.)

То же самое - только из дллки opengl32.dll нужно инициализировать начальное состояние Opengl и вывести треуголник glBegin() glEnd()

Попробуй найди демку на С++, скомпилируй запусти, убедись что работает.

Не спеши с портированием на асм, возможно ОпенГл-вызовы ты сможешь найти напрямую в собранном из С++ exe'шнике - во всяком случае там может быть что то вроде аналога PFNGLVERTEXBLABLABLA glVertex = GetProcAddress("glVertex"); только на асме, то есть в бинарном коде ты смогешь найти только строку "glVertex", ясно? Конструкция нетривиальная (то есть вызов происходит не там где ты увидишь эту строку, эта строка находится там где происходит линковка с дллкой)

Ну или портани на асм если разобраться в витиеватостях компилятора будет сложно.

Хотя твои оппоненты правы - тот асм код который ты сможешь надебажить и посмотреть, будет актуален только к твоей видеокарте и конфигурации ОС. Грубо говоря, при вызове скажем glVertex ты залезешь в драйвер видюхи. Хотя glVertex это древняя древность и поддерживается даже виндой, т.к. это OpenGL1.0, поэтому у меня подозрение что двоичный код glVertex уже на всех видеокартах и всех конфигурациях одинаков. Попробуй что нибудь из расширений OpenGL например glCompileShader, glAttachShader, glUseProgramm или glVertexPointer, glNormalPointer.
kovalexius вне форума Ответить с цитированием
Старый 23.01.2015, 15:38   #30
kovalexius
 
Регистрация: 12.11.2014
Сообщений: 4
По умолчанию

Блин еще где то статья охрененная была, там на асме чувак без ОС запускал рендеринг полигона чтоль.

Ппц запутанная из 100500 частей, я так и не помню как он именно рендеринг осуществлял
kovalexius вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с wav на низком уровне vsrmis Мультимедиа в Delphi 10 15.01.2011 01:13
Ассемблер, программирование видеоадаптера IgorM Помощь студентам 0 23.12.2010 19:28
МАЛЕНЬКАЯ ПРОБЛЕМКА С ГРАФИКОЙ НА НИЗКОМ УРОВНЕ Костик++ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 17.11.2010 21:00
Работа с файлами на низком уровне JamS007 Общие вопросы C/C++ 15 26.05.2009 21:17
Работа на низком уровне Prowler Работа с сетью в Delphi 2 26.12.2006 06:29