91
Ромхакинг и программирование / Re: Создание конвертора изображений
« : 19 Январь 2009, 17:21:22 »
Какое разрешение должно быть у картинки?
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
; Процедура putpixel12h.
; Выводит на экран точку с заданным цветом в режиме 12h (640x480x16).
; Вход: DX: строка
; CX: столбец
; BP: цвет
; ES: 0A000h
putpixel12h proc near
pusha
; Вычислить номер байта в видеопамяти.
xor bx,bx
mov ax,dx ; AX= строка
lea eax,[eax+eax*4] ; AX = AX x 5
shl ax,4 ; AX = AX x 16
; AX = строка х байт_в_строке
; (строка x 80)
push cx
shr cx,3 ; CX = номер байта в строке
add ax,cx ; AX = номер байта в видеопамяти
mov di,ax ; Сохранить его в DI
; Вычислить номер бита в байте
pop cx
and cx,07h ; Остаток от деления на 8 - номер
; бита в байте, считать справо налево.
mov bx,0080h
shr bx,cl ; В BL теперь нужный бит установлен в 1.
; Программирование портов.
mov dx,03CEh ; Индексный порт
; графического контроллера
mov ax, 0F01h ; Регистр 01h: разрешен
; установки/сброса.
out dx,ax ; Разрешить установку/сброс для
; всех плоскостей (эту часть лучше
; сделать однажды в программе, например сразу после установки
; видеорежима, и не повторять каждый раз при вызове процедуры).
mov ax,bp
shl ax,8 ; Регистр 00h: регистр
; установки/сброса.
out dx,ax ; AH = цвет.
mov al,08 ; Порт 08h: битовая маска
mov ah,bl ; Записать в битовую маску нули
; всюду кроме
out dx,ax ; бита, соответствующего выводимому пикселу.
mov ah, byte ptr es:[di] ; Заполнить
; регистры-защелки
mov byte ptr es:[di],ah ; Вывод на экран:
; выводится единственный бит
; в соответствии с содержимым регистра битовой маски, остальные
; биты берутся из защелки, то есть не изменяются. Цвет выводимого
; бита полностью определяется значением регистра установки/сброса.
popa
ret
putpixel12h endp
Вообще-то да. Дельфи скорее как некий тренировочный язык использовать лучше. QIP - параша, написанная на Delphi...ГЫ...ГЫ... а вот скажи мне доктор, что же это в Дельфи такого плохого.