+ All Categories
Home > Documents > RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN...

RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN...

Date post: 07-Nov-2018
Category:
Upload: dinhnga
View: 224 times
Download: 0 times
Share this document with a friend
37
RAČUNARSKA ELEKTRONIKA – VEŽBE 3 Aleksandra Lekić [email protected] Elektrotehnički fakultet, Univerzitet u Beogradu 2016/2017 ETF Beograd RE VEŽBE 3 2016/2017 1 / 37
Transcript
Page 1: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

RAČUNARSKA ELEKTRONIKA – VEŽBE 3

Aleksandra Lekić[email protected]

Elektrotehnički fakultet, Univerzitet u Beogradu

2016/2017

ETF Beograd RE VEŽBE 3 2016/2017 1 / 37

Page 2: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure

Procedure

Organizacijom koda u okviru procedura koje obavljaju specifičnezadatke vrši se podela programa na manje programske jedinice kojesu preglednije, pogodnije za odvojeno testiranje, sam program selakše održava, dok se neki delovi koda mogu efikasnije ponavljati.Korišćenje asemblerskih procedura je omogućeno pomoću dveinstrukcije:

CALL stavlja na stek povratnu adresu i preusmerava tok programana prvu instrukciju procedure.RET instrukcija vraća sa steka povratnu adresu i usmerava tokprograma na instrukciju koja se nalazi na toj adresi.

ETF Beograd RE VEŽBE 3 2016/2017 2 / 37

Page 3: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure

Procedure

PROC i ENDP direktive označavaju početak i kraj procedure.PROC može automatski da:

Sačuva vrednosti registara koji se ne smeju menjati u proceduri, aliih procedura ipak koristi.Podesi lokalni pokazivač steka tako da se može pristupati lokalnimpromenjivama koje se nalaze na steku.Podesi vrednost pokazivača steka kada se završi procedura.

ETF Beograd RE VEŽBE 3 2016/2017 3 / 37

Page 4: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure

Definisanje procedure

Potrebno je specificirati labelu na početku i RET instrukciju nakraju procedure.Procedure se definišu korišćenjem PROC direktive na početkuprocedure i ENDP direktive na kraju. RET instrukcija se navodineposredno pre ENDP direktive.

label PROC...RET constantlabel ENDP

CALL instrukcija stavlja na stek adresu prve naredne instrukcije ipreusmerava tok programa na adresu prve instrukcije procedure.Sintaksa CALL instrukcije je: CALL {label/register/memory}

ETF Beograd RE VEŽBE 3 2016/2017 4 / 37

Page 5: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure

Prosleđivanje preko steka

Pozivom procedure smatra se da su parametri koji se prosleđujupromenljivi.Parametri se mogu proslediti registarski, memorijski ili preko steka.Svakom argumentu koji se prenosi preko steka se pristupa relativnou odnosu na adresu u EBP registru koji ukazuje na vrh steka.

ETF Beograd RE VEŽBE 3 2016/2017 5 / 37

Page 6: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure

Prosleđivanje preko steka

ETF Beograd RE VEŽBE 3 2016/2017 6 / 37

Page 7: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure

Prosleđivanje preko steka

ETF Beograd RE VEŽBE 3 2016/2017 7 / 37

Page 8: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Deklarisanje parametara procedure

Deklarisanje parametara procedure

Mogu se deklarisati registri koji se koriste u okviru procedure, datiparametri procedure i dodeliti simbolička imena promenljivih(umesto ofseta u EBP registru).label PROC [attributes][USES reglist][,][parameter[:tag]]...

ETF Beograd RE VEŽBE 3 2016/2017 8 / 37

Page 9: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Deklarisanje parametara procedure

Deklarisanje parametara procedure

Argument Opislabel Ime procedure.

attributes Nekoliko atributa procedure: vidljivost, langtype,udaljenost...

reglist Imena registara koji se koriste uz ključnu reč USES.Odvojeni su razmakom imena. Pozivom procedure sevrednosti ovih registara stavljaju na stek, a izlaskom izprocedure skidaju sa steka.

parameter Lista parametara koji se prosleđuju proceduri prekosteka. Može biti proizvoljan broj parametara.

ETF Beograd RE VEŽBE 3 2016/2017 9 / 37

Page 10: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Deklarisanje parametara procedure

Deklarisanje parametara procedure - atributi procedure

