Регистрация: 27.03.2011
Сообщений: 3
|
Как сделать ехе файл
Ребят подскажите, у меня имеется текстовый документ с кодом, как ехе-шник зделать через сmd:? вот код(1 часть):
Код:
DOSSEG
.MODEL SMALL
.STACK 200h
.286
.CODE
JUMPS
ASSUME CS:@CODE
INCLUDE Font.dat
INCLUDE Numbers.dat
Message DB 13,10,"Code by Vulture.",13,10,"$"
Star_Struc STRUC
X DW 0
Y DW 0
Z DW 0
Old DW 0
Col DB 0
Star_Struc ENDS
StarStrucSize = 9
ScreenWidth EQU 320
ScreenHeight EQU 200
MaxStars EQU 250
MaxNumbers EQU 500
MaxZ EQU 4096
MinZ EQU 0
XIndex DW 250
YIndex DW 125
WarpSpeed DW 20
NumActive DW 0
Stars Star_Struc MaxStars DUP (?)
Palette DB 0,0,0
DB 0,0,0
DB 52,0,0
DB 42,0,0
DB 32,0,0
DB 0,0,0
i=15
REPT 16
DB 3*i,3*i,3*i
i=i-1
ENDM
PaletteArray DB 768 DUP (?)
Text DB 'чк '
DB ' кача'
DB 'm . .'
DB ' ',0
Order DB 'abcdefghijklmnopqrstuvwxyz0123456789-. '
SetVGA PROC NEAR
mov ax,0013h
int 10h
ret
SetVGA ENDP
SetText PROC NEAR
mov ax,0003h
int 10h
ret
SetText ENDP
WaitVrt PROC NEAR
mov dx,3dah
Vrt:
in al,dx
test al,8
jnz VRT
NoVrt:
in al,dx
test al,8
jz NoVRT
ret
WaitVrt ENDP
SavePalette PROC NEAR
cli
mov bp,offset PaletteArray
mov cx,768
mov dx,03c7h
mov al,0
out dx,al
mov dx,03c9h
Grab:
in al,dx
and al,3fh
mov byte ptr [bp],al
inc bp
loop Grab
sti
ret
SavePalette ENDP
FadeOut PROC NEAR
cli
mov bp,offset PaletteArray
mov cx,64
OneCycle:
mov bx,0
Decrease:
cmp byte ptr [bp],0
je Fading
dec byte ptr [bp]
Fading:
inc bp
inc bx
cmp bx,768
jl Decrease
push cx
call WaitVrt
sub bp,768
mov bx,0
mov cx,768
mov dx,03c8h
mov al,0
out dx,al
inc dx
WriteAll:
mov al,byte ptr [bp]
out dx,al
inc bp
inc bx
loop WriteAll
pop cx
sub bp,768
loop OneCycle
sti
ret
FadeOut ENDP
CalcStar PROC NEAR
pusha
mov si,0
StartCalc:
cmp [NumActive],MaxStars
jae NoEmptySpace
SearchSlot:
cmp word ptr [Stars.Z+si],MinZ
je FillSlot
add si,StarStrucSize
cmp si,StarStrucSize*MaxStars
jb SearchSlot
jmp NoEmptySpace
FillSlot:
mov di,[XIndex]
add di,di
mov ax,[Numbers+di]
shl ax,3
mov [Stars.X+si],ax
mov di,[YIndex]
add di,di
mov ax,[Numbers+di]
shl ax,3
mov [Stars.Y+si],ax
mov [Stars.Z+si],MaxZ
mov al,0
mov [Stars.Col+si],al
inc [NumActive]
inc [XIndex]
cmp [XIndex],MaxNumbers
jb XindNotMax
mov [XIndex],0
XindNotMax:
inc [YIndex]
cmp [YIndex],MaxNumbers
jb StartCalc
mov [YIndex],0
NoEmptySpace:
popa
ret
CalcStar ENDP
ShowStars PROC NEAR
pusha
mov si,0
ShowLoop:
mov cx,[Stars.Z+si]
cmp cx,0
je ContinueStar
mov di,[Stars.Old+si]
mov byte ptr es:[di],0
mov ax,[Stars.X+si]
mov dx,256
imul dx
idiv cx
add ax,ScreenWidth/2
mov di,ax
cmp di,ScreenWidth
jae TermStar
mov ax,[Stars.Y+si]
mov dx,256
imul dx
idiv cx
add ax,ScreenHeight/2
cmp ax,ScreenHeight
jae TermStar
cmp ax,90
jl InRange
cmp ax,100
ja InRange
jmp TermStar
InRange:
imul ax,ScreenWidth
add di,ax
mov [Stars.Old+si],di
add ch,cs:[Stars.Col+si]
mov al,ch
add al,5d
mov byte ptr es:[di],al
mov ax,[WarpSpeed]
sub cx,ax
mov [Stars.Z+si],cx
jmp ContinueStar
TermStar:
mov [Stars.Z+si],MinZ
dec [NumActive]
ContinueStar:
add si,StarStrucSize
cmp si,StarStrucSize*MaxStars
jb ShowLoop
popa
ret
ShowStars ENDP
Последний раз редактировалось Serge_Bliznykov; 29.03.2011 в 07:20.
|