Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 00:58   #1
edik12
 
Регистрация: 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.
edik12 вне форума Ответить с цитированием
Старый 29.03.2011, 00:58   #2
edik12
 
Регистрация: 27.03.2011
Сообщений: 3
По умолчанию

2-ая часть текста прграммы:
Код:
 START:
    cli   
    call    SetVGA
    mov     ax,cs
    mov     es,ax
    mov     ax,1012h
    mov     bx,0
    mov     cx,23 
    mov     dx,offset Palette
    int     10h
    call    SavePalette
    mov     ax,0a000h
    mov     es,ax
    mov     ax,cs
    mov     ds,ax
Reset:
    lea     si,Text
Mainthing: 
    lodsb
    cmp     al,0
    je      Reset
    push    si
    mov     bx,ax
    mov     cx,0
    lea     si,Order
Again:
    lodsb
    cmp     ax,bx
    je      Found
    inc     cx
    jmp     Again
Found:
    mov     ax,8
    mul     cx
    mov     bx,4
Hloop:
    lea     si,Font
    add     si,ax
    mov     di,320*91
    mov     cx,9
Vloop:
    push    cx
    mov     cx,2
    repz    movsb
    add     di,318
    add     si,318
    pop     cx
    loop    Vloop
    push    ds ax
    mov     ax,0a000h
    mov     ds,ax
    mov     si,320*90+2
    mov     di,320*90
    mov     cx,10*320
    rep     movsb
    mov     di,320*101
    mov     cx,5
    mov     al,0
    rep     stosb
    call    WaitVrt
    call    CalcStar
    call    ShowStars
    in      al,60h
    cmp     al,1
    je      QuitNow
    pop     ax ds
    add     ax,2
    dec     bx
    jnz     Hloop
    pop     si
    jmp     Mainthing
QuitNow:
    call    FadeOut
    call    SetText
    mov     ax,cs
    mov     ds,ax
    lea     dx,Message
    mov     ah,9
    int     21h
    mov     ax,4c00h
    int     21h
END START
edik12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать ехе-файл? gagarin0 C++ Builder 7 13.10.2010 20:44
Как сделать ехе файл SL1CK Свободное общение 15 15.06.2009 08:22
Как сделать ехе для программы DiSpalL Помощь студентам 4 31.05.2009 22:21
как скопировать *ехе файл RAVAL)) Общие вопросы Delphi 2 05.03.2009 08:34
Помогите разобраться как сделать ехе-шник KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 5 14.03.2008 17:16