Atribut Opisdistance Kontroliše format generisane RET instrukcije.

Može biti NEAR ili FAR i deklariše ga .MODEL.NEAR je za TINY, SMALL, COMPACT i FLAT.FAR je za MEDIUM, LARGE i HUGE.

langtype Determiniše calling konvenciju i može bitiC, BASIC, FORTRAN i PASCAL.

visibility Može biti PRIVATE, PUBLIC i EXPORT.Ako ništa nije rečeno, smatra se da je PUBLIC.EXPORT pravi izvršnu (.exe) proceduru, isto public.

prologuearg Utiče na generisanje prologue i epilogue koda.

ETF Beograd RE VEŽBE 3 2016/2017 10 / 37

Page 11: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Deklarisanje parametara procedure

Deklarisanje parametara procedure - parametri procedure

Ukoliko se pišu u redu sa atributima, odvajaju se međusobnorazmakom. Ako se pišu u novom redu, odvaja se zarezom.Format parametra je parameter[:tag]. parameter je imeparametra, a tag je tip parametra ili ključna reč VARARG (kojumože da ima samo poslednji argument u listi).

ETF Beograd RE VEŽBE 3 2016/2017 11 / 37

Page 12: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Primer 1

1 .3862 .model flat,stdcall3 .stack 40964 ExitProcess proto,dwExitCode:dword56 .data7 var1 dword 108 var2 dword 209 var3 dword 30

10 var4 dword ?1112 .code13 saberi proc c uses eax,14 arg1:dword, arg2:dword, arg3:dword15 mov eax, arg116 add eax, arg217 add eax, arg318 mov var4, eax19 ret20 saberi endp2122 main proc23 push var3 ; stavi na stek24 push var225 push var126 call saberi ; poziv procedure27 add esp, 3∗4 ; unistava podatke sa steka2829 invoke ExitProcess,030 main endp31 end main

ETF Beograd RE VEŽBE 3 2016/2017 12 / 37

Page 13: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Primer 1

VARARG parametar procedure

Dodavanjem :VARARG poslednjem parametru se označava daprocedura prihvata proizvoljan broj parametara.Pre :VARARG se mora navesti ime da se označi u odnosu na kojuadresu se pristupa parametrima sa ofsetom.

ETF Beograd RE VEŽBE 3 2016/2017 13 / 37

Page 14: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Primer 2

1 .3862 .model flat,stdcall3 .stack 40964 ExitProcess proto,dwExitCode:dword56 .code7 varargproc PROC c, argcount:WORD, arg1:VARARG8 xor eax, eax ; EAX = 09 xor esi, esi ; ESI = 0

10 addarguments:11 cmp argcount, 012 jbe finish13 add eax, arg1[esi]14 dec argcount15 add esi, 416 jmp addarguments17 finish:18 ret19 varargproc ENDP2021 main proc22 mov eax, 10h ; EAX = 10h23 mov ebx, 20h ; EBX = 20h24 mov ecx, 30h ; ECX = 30h25 push ecx26 push ebx27 push eax28 push 3 ; stavlja na stek2930 call varargproc31 add esp,4∗432 invoke ExitProcess,033 main endp34 end main

ETF Beograd RE VEŽBE 3 2016/2017 14 / 37

Page 15: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Lokalne promenljive

Lokalne promenljive

Lokalne promenljve su vidljive samo u okviru procedure.Potrebno je rezervisati mesto na steku za njih. Zatim im se možepristupiti ofsetom u odnosu na stek pokazivač.Na kraju procedure je potrebno dealocirati ovu memoriju.

ETF Beograd RE VEŽBE 3 2016/2017 15 / 37

Page 16: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Primer 3

1 .3862 .model flat,stdcall3 .stack 40964 ExitProcess proto,dwExitCode:dword56 .code7 locvarproc PROC8 push ebp9 mov ebp, esp

1011 sub esp, 4 ; Mesto za DWORD promenjivu12 mov DWORD PTR [ebp−4], 3 ;Inicijalizacija lokalne promenjive1314 mov eax, [ebp+8] ; Preneseni argument preko steka se smesta u eax15 sub DWORD PTR [ebp−4], eax ; Sadrzaj eax se oduzima od loklne promenjive1617 mov eax, DWORD PTR [ebp−4]; Sadrzaj se vraca preko akumulatora18 mov esp, ebp ; Cisti stek od lokalnih promenjivih19 pop ebp2021 ret22 locvarproc ENDP2324 main proc25 push 126 call locvarproc27 add esp, 4 ; Ciscenje steka28 invoke ExitProcess,029 main endp30 end main

