Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Jak se jmenuje výstava fotografií od fotografa Sebastião Salgada?

V dnešní soutěži hrajeme o:



Assembler - Základní Program

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Assembler - Základní Program

Autor: pepa999

17:34:36 06.10.2011

Díky, už se v tom začínám trochu orientovat, ale asi teda začnu větší pozornost věnovat teď jazyku C. A cvičení z Assemblerů nám začínají až nějak za dva týdny.

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: Kra_

13:22:50 06.10.2011

Ta knizka je dobra, taky jsme ji meli na vysce. Nemeli byste tam mit nejaka cvika s timhle? Nas v prvnim cviku ASM prave ucili jak tyhle instrukce zkompilovat (ne ze bych si to pamatoval, takze ti konkretne nepomuzu :) Jinak na netu bys mel urcite najit dost ukazek/navodu pro NASM.

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: MazeGen

17:12:40 05.10.2011

Autor dělá tu chybu, že první třetinu knížky teoreticky popisuje instrukce, ale první ukázka programu s návodem, jak ji přeložit, je až na straně 139 (z 228). Z pohledu začátečníka je to spíš komplikovaná reference, než učebnice.

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: V

14:13:17 05.10.2011

Tu knihu sice neznám, ale nechce se mi věřit, že by v ní nepopisovali způsob, jakým prakticky přeložit program a nebylo by tam uvedeno, jaké náležitosti by takový program měl mít. Asi by to chtělo číst pozorněji. Nějaký tutoriál pro úplně blbé typu "napiš to a to tam a tam, stiskni to a to a pak udělej to a to" v tomto typu knih budeš hledat marně. Bylo by to podobné, jako vysvětlovat malou násobilku v úvodu učebnice diferenciálních rovnic.
Když se to učíte ve škole a používáte nástroje, jež vám dodali z té školy - nebylo by nejjednodušší se prostě zeptat přednášejícího/cvičícího? Zázračný dalekohled fakt nemám, abych viděl do jakýchsi vašich interních souborů run-obj.bat nebo run.bat. Ten mnou uvedený přepínač se používá dle obvyklých zvyklostí: nasm program.asm -fbin -o program.com
Přeložený program.com se pak spustí napsáním jeho jména (stačí bez koncovky .com) v příkazovém řádku (shellu) DOSu a stisknutím klávesy Enter. Máte-li však váš systém nastavený nějak bizarně a nestandardně, když spuštění spustitelného souboru je třeba vykonat skrze jakýsi dávkový soubor, opravdu nemohu zaručit, že to bude fungovat, neznaje vaši konfiguraci.

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: Maaartin

13:41:36 05.10.2011

Taky.... navic kus ASM se da zabudovat do cecka a tim se naucit vetsinu ASM bez mnoha problemu.

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: eryywewe

7:09:13 05.10.2011

doporucuji zacit s C a pak si pridat ten assembler.

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: pepa999

20:39:12 04.10.2011

Děkuji za rady.... Já bych to rád blíže specifikoval, ale můj problém je, že tomu vůbec nerozumím.... A "Assembler" se chci učit, protože ho mám jako předmět na vysoké škole a přišel jsem z gymnázia, takže na počítači umím tak maximálně nainstalovat nějakou hru....učím se z knihy, kterou naše škola doporučuje http://knihy.cpress.cz/ucime-se-programovat-v-jazyce-assembler-pro-pc.html a chápu ty příkazy, ale není zde nikde(alespoň ne na začátku, a nechci začít dělat programy až od poloviny knížky, protože pouze čtením se to nikdy nenaučím) podrobný tutoriál, jak vytvořit program, protože ty příkazy chci testovat, abych si to ověřil, jestli tomu správně rozumím.......takže já chci dělat programy jenom proto, abych ten assembler uměl, chci prostě jenom testovat, takže asi zvolím ten DOS....ale nevím, jestli zvládnu vytvořit ten COM soubor, protože samozřejmě ničemu nerozumím a mám pouze naučené příkazy v příkazovém řádku:

RUN-OBJ.bat jmeno(ani nemusím dávat příponu, je to ale .asm)
RUN.bat jmeno

Jsem samozřejmě ve složce s překladačem NASM, kde jsou tyto dva soubory RUN-OBJ.bat a RUN.bat... A ono to vytvoří exe soubor a spustí....Zajímalo by mě, jak vytvořit ten soubor COM. Nějak nevím, jak ten přepínač -fbin -o jmeno.com efektivně použít...

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: asdfgasdfasd

