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:



Zaciatocnicka pomoc

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Zaciatocnicka pomoc

Autor: Luboš

20:58:15 10.08.2008

Linux neznám, ale v příkladu v knize Assembler pro PC
(str.189) je na začátku zdrojáku toto:

SECTION .text
global _start ;aby linker věděl, kde je začátek našeho programu,
;musíme definovat globálně symbol, _start
_start:
...
...

A jak řekl Luinar, určitě by bylo vhodné i druhé volání služby os doplnit o nastavení hodnot registrů eax a ebx.

Citovat příspěvek

 

Re: Zaciatocnicka pomoc

Autor: Luinar

19:03:06 10.08.2008

Typicky se v EAX vraci vysledek volani. Tj. zkusil bych znovu nainicializovat EAX po vypsani prvniho retezce (a ev. i EBX) - zkus si to odkrokovat v debugeru a pozorovat obsah registru.
Luinar

Citovat příspěvek

 

Zaciatocnicka pomoc

Autor: Lamer_

16:55:22 09.08.2008

Zdravim,
som absolutny zaciatocnik v assembleri(platforma linux) a pokusal som sa napisat program ktory vypise dva
retazce a splodil som toto



SECTION .text

mov eax,4
mov ebx,1
mov ecx, text1
mov edx,15
int 0x80
mov ecx, text2
mov edx,16
int 0x80

mov eax,1
xor ebx,ebx
int 0x80

SECTION .data
text1 db "toto je text 1",0xA
text2 db "toto je 2. text",0xA



pouzivam prekladac nasm. Kompilujem to takto:

nasm -f elf first.asm && ld -s -o first first.o

prelozi sa to s waringom:

ld: warning: cannot find entry symbol _start; defaulting to 0000000008048080

a ked program spustim vypise sa akurat toto je text 1 a ukonci sa...
Kde mam chybu?

Citovat příspěvek

 

 

 

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

Uživatelské jméno:

Heslo: