xoreax,eax;EAX=0 xor di,di ;ES:DI auf Pufferanfang mov cx,0FFF0h/4 ;Pufferlänge (Doppelworte) rep stosd ;Puffer mit 0 überschreiben
SetVGA ;In den VGA-Modus
PalOut Palette ;Palette senden
mov bx,9433h ;Für Random pushfs popds;DS auf res. Puffer ;nun: ES auf Videospeicher und DS auf Puffer!
MainLoop: mov si,XSize*YSize ;oben 2.Zeile anfangen mov cx,XSize*2 ;1. u. letze Zeile nicht
FillLi: call Random ;Zufallszahl bitte mov [si],dl ;nach DS:SI dec si dec cx jnz FillLi ;Brennstoff
mov ah,09h mov dx,OFFSET Msg int 21h ;Text ausgeben mov ah,4Ch int 21h ;Programm beenden...
Random PROC NEAR ;Zufallsgenerator mov ax,bx ;Faktor1 nach AX mov dx,8405h ;Faktor2 nach DX mul dx ;AX*DX=DX:AX inc ax ;AX=AX+1 mov bx,ax ;AX wieder nach BX ret;Zurück... ENDP
MakeFire PROC NEAR mov si,XSize ;Oben 2. Zeile mov cx,XSize*YSize-XSize*2 ;1. und letzte Zeile nicht
FireLoop: xor ax,ax ;AX=0 mov al,[si] ;eigentliches Pixel add al,[si+XSize] ;+Pixel darunter adc ah,0 ;AH+1 falls zuviel add al,[si+1] ;+Pixel rechts daneben adc ah,0 ;AH+1 falls zuviel add al,[si-1] ;+Pixel links daneben adc ah,0 ;AH+1 falls zuviel shr ax,2 ;AX=AX/4 jz NichtSchrumpfen ;Wenn AX=0 kein DEC cmp bp,"o";Wurde o gedrückt? je NichtSchrumpfen ;Ja: Kein DEC dec ax ;Flamme klein halten
NichtSchrumpfen:
mov [si-XSize],al ;Wert darüber platzieren inc si ;nächstes Pixel! dec cx ;Zähler - 1 jnz FireLoop ;Weiter... ret;Zurück
MakeFire ENDP
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.