ORG

quake.net.pl » Polskie Centrum Quake od 1998 roku



Wersja: Jasna / Ciemna

Assembler

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2007-03-06 20:41:46

Zaczęły mi się laborki z assemblera, jako pierwsze zadanie muszę poprawić gotowy kod, w którym celowo umieszczono błędy składniowe i logiczne, tak aby on działał. Sęk w tym, że nie mielismy wcześniej ZADNEGO teoretycznego przygotowania do programowania w ASM, i nie jestem w stanie przyswoić sobie tak szybko odpowiedniej wiedzy.
Kod który mam poprawić ma za zadanie obliczać wzór d/(b-c)*(a+b)

Tak wygląda kod w oryginale:
                :MODEL  SMALL
Dane            SEGM
a               EQU     20

b               DB      10

c               =       5

d               DB      3
Dane            ENDSGM
Wynik           =       ?
Kod             SEGMENT
                ASIUM   CS:Dane, DS:Kod, SS:Stos
Start

                mov     cs, SEGMET Dane

                mov     ds, cs
                mov     ax, d

                sub     bx, WORD PTR c

                mov     bx, WORD PTR b

                div     BYTR PTR bx

                muv     a, ax

                mol     cx

                add     bl, WORD PTR b
                mov     al, Wynik
                mov     ax, 4C15h

                int     21h
Kod             ENDSGMT
Stosik          SEGM    STAC
                DB      100h DUP (*)
Stosk           ENDSGMT
                ENDP    Stort

Tak wygląda moja wersja po przeróbkach (nadal się nie kompiluje):
                .MODEL  SMALL
Dane            SEGMENT
a               EQU     20

b               DB      10

c               =       5

d               DB      3

Wynik           =       ?
Dane            ENDS

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

                mov     ax, SEG Dane

                mov     ds, ax
                mov     ax, d

                sub     bx, WORD PTR c

                mov     bx, WORD PTR b

                div     BYTE PTR bx

                mov     a, ax

                mol     cx

                add     bl, WORD PTR b
                mov     al, Wynik
                mov     ax, 4C15h

                int     21h
Kod             ENDS
Stosik          SEGMENT    STACK
                DB      100h DUP(?)
Stosik          ENDS
                END Start

Program ma się kompilować przy pomocy TASM + TLINK i ma powstać z niego ostatecznie program .exe

Jak widać (Ci co się znają), usunąłem błędy będące literówkami, jednak same działania na rejestrach są już dla mnie magią. Podkreślam również, że finalny kod musi być poprawioną wersją tego, a nie zupełnie nowym kodem nie mającym nic z tym wspólnego. Gdybyście przy okazji dodali jakieś komentarze, to byłbym wdzięczny, bo bym się jednocześnie czegoś nauczył, a nie tylko na ślepo zrobił kopiuj/wklej

Radioactive

Od: 2005-11-11

Ranga: Newbie

Dodano dnia: 2007-03-06 23:45:36

[](//htmlarea/images/smiles/6.gif) [](//htmlarea/images/smiles/6.gif)[](//htmlarea/images/smiles/8.gif)[](//htmlarea/images/smiles/8.gif) lo w dupe dla mnie to czarna magia...podziwiam ludzi ktorzy wogole cos z tego kumaja..zawsze chcialem robic podobne rzeczy..niestety nie mam smykalki,,jedynie skrypty do q3 nie sprawiaja mi problemu:)..no ale zawsze cos:)
moglbys po krotce wytlumaczyc co to ma wogole byc??do czego to sluzy i co to ma robic??
swoja droga...te cale programowanie i pisanie itp...naprawde jest to takie skomplikowane/niezrozumiale??czy dla przecietnego usera (no ktory cos tam o kompach ogolnie wie) jest to wiedza przyswajalna??znaczy sie..do opanowania chociaz w stopniu podstawowym??

^ ^

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2007-03-07 00:00:39

Kur** juz mi zrobiłeś nadzieje, ze ktos mi to zrobił :P
Co to ma za zadanie robić masz napisane w 1 poście
Język assemblera jest najtrudniejszy, i zarazem najłatwiejszy do przyswojenia i zrozumienia dla komputera. Tutaj operujesz bezpośrednio na rejestrach procesora. Języki wysokiego poziomu są dużo prostsze. Wystarczy być w miare ineligętnym i znać angielski :D

Radioactive

Od: 2005-11-11

Ranga: Newbie

Dodano dnia: 2007-03-07 00:03:01

sory nie chcialem:P
"Program ma się kompilować przy pomocy TASM + TLINK i ma powstać z niego ostatecznie program .exe"
sory...za noobskie podejscie..ale do tego to ma sluzyc??ale po co??:Dsoryy ja wiem ze dla ciebie to debilnie idiotyczne pytania..no ale musisz mnie zrozumiec noo:)

^ ^

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2007-03-07 00:12:03

OMG - 5 linijka pierwszego posta 

Radioactive

Od: 2005-11-11

Ranga: Newbie

Dodano dnia: 2007-03-07 00:14:24

dobra dam ci juz spokoj..nie chce cie denerwoac:)...jak zwykle pomoze mi dziadzius google:)

^ ^

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2007-03-07 03:42:14

alez ja sie wcale nie wkurze, pytaj, jest prawie 4 w nocy a mi w końcu zaczelo to działać :D 

kos

Od: 2003-03-01

Ranga: Rail Master

Dodano dnia: 2007-03-15 12:02:42

Ehh przypominają mi sie moje laborki z asm =o nie lubiłem tego chociaż to prosty język :D

^^

RauL

Od: 2003-09-15

Ranga: Quad Damager

Dodano dnia: 2007-03-15 13:27:58

assembler to najgorszy badziew jaki moze byc. aby sie z tym nie meczyc wymyslono pascala i c :P ja na zaliczenie jednego przedmiotu bede musial wymyslic wlasny jezyk programowania. juz mnie *** glaszcze po plecach na samą myśl o tym :O

Rieux

Gravatar

Od: 2005-06-26

Ranga: Lightning Smasher

Dodano dnia: 2007-04-10 15:20:54

Cytat z posta - autor: [kos](%E2%80%99?page=users&run=details&id=4727%E2%80%99)
>
> Ehh przypominają mi sie moje laborki z asm =o nie lubiłem tego chociaż to prosty język :D
>

OMG Alembler najprostszy :O lol to chyba C jest prostsze, jak ASM jest dla ciebie prosty to jesteś zajebisty.
Jak przyjdzie brat to sie zapytam co jest nie tak w tym co daleś MisieX, ja sie za ASM nie narzazie nie biorę

eng

Od: 2002-05-09

Ranga: Newbie

Dodano dnia: 2007-04-10 20:17:40

Moze jemu po prostu chodzilo oto, ze jezyk asemblera to jezyk niskiego poziomu, gdzie dane polecenie odpowiada konkretnej instrukcji dla procesora.
Asm wcale nie jest takim badziwiem, jesli sie posiada odpowiednia wiedze mozna porobic bardzo szybko dzialajace programiki, np duzo wirusow bylo pisanych wlasnie w asm, albo np nod32 zostal w nim zrobiony.

C jest zaliczany do jezykow wysokiego poziomu = instrukcje i sposob zapisu ma byc w jak najwiekszym stopniu zrozumiany dla czlowieka i nie jest bezposrednio zrozumialy dla komupterka. Dopiero kompilacja umozliwia wygenerowanie kodu maszynowego = 0101010101001

To sa roznice ;p

Okręt mój płynie dalej, gdzieś tam...

» yt

Rieux

Gravatar

Od: 2005-06-26

Ranga: Lightning Smasher

Dodano dnia: 2007-04-12 11:15:19

TAK jest prosty dla kopilatora:P chyba ale nie do pisania.
Działa szybko nie podważalny fakt ale w C też da sie zrobić wstawke aemblerową wystarczy wpisać asm.
Podobno sterowniki do WIn XP i 2000 były pisane w asemblerze i dlatego tak szybko chodzą.