20:03:55 04.10.2011

pro linux, vkladani assembleru do C:
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s4

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: V

1:47:39 04.10.2011

Otázka je, co chceš začít programovat. Programovat v Assembleru (i v jiných jazycích) je dost široký pojem - můžeš dělat program pro DOS (.COM nebo .EXE nebo třeba .SYS), pro Windows (.EXE, .DLL, .SYS), pro Linux (ELF, a.out,...), pro Mac OS X, nebo třeba pro žádný OS ale prostě jen blíže nespecifikovanou binárku (kterou třeba hodláš nakopírovat do MBR nebo nahrát do nějakého svého vlastního počítače...), nebo jen neslinkovaný objekt-file (.OBJ, COFF,...), atd. atd.

Co se týče těch chybových hlášek - "No Stack segment" - překladač (resp. linker) očekává definování zásobníkového segmentu, ale marně, žádný nenašel. V nastaveném formátu se zřejmě očekává přítomnost zásobníkového segmentu. Řešení: buď mu tedy dodat zásobníkový segment, nebo použít jiný výstupní formát.
"Program has no starting adress" - překladač (resp. linker) by rád věděl, kde je vlastně začátek. Obvykle se definuje návěstím s nějakou variací na téma slůvka "start" (v NASM ..start). V případě generování nějaké surové binárky to opět nemusí být nezbytné - autor ví, kam má skočit, a překladači je tato informace stejně k ničemu.
Nefunkční direktiva ORG - tato direktiva se obvykle uplatňuje v nějakých primitivnějších formátech, neboť v těch pokročilejších o umístění programu v paměti rozhoduje OS.

Chceš-li dělat pokusy v DOSu, máš na výběr mezi .EXE a .COM. Pokud chceš .EXE, musíš deklarovat zásobníkový segment a nastavit startovací adresu, chceš-li .COM, je třeba pomocí ORG nastavit startovací adresu na 0x100 a výstupní formát na surovou binárku (přepínač -fbin -o jmeno.com).

Citovat příspěvek

 

Re: Assembler - Zakladni Program

Autor: starous

21:33:32 03.10.2011

Org 0x100 se zřejmě používá pro COM programy MS Dosu. Jestli jsem to
dobře pochopil, tak COM program musí vždy začínat na adrese 100
(hexadecimálně).

Zřejmě v klasických exe program to nemá žádný smysl, takže to klidně vynech.


Dne 3.10.2011 21:06, pepa999 napsal(a):
>
>
> Jo, to se omlouvám... V tom kódu to mám dobře, akorát jsem to sem na fórum opsal špatně... Jediná chyba je v tom org... když to org oddělám, už to funguje...


Příspěvek zaslán emailem

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: pepa999

21:06:08 03.10.2011

Jo, to se omlouvám... V tom kódu to mám dobře, akorát jsem to sem na fórum opsal špatně... Jediná chyba je v tom org... když to org oddělám, už to funguje...

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: Mi.Chal

20:29:43 03.10.2011

pepa999 Napsal:
-------------------------------------------------------
> mov ah, ox4C ; funkce ukončí program
> mov al, 0 ; návratový kód 0
> int 0x21 ; zavoláme jádro operačního systému

tohle je urcite blbe, ma tam byt 0x4C a ne ox4C. To si nekde zkopiroval nebo blbe opsal? 0x (nula) znamena, ze se jedna o zapis cisla v sestnactkove soustave.

> A navíc vím, že když ten řádek s "org" oddělám,
> tak už to funguje. Vůbec ten příkaz org neznám.
> Program jede i bez něj, ale asi tam k něčemu bude
> a mě by zajímalo, co mám špatně.

Uz si to moc nepamatuju, ale org urcovalo offset. To se definovalo asi kvuli zasobniku (jako ze prvnich 0x100 bytu je zasobnik a pak nasleduji instrukce)

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: pepa999

20:16:24 03.10.2011

Děkuji za ten odkaz. Zkopíroval jsem tam tu kostru programu a už to funguje. Asi opravdu začnu nejdřív v tom Dosu a až potom se přesunu k Windows.

