· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› минимальный bmp вьюер

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Дек 8, 2002 03:36:19

Хай олл!
Нет ли у кого маленького (< 120 байт) bmp (320x200x256) viewer'a?
И известен ли вообще асболютный чемпион?


Дата: Дек 8, 2002 07:00:23

120 bytov? Eto slishkom malo. U menya pod 214 poluchaetsya.


Дата: Дек 8, 2002 15:17:11

comrade
Да нет, это много :) Я имею ввиду что не надо проверять header и наличие файла. Файл берется из коммандной строки. Так что у меня получается 115 байт. Но 100% можно меньше cделать.... я кажется где-то видел дохлую ссылку на 101-байтный... Кстати, минимальный pcx viewer насколько я знаю - 83 байта.


Дата: Дек 8, 2002 19:36:25

Tak file vsyo vremya 320x200x256? Toest ne nado proveryat width/height/bitdepth?


Дата: Дек 8, 2002 20:14:20

Gde vobshe pro eto napisano? Compo chto li kakoi to?


Дата: Дек 8, 2002 21:00:57

comrade
Да нигде не написано :) Просто мне интересно посмотреть на круто оптимизированый вьюер :)
Ксати мой 'дорос' до 106 байт. так что если есть что поменьше - хотелось бы увидеть
А вообще конечно такие compo были...


Дата: Дек 8, 2002 21:10:03

Ia pod 96 bytov s'umel. No:
- file tolko 320x200x256
- ne proveraet na oshibki
- ne vikluchaet mode13h

Zato zhdet key-press chtob vite v DOS (cherez "ret").
A kakoi u vas, tovarisch AV?


Дата: Дек 8, 2002 23:03:20


Дата: Дек 11, 2002 20:06:20

comrade
у меня 97 байт - зато 3-й режим на выходе ставит :p
если без установки - 92 байта!

---cut---

;bmp 320x200x256 viewer. 2002, AV
;run at dos/win9x only! {tasm, tlink /t}
;97 bytes!

model tiny
.code
org 100h
Start:

;-\
;**open file**
mov bl, 80h
add bl, ds:[bx]
mov ds:[bx+1], bh ;set ASCIIZ

mov ah, 3Dh
mov dx, 82h
int 21h
;jc Quit
xchg bx, ax
;_/

;-\
;**set 320x200x256 mode**
mov al, 13h
int 10h
;_/

;-\
;**get data**
mov ah, 3Fh
mov cx, 65078
push ax ;lea dx, data
pop ds ;
int 21h
;_/

;-\
;**set pallete**
mov si, dx
add si, 57 ;header(53)+4
xor ax, ax

Pal:
mov dx, 3c8h
out dx, al
inc dx

push ax
mov cx, 3

rgb:
dec si
mov ax, ds:[si]
db 0C1h, 0E8h, 2 ;shr ax, 2
out dx, al
loop rgb

pop ax
inc ax
add si, 7

test al, al ;al=0 if ax = 100h
jne Pal
;_/

;-\
;**display data**
sub si, 3
db 68h, 0, 0A0h, 7 ;push A000|pop es
mov di, 64000
mov dx, 200

NextLine:
sub di, 640
mov cx, 320
rep movsb
dec dx
loopne NextLine
;_/

mov ah, 10h
int 16h
mov ax, 3
int 10h

Quit:
retn

End Start


Дата: Дек 11, 2002 20:19:53

Предыдущий пост мой ;)
а строки с db - это tasm у меня код оптимизирует по скорости выполнения а не размеру :)


Дата: Дек 12, 2002 00:47:39

Не плохо!


Дата: Дек 13, 2002 12:47:50

...(Для AV) просто в 8086 нету команды shr ??,2 (3,4,... вообщем >1) поэтому он заменяет на несколько shr'ов. Поставь .186 (или .286 непомню)


Дата: Дек 14, 2002 01:37:39

Bart Simpson
Спасибо - так и есть, для таких мощных операций сопроцессор нужен...

comrade
основные части - установка палитры и отображение у нас занимают одинаково хотя алгоритмы немного различаются... так что ИМХО меньше уже невозможно...


Дата: Дек 26, 2002 21:11:54

Возможно ...
79 байт (fasm)

org 100h

mov si, 0080h
lodsb
xchg ax,bx
mov [si+bx], ah

; open file
mov dx,si
mov ah, 3Dh
int 21h
push ax

; read headers + palette
xchg bx,ax
mov cx, 436h
mov dx,cx
mov ah, 3Fh
int 21h

; switch to graphics mode
mov ax, 13h
int 10h

; initialize palette
mov cx, 256
mov si, palette+(256*4)-2
std
@@pal: mov dx, 3C8h
mov ax, cx
dec ax
out dx, al
inc dx

mov bl, 4
@@col: lodsb
shr al, 2
out dx, al
dec bx
jnz @@col
loop @@pal

; read data
pop bx
push 0A000h-14h
pop ds
mov dx, 320*200
@@line: mov ah, 3Fh
mov cx, 320
int 21h
sub dx, cx
jnz @@line

; wait for key press
xchg ax,dx
int 16h
ret

org 436h
bmfh: bfType dw ?
bfSize dd ?
bfReserved1 dw ?
bfReserved2 dw ?
bfOffBits dd ?
bmih: biSize dd ?
biWidth dd ?
biHeight dd ?
biPlanes dw ?
biBitCount dw ?
biCompression dd ?
biSizeImage dd ?
biXPelsPerMeter dd ?
biYPelsPerMeter dd ?
biClrUsed dd ?
biClrImportant dd ?
palette:


Дата: Дек 27, 2002 15:43:42

Shur
ну просто нет слов... 8-[ ]

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.075