информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыПортрет посетителяАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Точно ! хотел добавить... 29.10.01 09:24  Число просмотров: 931
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> Че-то мне кажеться что сделали от балды, ибо 4000h <
> 640Kb => память для программ нужно было-бы выделить

Мне тоже кажется, что это просто буффер...
Хотел вот добавить ...

Мне кажется, хотя я могу быть неправ, что это просто буфер для построения изображения и вывода на экран. Я как-то рисовал подобные штуки - ниже пример рисования как раз в режиме 13h. Я в качестве буффера использовал память своего com-а.
Почему 4000h ? Просто этот сегмент обычно не занят ничем, и располагается где-то между загруженным com-файлом (программой) и 640K.
К тому же для такого рода вещей обычно нужны случайные числа (чем-то заполненный буфер). Я вот заполняю его нулями вначале, а потом населяю довольно произвольными значениями. В твоем примере начальное заполнение буффера, видимо, обеспечивается “мусором” в этом самом сегменте (4000h), оставшимся от прежних программ.

> вот фрагмент:
;…
Fx1:
> Matrix:
> inc si
; используем произвольные значения в буффере.
mov al,byte ptr [si-322]
;…
sub bx,ax
; Изменяем буффер для следующего кадра.
> mov ds:[di],bl
> inc di
> loop Fx1
>
> и тд..

; Программа имитации пламени. Написал Chingachguk ;)
.286
text segment byte public
assume cs:text,ds:text
org 100h
begin: MOV AL,13H
INT 10H
@AGAIN: CLD
MOV CX,320*200
PUSH CX
MOV DI,OFFSET BUFFER
XOR AL,AL
REP STOSB
POP CX
PUSH 0A000H
POP ES
XOR DI,DI
@PAINT: MOV AX,DI
XOR DX,DX
MOV SI,320
DIV SI
MOV BX,AX ; BX=X
MOV SI,DX ; SI=Y
SUB BX,160
SUB SI,100
PUSH CX
MOV CX,123 ; CX=123, BX=MOD(X-160), BP=MOD(Y-100)
@FIND: LEA BP,[BX+SI]
CMP BP,320*200
JAE @N_BOUND
OR BUFFER[BX+SI],CL
JZ @DONE
@N_BOUND: MOV AX,BX
SHR AX,2
ADD BX,AX
MOV AX,SI
SHR AX,2
ADD SI,AX
LOOP @FIND
@DONE: MOV AL,CL
ADD AL,150
POP CX
MOV BUFFER[DI],AL
INC DI
;STOSB
PUSH CX
PUSH DI
XOR DX,DX
MOV AX,DI
MOV SI,320
DIV SI
MUL SI
MOV DI,AX
CMP DI,320*40
JB @N
LEA SI,BUFFER[DI-320*40]
MOV CX,320*40/2
MOV DI,320*160
REP MOVSW
@N: POP DI
POP CX
MOV AH,1
INT 16H
JNZ @ASK
LOOP @PAINT
@ASK: XOR AH,AH
INT 16H
@EXIT: MOV AX,0003H
INT 10H
ret
BUFFER DB 320*200 DUP(?)
text ends
end begin
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach