Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

jednostavan program

[es] :: Asembler :: jednostavan program

[ Pregleda: 6671 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

SnOoP
ARDIS - Optimisation software

Član broj: 522
Poruke: 31
*.a.008.mel.iprimus.net.au

ICQ: 17672962
Sajt: www.pozarnica.net


Profil

icon jednostavan program05.01.2002. u 17:10 - pre 238 meseci
cao narode. dali moze neko da mi objasni malo vise o ovim registerima:
%eax, %ebx etc... ako bi neko bijo "ljubazan" ;) da napise jednostavan programcic (Hello World!) i da mi objasni linije programa.

Mnogo Hvala.. :)
int mailme()
{
char email[21]="\x115\x110\x111\x111\x112\x64\x110\x111\x115\x116\x97\x108\x103\x105\x106\x97\x46\x99\x111";
return 0;
}

The important thing is not to stop questioning. Curiosity has its own reason for existing. (Albert Einstein) ;-)
 
Odgovor na temu

SnOoP
ARDIS - Optimisation software

Član broj: 522
Poruke: 31
*.a.008.mel.iprimus.net.au

ICQ: 17672962
Sajt: www.pozarnica.net


Profil

icon Re: jednostavan program05.01.2002. u 17:26 - pre 238 meseci
a da i da nezaboravim dali ko ima mozda stranicu gde mogu da naucim malo vise o assembler komandama (x86) ... poznajem HC11 dobro al .. x86 je malo teze skuzit..

Hvala ;)
int mailme()
{
char email[21]="\x115\x110\x111\x111\x112\x64\x110\x111\x115\x116\x97\x108\x103\x105\x106\x97\x46\x99\x111";
return 0;
}

The important thing is not to stop questioning. Curiosity has its own reason for existing. (Albert Einstein) ;-)
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13650



+162 Profil

icon Re: jednostavan program05.01.2002. u 18:46 - pre 238 meseci
Dok ti neko ne napiše primer, razgledaj ovde:

http://docs.elitesecurity.org/books/programming/asm/
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.170.EUnet.yu

ICQ: 44582291


+58 Profil

icon Re: jednostavan program05.01.2002. u 21:32 - pre 238 meseci
primer za: "hello world"
kompajlirati: A86
platforma: DOS

mov ah,09 ; ah = 09 - funkcija za ispis stringa
mov dx,offset Poruka ; dx = adresa stringa u memoriji
int 021h ; poziv interapta i izvrsavanje funkcije za ispis stringa
mov ax,04c00h ; funkcija za izlaz u DOS
int 021h ; poziv interapta i izvrsavanje funkcije za izlaz u DOS
Poruka db 'Hello World!!!','$' ; string koji ispisujemo, mora da se zavrsava karakterom '$' jer tako zahteva 09 int21h funkcija

-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

punkey
Daniel Trifunovic
Student
Beograd

Član broj: 1028
Poruke: 43
*.rstel.net

ICQ: 309629465


Profil

icon Re: jednostavan program06.01.2002. u 13:14 - pre 238 meseci
sto se tice registra postoji ih vise no oni koji ce tebi uglavnom trebati su:
(E)AX, (E)BX, (E)CX, (E)DX. Kao sto vidis E je u zagradi i to znaci extended odnosno da se radi o 32 -bitnim registrima. Ovi registri javljaju se na racunarima od 386 -ice. Dok su registri AX, BX, CX, DX 16 -bitni. Svaki od njih se moze podeliti u 2 dela. Jedan je visi a drugi nizi i oba zauzimaju po 8 bita. Dele se tako sto npr. uzmes AX i skines X i tu stavis H(high) ili L(low). I dobijes od AH & AL = AX, BH & BL = BX itd. Valjda si skontao nije tesko. No glavno je da zapamtis da su registri vec unapred definisane promenljive u kojima ti cuvas podatke. Dakle definisani su od strane tvog racunara(CPU). Svaki od njih ima razlicitu namenu, a rad nekih je povezan. Tako npr. AX ili akumulator ima namenu za matematicke operacije I/O funkcije, INT 21 koji smo koristili u donjem programu kako bismo ispisali karaktere hello world na terminalu, zatim BX koristimo kao BASE ili POINTER, etc. Imamo jos registrija kao sto su segment registri SS, CS, DS, ES, zatim stack registre SP, BP pa jos i index registre SI, DI koji se koriste za manipulaciju sa stringovima i IP koji pokazuje na adresu pod imenom offset. Uostalom skuzices to kada budes ucio segmente. Ima jos dosta toga, ali ja moram ici napolje. Badnje je vece a ja jos ovako romantican ;o).