ETF Beograd RE VEŽBE 3 2016/2017 16 / 37

Page 17: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Primer 3

Lokalne promenljive - primer 3

ETF Beograd RE VEŽBE 3 2016/2017 17 / 37

Page 18: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Lokalne promenljive

Automatsko kreiranje lokalnih promenljivih

LOCAL direktivaOmogućava automatsko kreiranje lokalnih promenljivih.Rezerviše se prostor na steku za promenljivu i pristupa joj se prekosimboličkog imena (ne kao ofset na EBP).Nakon izlaska iz procedure dealocira memoriju na steku.Navodi se odmah posle PROC direktive.

LOCAL vardefvardef = label [count][:qualifiedtype]label - ime lokalne promenljivecount - broj elemenata koji se alocira na steku. Zagrade su obavezne.Ako se ne specificira, smatra se jedan objekat.qualifiedtype - tip podatka

ETF Beograd RE VEŽBE 3 2016/2017 18 / 37

Page 19: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Procedure Primer 4

1 .3862 .model flat,stdcall3 .stack 40964 ExitProcess proto,dwExitCode:dword56 .data7 arraysz EQU 208 startData DWORD 309

10 .code11 findSum PROC uses esi ecx edx12 LOCAL data[arraysz]:DWORD, sum:DWORD13 mov ecx, arraysz14 xor esi, esi15 initialise:16 mov eax, esi ; Inicijalizuje17 mul esi ; rezervisani prostor18 mov data[4∗esi], eax ; sa kvadratima brojeva19 inc esi ; od 0 do arraysz-120 loop initialise2122 mov ecx, arraysz23 xor esi, esi24 mov eax, [ebp+8] ; U eax stavlja ulazni

argument25 mov sum, eax26 calculatesum:27 mov eax, data[4∗esi] ; Sabira ulazni argument28 add sum, eax ; sa inicijalizovanim29 inc esi ; kvadratima30 loop calculatesum31 mov eax, sum ; rezultat sabiranja vraca preko32 ; akumulatora33 ret34 findSum ENDP

35 main proc36 push startData37 call findSum38 add esp, 4 ; Ciscenje steka39 invoke ExitProcess,040 main endp41 end main

ETF Beograd RE VEŽBE 3 2016/2017 19 / 37

Page 20: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Zajednički podaci

U slučaju postojanja više fajlova, potrebno je da se podaci mogukoristiti u svakom od njih.Postoje dva načina za deljenje podataka: korišćenjem PUBLIC iEXTERN direktive i korišćenjem definicionih fajlova.

ETF Beograd RE VEŽBE 3 2016/2017 20 / 37

Page 21: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Zajednički podaci

Korišćenje definicionih fajlova

Doprinose organizaciji projekta.Deklaracije tipova podataka i funkcija koje su iste za sve module sestavljaju u definicione fajlove.Ako više fajlova koristi definicioni fajl, on ne sme sadržatipromenljive koje vrše alociranje memorijskog prostora.Umeću se u asemblerski fajl korišćenjem ključne reči INCLUDE:INCLUDE filename.INCLUDE direktiva se navodi pre .DATA i .CODE sekcije.

PrimerINCLUDE SCREEN.INC

ETF Beograd RE VEŽBE 3 2016/2017 21 / 37

Page 22: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Zajednički podaci

Korišćenje definicionih fajlova

Ukoliko definicioni fajl nije u okviru projekta, putanja do njegamora biti data.Definicioni fajl može da sadrži drugi definicioni fajl.Unutar definicionog fajla se mogu koristiti ključne reči:

EQU za kreiranje simboličke konstante čija vrednost se ne možepromeniti u programu.TYPEDEF, STRUCT, UNION i RECORD za definisanje tipova podataka.PROTO, EXTERN i COMM za definisanje procedura kao globalnih.

Procedura/promenljiva se definiše kao globalna:Definicijom kao PUBLIC u jednom fajlu i deklaracijom kao EXTERN udrugom.Deklaracijom sa EXTERNDEF direktivom.Deklaracijom procedure sa PROTO direktivom.

ETF Beograd RE VEŽBE 3 2016/2017 22 / 37

Page 23: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Zajednički podaci

EXTERNDEF

Predstavlja javnu definiciju u definicionom fajlu i spoljašnjudefiniciju u ostalim fajlovima.Može da se koristi za procedure i sve tipove podataka.

SintaksaEXERNDEF [langtype] name:qualifiedtypename - ime promenljive/procedurelangtype - definisano u okviru .MODEL direktive i može biti: C, PASCAL,STDCALL, SYSCALL, FORTRAN i BASIC.

ETF Beograd RE VEŽBE 3 2016/2017 23 / 37

Page 24: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Zajednički podaci

EXTERNDEF

Može se koristiti i za labele i tako omogućava referenciranje kodaizmeđu modula.EXTERNDEF codelabel:typecodelabel :: - moraju se navesti dve dvotačke prilikomdefinisanja labele

ETF Beograd RE VEŽBE 3 2016/2017 24 / 37

Page 25: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Primer 5

Mod.inc1 EXTERNDEF doAction:NEAR2 EXTERNDEF returnFromAction:NEAR3 EXTERNDEF array:BYTE

Mod1.asm1 .3862 .model flat, stdcall3 option casemap:none45 include Mod.inc67 .data89 array db 10, 20 , 30 , 40

1011 .code12 start:13 jmp doAction14 returnFromAction::15 ret16 end start

Mod2.asm1 .3862 .model flat, stdcall3 option casemap:none45 include Mod.inc67 .data89 array1 db 4 DUP(?)1011 .code12 doAction::13 mov ecx, sizeof array114 cld15 mov esi, offset array16 mov edi, offset array117 rep movsb18 jmp returnFromAction19 end

ETF Beograd RE VEŽBE 3 2016/2017 25 / 37

Page 26: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Zajednički podaci

PROTO

Automatski određuje EXTERNDEF ponašanje procedure, osim kadaje procedura deklarisana kao PRIVATE.Da bi se jedna procedura definisala u jednom, a koristila u drugommodulu treba ispoštovati sledeće korake:

1 Deklarisati proceduru sa PROTO naredbom u definicionom fajlu.2 Definisati proceduru sa PROC direktivom u jednom modulu.3 Pozvati proceduru naredbom CALL ili INVOKE.

ETF Beograd RE VEŽBE 3 2016/2017 26 / 37

Page 27: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Primer 6

Mod.inc1 TestProcedure PROTO STDCALL arg1:DWORD,

arg2:DWORD

Mod1.asm1 .3862 .model flat,stdcall3 .stack 40964 ExitProcess proto,dwExitCode:dword56 include Mod.inc78 .data9 arg1 DD 0ABCDEF10h

10 arg2 DD 000000010h1112 .code13 main proc14 push arg215 push arg116 call TestProcedure17 invoke ExitProcess,018 main endp19 end main

Mod2.asm1 .3862 .model flat,stdcall3 .stack 40964 ExitProcess proto,dwExitCode:dword56 include Mod.inc78 .data9 array1 db 4 DUP(?)1011 .code12 TestProcedure PROC STDCALL USES EDI ESI,13 arg1:DWORD, arg2:DWORD1415 mov esi, arg116 mov edi, arg217 add esi, edi18 mov eax, esi19 ret20 TestProcedure endp21 end

ETF Beograd RE VEŽBE 3 2016/2017 27 / 37

Page 28: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije

Deljenje podataka i funkcija podešavanjem njihovevidljivosti

Ukoliko postoje samo dva .asm fajla, može se definisati podatak iliprocedura kao globalna bez .inc fajla.U definišućem modulu se koristi PUBLIC, a u drugom moduluEXTERN.

SintaksaPUBLIC [langtype] name, ...EXTERN [langtype] name:qualifiedtypelangtype - STDCALL, SYSCALL, C, PASCAL, FORTRAN ili BASIC

ETF Beograd RE VEŽBE 3 2016/2017 28 / 37

Page 29: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Zajednički podaci i funkcije Primer 7

Mod1.asm1 .3862 .model flat,stdcall3 .stack 40964 ExitProcess proto,dwExitCode:dword56 PUBLIC arg37 EXTERN c TestProcedure:NEAR89 .data

