.:: Cyber-Crime ForuM ::. Strona Główna .:: Cyber-Crime ForuM ::.
.:: CC-Team.org - ForuM::.

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj

Odpowiedz do tematu
Poprzedni temat :: Następny temat
2 proste programiki
Autor Wiadomość
saga995 

Dołączył: 07 Mar 2010
Wysłany: Nie Mar 07, 2010 12:11 pm   2 proste programiki

Hej. Jestem nowy w asemblerze, a muszę poprawić 2 programiki, żeby działały. Korzystam z programów tasm, tlink i td. Programiki poprawiłem tak, że nie wyskakują żadne błędy, ale mimo to programy nie działają. Jest to moje pierwsze zadanie z asemblera i powiem szczerze - dosyć ciężko to idzie.

Pierwszy program obliczający wzór: (b*c-4*a)/d :
Kod:
 
                .MODEL  SMALL

               

Dane            SEGMENT

a               dw      20
b               dw      10
c               dw      7
d               dw      3
Wynik           dw      ?

Dane        ENDS




Kod        SEGMENT

        ASSUME  CS:Kod, DS:Dane, SS:Stosik

Start:
                mov     ax, Dane
        mov     ax, ds
       
        mov     ax, b
        mul    c
        mov    bx, a
        ;mul    4
        sub    ax, bx
        shr    ax, 2
        div    d
                mov     Wynik, ax

                mov     ax, 4C00h
                int     21h


Kod         ENDS

Stosik        SEGMENT STACK
        DB      100h DUP (?)
Stosik        ENDS


        END    Start


A drugi dokonujący konkatenacji dwóch tekstów o znanej długości :

Kod:

               .MODEL  SMALL

Dane            SEGMENT

Napis1          DB      "To jest pierwszy napis",13,10,'$'
DL_NAPIS1       EQU     20
Napis2          DB      "To jest drugi napis",13,10,'$'
DL_NAPIS2       EQU      25
Napis3          DB      DL_NAPIS1 + DL_NAPIS2 DUP (?)

Dane            ENDS

Kod             SEGMENT

                ASSUME   CS:Kod, DS:Dane, SS:Stosik

Start:
                mov     dx, Dane
                mov     cx, ds

                mov     si, OFFSET Napis1
                mov     di, OFFSET Napis2
                mov     cx, DL_NAPIS1

Petla1:
                mov     al, [si]
                mov     [bx], ah
                inc     si
                dec     di
                loop    Petla1

                mov     si, OFFSET Napis1
                mov     cx, DL_NAPIS2

Petla2:
                mov     [di], al
                mov     al, [di]
                dec     si
                loop    Petla1
                inc     di

                mov     ah, 09h
                mov     dx, OFFSET Napis3
                int     21h

                mov     ax, 4C00h
                int     21h

Kod             ENDS

Stosik          SEGMENT STACK

                DB      100h DUP (?)

Stosik          ENDS

                END     Start



Z góry dziękuję bardzo za pomoc.
 
     
gabriel 


Pomógł: 1 raz
Dołączył: 24 Gru 2009
Wysłany: Nie Mar 14, 2010 6:55 pm   

Czasy DOS'a już minęły. używaj nasma lub fasma.
 
     
0DFh 

Dołączył: 05 Mar 2010
Wysłany: Pią Mar 26, 2010 9:06 pm   

Czasy Assemblera minęły. Użyj Java.
Hehe, żart.

Na wielu uczelniach uczy się Assemblera. Użyj programu Turbo Debugger i znajdziesz błąd.
 
     
MrKris 


Dołączył: 16 Lut 2010
Wysłany: Wto Mar 30, 2010 1:03 am   

0DFh napisał/a:
Czasy Assemblera minęły. Użyj Java.

Ale w Javie nie napiszesz shellcode, a w assemblerze tak. Więc assembler górą pod tym względem.
To też żart.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group