A sto se tice programa hello world vazno je da skontas interrupt namjenu. INT ima vise tzv. servisa pa je najbolje da skines interrupt listu npr. od Ralph Browna. Za ispisivanje texta na terminalu treba ti int lista 21 i objasnjene servisa koji ono pruza.

DOSSEG ; koristimo dos segment
.MODEL SMALL ; koliko memorije nas program treba
.STACK 100h ; rezervisemo 100h bita za stack
.DATA ; ispod ovoga definisemo promenljive
HELLOMESSAGE DB 'HELLO WORLD',13,10 ; nasa promenljiva
.CODE ; ovde pocinje program, tj. izvrsavanje
MOV AX,@DATA ; stavlja adresu od data u AX registar
MOV DS,AX ; zatim ga pomera u segment registar DS
MOV AH,9 ; DOS output funkcija
MOV DX, OFFSET HELLOMESSAGE ; stavlja offset od hellomsg u DX

INT 21 ; stampa poruku na ekranu
MOV AH,4C ; prekida funkciju int 21 i izlazi u DOS
INT 21 ; izvrsava funkciju int 21
END ; i zavrsava program

Ovo sam samo stavio na tvoj zahtev mada bi trebao da procitas nesto o interrupt kako bi ovo u potpunosti razumio, i sto se tice instrukcija Gojko ti je rekao sve. Nadji listu i citaj! Aj cao!
 
Odgovor na temu

SnOoP
ARDIS - Optimisation software

Član broj: 522
Poruke: 31
*.b.010.mel.iprimus.net.au

ICQ: 17672962
Sajt: www.pozarnica.net


Profil

icon Re: jednostavan program07.01.2002. u 02:56 - pre 238 meseci
mnogo vam hvala momci :)
int mailme()
{
char email[21]="\x115\x110\x111\x111\x112\x64\x110\x111\x115\x116\x97\x108\x103\x105\x106\x97\x46\x99\x111";
return 0;
}

The important thing is not to stop questioning. Curiosity has its own reason for existing. (Albert Einstein) ;-)
 
Odgovor na temu

SnOoP
ARDIS - Optimisation software

Član broj: 522
Poruke: 31
*.a.002.mel.iprimus.net.au

ICQ: 17672962
Sajt: www.pozarnica.net


Profil

icon Re: jednostavan program07.01.2002. u 06:01 - pre 238 meseci
samo jos da vam pokazem jednostavan "Hello World" program HC11 procesora. samo da vidite razliku "jednostavnosti" izmedju HC11 i x86.

ORG $2000 ;pocetna adresa varijabla
FILL $0D,$10 ; popuni memoriju (clear screen), enter 0x10 puta
FCC 'Hello World' ; const char str.

ORG $2100 ; pocetna adresa programa
<b>START</b> LDS #$7FFF ; load stack pointer
LDX #$2000 ; X register <- addr 0x2000
LDAB #$10 ; B reg <- 0x10 (ovo cemo da koristimo kao counter za ispisivanje char's)
<b>REPEAT</b> LDAA $00,x ;addressing A reg (index) (pocetni array 00)
PSHB
JSR $83AE ; (jump sub routine OUTCHA(83AE) (stdout na intel'u)
PULB
INX ; x reg ++
DECB ; B reg --
BNE REPEAT
BRA *
END

ovaj asm. programcic od HC11 processor'a bi ispisao Hello World na konzoli.

Ovo je meni vrlo lakse razumjeti nego x86... .. za mene x86 ima vise op-codova i registera :(. sve u svemo jos jednom vam hvala. mnogo ste mi objasnili vasim primjerima. to mi je trebalo :)
int mailme()
{
char email[21]="\x115\x110\x111\x111\x112\x64\x110\x111\x115\x116\x97\x108\x103\x105\x106\x97\x46\x99\x111";
return 0;
}

The important thing is not to stop questioning. Curiosity has its own reason for existing. (Albert Einstein) ;-)
 
Odgovor na temu

SnOoP
ARDIS - Optimisation software

Član broj: 522
Poruke: 31
*.a.002.mel.iprimus.net.au

ICQ: 17672962
Sajt: www.pozarnica.net


Profil

icon Re: jednostavan program07.01.2002. u 07:24 - pre 238 meseci
dali je ovo tacno:

.data
msg:
.string "Hello World\n" ; string
len = . - msg : duzina string'a
.text
.global start ;izvest ulazni point za ELF linker
start:
movl $len,%edx ;treci argument (duzina msg'a)
movl $msg,%ecx ; drugi argument (pointer to msg da ispise)
movl $1,%ebx ;prvi argument (stdout)
movl $4,%eax ; za SYS_WRITE
int $0x80 ; call kernel (kernel mode)

zatim:

movl $0,%ebx ; exit
movl $1,%eax ;(SYS_EXIT)
int $0x80 ; nazad na kernel mode

?
int mailme()
{
char email[21]="\x115\x110\x111\x111\x112\x64\x110\x111\x115\x116\x97\x108\x103\x105\x106\x97\x46\x99\x111";
return 0;
}

The important thing is not to stop questioning. Curiosity has its own reason for existing. (Albert Einstein) ;-)
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: jednostavan program07.01.2002. u 15:38 - pre 238 meseci
Dobro je sam sto komentari pocinju sa # a umesto "start" treba "_start" al' to mozes i sam da provalis ako probas da prevedes program pa vidis gde su greske...

Inace probaj umesto "Hello World\n" da stavis samo "Hello World" pa javi ako se odstampa nesto na ekranu...
vitamini, minerali, suplementi...
 
Odgovor na temu

SnOoP
ARDIS - Optimisation software

Član broj: 522
Poruke: 31
*.c.002.mel.iprimus.net.au

ICQ: 17672962
Sajt: www.pozarnica.net


Profil

icon Re: jednostavan program08.01.2002. u 13:24 - pre 238 meseci
a zasto mora da bude _start? .. namjerno sam stavijo tu gresku da vidim dali bi me neko ispravijo. hvala na tome anatogen ;) . btw. hvala za "tip" :)
int mailme()
{
char email[21]="\x115\x110\x111\x111\x112\x64\x110\x111\x115\x116\x97\x108\x103\x105\x106\x97\x46\x99\x111";
return 0;
}

The important thing is not to stop questioning. Curiosity has its own reason for existing. (Albert Einstein) ;-)
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: jednostavan program12.01.2002. u 05:04 - pre 238 meseci
Citat:
anatogen:
Dobro je sam sto komentari pocinju sa # a umesto "start" treba "_start" al' to mozes i sam da provalis ako probas da prevedes program pa vidis gde su greske...


Nije greska promeniti ime entry pointa :) samo sa ld mislim da je opcija -e dodas kao parametar : -e start i to sljaka
 
Odgovor na temu

azrael
Strahinja Glisic
Beograd

Član broj: 2497
Poruke: 19
*.ppp-bg.sezampro.yu

ICQ: 7301773
Sajt: www.suse.de


Profil

icon Re: jednostavan program25.02.2002. u 09:17 - pre 236 meseci
Citat:
Gojko Vujovic:
Dok ti neko ne napiše primer, razgledaj ovde:



http://docs.elitesecurity.org/books/programming/asm/


Moj favorit je Art of assembly programming. Ima je u HTMLu recimo na

http://www.matf.bg.ac.yu/~vlad...t/ArtOfAsm/HTMLs/ArtofAsm.html

a i pdf se lako nadje na internetu (trazite link:aoa.pdf)
 
Odgovor na temu

[es] :: Asembler :: jednostavan program

[ Pregleda: 6671 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.