10 arg1 DD 0ABCDEF10h11 arg2 DD 000000010h12 arg3 DD 000000020h1314 .code15 main proc16 push arg217 push arg118 call TestProcedure19 add esp, 820 invoke ExitProcess,021 main endp22 end main

Mod2.asm1 .3862 .model flat,stdcall3 .stack 40964 ExitProcess proto,dwExitCode:dword56 EXTERN arg3: DWORD7 PUBLIC c TestProcedure89 .code10 TestProcedure PROC c USES EDI ESI ECX,11 arg1:DWORD, arg2:DWORD1213 mov esi, arg114 mov edi, arg215 add esi, edi16 mov eax, esi17 ret1819 TestProcedure endp20 end

ETF Beograd RE VEŽBE 3 2016/2017 29 / 37

Page 30: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Makroi

Makro

Predstavlja simboličko ime koje se dodeljuje nizu karaktera iligrupi naredbi.Prilikom poređenja kompajler proverava da li ime unutarinstrukcije pripada nekom makrou i ako jeste zamenjuje makrotekstom koji ga definiše.Ovo je način da se izbegne ponavljanje koda.

ETF Beograd RE VEŽBE 3 2016/2017 30 / 37

Page 31: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Makroi

Vrste makroa

Tekstualni makro - zamenjuje simboličko ime tekstom koji gadefiniše.Makro procedura - zamenjuje simboličko ime jednom ili grupomnaredbi koje ga definišu. Opciono može imati parametre.Blokovi koji se ponavljaju, zamenjuju simboličko ime grupomnaredbi specificirani broj puta, ili dok se ne zadovolji specificiranuslov.Makro funkcija - sličan je makro proceduri pri čemu može bitikorišćen i kao tekstualni makro, s tim što vraća vrednost.Predefinisane makro funkcije i stringovne direktive koje obavljajuoperacije nad stringovima.

ETF Beograd RE VEŽBE 3 2016/2017 31 / 37

Page 32: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Makroi Tekstualni makroi

Tekstualni makroi

Direktiva TEXTEQU definiše tekstualni makro.

ETF Beograd RE VEŽBE 3 2016/2017 32 / 37

Page 33: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Makroi Makro procedure

Makro procedure

Koristi se kada je potrebno izvršiti više puta grupu naredbi.Može se definisati i bez parametara:name MACRO...ENDM

Komentari se navode iza duplog znaka ;;.Kada se jednom definiše makro, može se koristiti bilo kada uprogramu.Ima istu ulogu kao obična procedura, ali se izvršava brže zato štonema grananja unutar makroa. Međutim, svaki put kada sepozove, ceo kod makroa se kopira na tom mestu u objektnom fajlu.

ETF Beograd RE VEŽBE 3 2016/2017 33 / 37

Page 34: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Makroi Makro procedure

Prenošenje argumenata makrou

name MACRO parameterlist...ENDM

parameterlist sadrži različiti broj parametara odvojenihzarezima.Argumenti se prosleđuju makrou u listi nakon poziva imenamakroa: macroname argumentlist.Kompajler prijavljuje grešku ako se makrou prosledi višeargumenata nego što je definisano. Ako se prosledi manje,kompajler dodeljuje prazne stringove parametrima.

ETF Beograd RE VEŽBE 3 2016/2017 34 / 37

Page 35: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Makroi Makro procedure

Lokalni simboli u makrou

Mogu se definisati lokalne promenljive odmah na početku makroapozivom LOCAL direktive.Sve labele u makrou se moraju definisati kao lokalne. Naime,labela odgovara jednoj instrukciji u programu i zato sme da se daisto ime samo jednoj labeli. Definicijom labele kao lokalne sesprečava njeno redefinisanje nakon ekspanzije koda u objektni fajl.

ETF Beograd RE VEŽBE 3 2016/2017 35 / 37

Page 36: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

Makroi Makro procedure

Primer

ETF Beograd RE VEŽBE 3 2016/2017 36 / 37

Page 37: RACUNARSKA ELEKTRONIKA VE BE 3tnt.etf.bg.ac.rs/~oe3re/Vezbe/RE_cas_3.pdf · STDCALL,SYSCALL,FORTRAN iBASIC. ETFBeograd REVEŽBE3 2016/2017 23/37. Zajedničkipodaciifunkcije Zajedničkipodaci

KRAJ!

ETF Beograd RE VEŽBE 3 2016/2017 37 / 37


Recommended