Přišel jsem ale ještě na jednu věc. Tam ty chyby, o kterých jsem mluvil, tak to bylo pouze warnings, takže jsem to mohl nakonec spustit.

Potom jsem si ale z odněkud opsal ukázkový nějaký kód pro DOS. Vypadal takto(napíšu ho i s komentáři):

SECTION .text
;První program pro operační systém DOS
;Jen ukončí svoji činnost

org 0x100 ;Budeme generovat soubor COM, zavádí se od adresy ox100

mov ah, ox4C ; funkce ukončí program
mov al, 0 ; návratový kód 0
int 0x21 ; zavoláme jádro operačního systému

; konec programu


Když se ho ale pokusím přeložit(pomocí NASM), tak už to není pouze warning, ale prostě se to nepřeloží a ukazuje to tuto chybu:
New.asm: 3: parser: instruction expected

New je název souboru, to 3 bude asi třetí řádek, protože já ten program mám napsaný bez těch komentářů jenom tak:

SECTION .text

org 0x100

mov ah, 0x4C
mov al, 0
int 0x21

A navíc vím, že když ten řádek s "org" oddělám, tak už to funguje. Vůbec ten příkaz org neznám. Program jede i bez něj, ale asi tam k něčemu bude a mě by zajímalo, co mám špatně.

Citovat příspěvek

 

Re: Assembler - Zakladni Program

Autor: starous

23:34:30 02.10.2011

Co jsem tak v rychlosti prolétl na internetu, tak většina tutoriálů se
věnuje DOSu, možná bych to zkusil ze začátku touto cestou. Můžeš použít
DosBox a nemusíš se obávat, že se tvůj program pokusí sestřelit systém.

Ty chybové zprávy, které jsi uváděl v prvním příspěvku, jsou o tom, že
musíš nějak označit blok pro data, blok pro program (odkud se má program
spustit) a pak blok zásobníku.

Tady je odkaz na jeden kraťoučký tutorial:

http://while1.wz.cz/t_program.php?keycode=1028


Dne 2.10.2011 22:53, pepa999 napsal(a):
>
>
> Dělám v tom Assembleru s instrukční sadou mikroprocesoru 80386, používám překladač NASM. A dělám to tak, že napíšu program v PSPadu, což je něco jako poznámkový blok, takže žádný knihovny ani nic podobnýho k tomu nepřidávám. a potom to přeložím pomocí NASM a nakonec spustím. Přeložilo se mi to, ale při spuštění mi to hodilo výše popsanou chybu. Tady je ten NASM http://www.ulozto.cz/10478083/nasmlink-zip
>
> Tady je to aji vyfocený:http://www.ulozto.cz/10478207/nic99-jpg
>
>


Příspěvek zaslán emailem

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: pepa999

22:53:49 02.10.2011

Dělám v tom Assembleru s instrukční sadou mikroprocesoru 80386, používám překladač NASM. A dělám to tak, že napíšu program v PSPadu, což je něco jako poznámkový blok, takže žádný knihovny ani nic podobnýho k tomu nepřidávám. a potom to přeložím pomocí NASM a nakonec spustím. Přeložilo se mi to, ale při spuštění mi to hodilo výše popsanou chybu. Tady je ten NASM http://www.ulozto.cz/10478083/nasmlink-zip

Tady je to aji vyfocený:http://www.ulozto.cz/10478207/nic99-jpg

Citovat příspěvek

 

Re: Assembler - Základní Program

Autor: Maaartin

22:30:54 02.10.2011

Ja to nevim, ale kdo to vi ti asi taky neporadi. Nenapsal jsi totiz vubec v cem delas ("Assembleru" je jazyk, presneji receno hafo jazyku; to nerika nic o pouzitym programu). Mozna to nekdo pozna podle presny formulace hlasky a mozna ne.

Citovat příspěvek

 

Assembler - Základní Program

Autor: pepa999

21:50:56 02.10.2011

Dobrý den. Zkoušel jsem si napsat základní program v Assembleru, ale nedopadlo to dobře. Program vypadá takto:

SECTION .text

mov eax, 2
mov ebx, 5

A při pokusu o spuštění mě to napsalo Error:
No Stack Segment
Program has no starting adress

Nevíte někdo, co tam ještě chybí? Chtěl bych znát to minimum, co musí každý program obsahovat, abych v tom Assembleru mohl začít programovat.

Děkuji za případné odpovědi.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: