Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Графика ДОС (640х480), Ежели кому интересно. 
:(
    Опции темы
Alex101
Дата 21.5.2003, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: нет
Всего: 10



Случайно нашел старый файл.
Если кому-то интересно, то это низкоуровневая графика на asm (функции для вызова из программы на C). Установка точки, чтение точки в заданных координатах.
Да, программа писалась для 286 процессора smile.gif
Код

PUBLIC   _Pixel_Addr;получение адреса пиксела в видеобуфере
PUBLIC   _Set_Pixel;рисование точки
PUBLIC   _Read_Pixel;чтение точки

_Pixel_Addr PROC  far
BytesPerLine    equ     80
Orignoffset     equ     0

       mov     CL,BL
       push    DX
mov     DX,BytesPerLine
mul     DX

       pop     DX
       shr     BX,1
       shr     BX,1
       shr     BX,1
       add     BX,AX
       add     BX,Orignoffset
       PUSH    0A000h
       POP     ES
       and     CL,7
       xor     CL,7
       mov     AH,1
ret
_Pixel_Addr ENDP

_Read_Pixel proc far
arg Xcor:word, Ycor:word
push    BP
mov     BP,SP
 push di
 push si
 push ds

       mov     AX,Ycor
       mov     BX,Xcor

       mov     CL,BL
       push    DX
       mov     DX,80
       mul     DX

pop     DX
shr     BX,1
       shr     BX,1
       shr     BX,1
       add     BX,AX
add     BX,0
PUSH    0A000h
       POP     ES
and     CL,7
       xor     CL,7
       mov     AH,1
       shl     ah,cl

;В CL количество битов, на которые надо сдвинуть вправо
 xor di,di
 push es
 pop ds

  MOV  DX,3CEH
  MOV  Ax,0005h
  OUT  DX,Ax
  MOV  Ax,0304h; Читаю 3-ю битовую плоскость

 OUT  DX,Ax
 mov al,es:[bx]
 shr ax,cl
 and ax,1
 or  di,ax

 MOV  Ax,0204h; Читаю 2-ю битовую плоскость
 OUT  DX,Ax
 mov al,es:[bx]
 shr ax,cl
 and ax,1
 shl di,1
 or  di,ax

 MOV  Ax,0104h; Читаю 1-ю битовую плоскость
 OUT  DX,Ax
 mov al,es:[bx]
 shr ax,cl
 and ax,1
 shl di,1
 or  di,ax

 MOV  Ax,0004h; Читаю 0-ю битовую плоскость
 OUT  DX,Ax
 mov al,es:[bx]
 shr ax,cl
 and ax,1
 shl di,1
 or  di,ax

 mov ax,di
 and ax,000Fh


pop ds
pop si
pop di
pop bp
ret
_Read_Pixel endp




_Set_Pixel Proc far
arg Xcor:word,Ycor:word,Color:word
RMWbits EQU     18h

push    BP
mov     BP,SP
mov     AX,Ycor
mov     BX,Xcor
call    _Pixel_Addr
shl     AH,CL
mov     DX,3CEh
mov     AL,8
out     DX,AX

mov     AX,205h
cli
out     DX,AX
sti
mov     AH,RMWbits
mov     AL,3
cli
out     DX,AX
sti
mov     AL,ES:[BX]
mov     AX,Color
and     AX,00Fh
mov     ES:[BX],AL

mov     AX,0FF08h
out     DX,AX

mov     AX,0005
out     DX,AX

mov     AX,0003
out     DX,AX

mov     SP,BP
pop     BP
ret
_Set_Pixel ENDP


Это сообщение отредактировал(а) Alex101 - 21.5.2003, 20:05


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.