RACUNARSKA ELEKTRONIKA – VEŽBE 3

Слични документи
P1.2 Projektovanje asemblera

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

Microsoft Word - 11 Pokazivaci

Tutoring System for Distance Learning of Java Programming Language

Logicko projektovanje racunarskih sistema I

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

P11.3 Analiza zivotnog veka, Graf smetnji

Uvod u organizaciju i arhitekturu računara 2 1

Tutoring System for Distance Learning of Java Programming Language

Zbirka resenih zadataka iz arhitekture racunara

OPIS RAČUNARSKOG SISTEMA Računarski sistem se sastoji od procesora, operativne memorije, tajmera i terminala. Sve komponente računarskog sistema su me

P1.3 Projektovanje makroasemblera

PROMENLJIVE, TIPOVI PROMENLJIVIH

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Microsoft Word - 02 Elementi programskog jezika Pascal

Precesor Intel 8086

P9.1 Dodela resursa, Bojenje grafa

Algoritmi i arhitekture DSP I

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

Funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Računarski praktikum I - Vježbe 09 - this, static

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Programski jezik C

Računarski praktikum I - Vježbe 01 - Uvod

PowerPoint Presentation

3.Kontrlne (upravlja~ke) strukture u Javi

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Strukture predavač: Nadežda Jakšić

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Microsoft Word - CAD sistemi

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

RACUNARSKA ELEKTRONIKA – VEŽBE 4

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Uvod u računarstvo 2+2

PowerPoint Presentation

Tutoring System for Distance Learning of Java Programming Language

Zadatak T=5: Jedinica WBSD propušta vred Potiče iz polja Rwb.LMD Signal Rwb.WRLMD izaziva propuštanje ove vrednosti 2. Vrednost 0000

KDP

Uvod u računarstvo 2+2

070-ALIP2-udzbenik.indb

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

COMARC/A Format

Pojačavači

Programiranje za UNIX Okruženje unix procesa

PowerPoint Presentation

Fortran

Орт колоквијум

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

PowerPoint Presentation

PASCAL UVOD 2 II razred gimnazije

Edukacioni racunarski sistem

PowerPoint Presentation

Slide 1

Vezbe_AOR1_2014_V1.0

Microsoft Word - Projekat iz MIPS-a - simCPU.doc

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Kombinatorno testiranje

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Увод у организацију и архитектуру рачунара 1

Microsoft Word - IWT0906R.doc

Microsoft PowerPoint - 13 PIK (Mentor Graphic ASIC).ppt

12.WT-javaScript-Drupal

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Microsoft Word - MySQL_3.doc

CPHP_19

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Dijagrami sekvenci

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

2_Arhitektura racunara

Uvod u računarstvo 2+2

Slide 1

Microsoft PowerPoint - 11_JavaScript_1.ppt [Compatibility Mode]

Primenjeno programiranje - vezbe GUI i baze podataka

Испит из Основа рачунарске технике OO /2018 ( ) Р е ш е њ е Задатак 5 Асинхрони RS флип флопреализован помоћу НИЛИ кола дат је на след

Microsoft PowerPoint - 1. Zend_1 - Instalacija frameworka

LAB PRAKTIKUM OR1 _ETR_

P11.2 Izbor instrukcija, IBURG

UNIVERZITET UKSHIN HOTI PRIZREN FAKULTET RAČUNARSKIH NAUKA PROGRAM: TIT - BOS NASTAVNI PLAN-PROGRAM SYLLABUS Nivo studija Bachelor Program TIT-Bos Aka

Logicko projektovanje racunarskih sistema I

Microsoft PowerPoint - 12a PEK EMT VHDL 1 od 4 - Uvod (2011).ppt [Compatibility Mode]

Писање и превођење модула

PowerPoint Presentation

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

СТАРТ - СТОП ПАРКИНГ СИСТЕМ КОРИСНИЧКО УПУТСТВО страна 1 од 12

Програмирај!

Univerzitet u Nišu Prirodno-Matematički fakultet Marko D. Petković OSNOVI KONKURENTNOG PROGRAMIRANJA SA ZBIRKOM ZADATAKA Niš, 2010

Uvod u računarstvo 2+2

Baze podataka MySQL Community Server i MySQL Workbench

PowerPoint Presentation

Упутство за коришћење АМРЕС FileSender услуге

P11.1 Izbor instrukcija, najveci zalogaj

Транскрипт:

RAČUNARSKA ELEKTRONIKA VEŽBE 3 Aleksandra Lekić lekic.aleksandra@etf.bg.ac.rs Elektrotehnički fakultet, Univerzitet u Beogradu 2015/2016 ETF Beograd RE VEŽBE 3 2015/2016 1 / 30

Procedure Procedure Organizacijom koda u okviru procedura koje obavljaju specifične zadatke vrši se podela programa na manje programske jedinice koje su preglednije, pogodnije za odvojeno testiranje, sam program se lakše održava, dok se neki delovi koda mogu efikasnije ponavljati. Korišćenje asemblerskih procedura je omogućeno pomoću dve instrukcije: CALL stavlja na stek povratnu adresu i preusmerava tok programa na prvu instrukciju procedure. RET instrukcija vraća sa steka povratnu adresu i usmerava tok programa na instrukciju koja se nalazi na toj adresi. ETF Beograd RE VEŽBE 3 2015/2016 2 / 30

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, ali ih procedura ipak koristi. Podesi lokalni pokazivač steka tako da se može pristupati lokalnim promenjivama koje se nalaze na steku. Podesi vrednost pokazivača steka kada se završi procedura. ETF Beograd RE VEŽBE 3 2015/2016 3 / 30

Procedure Definisanje procedure Potrebno je specificirati labelu na početku i RET instrukciju na kraju procedure. Procedure se definišu korišćenjem PROC direktive na početku procedure i ENDP direktive na kraju. RET instrukcija se navodi neposredno pre ENDP direktive. label PROC... RET constant label ENDP CALL instrukcija stavlja na stek adresu prve naredne instrukcije i preusmerava tok programa na adresu prve instrukcije procedure. Sintaksa CALL instrukcije je: CALL {label/register/memory} ETF Beograd RE VEŽBE 3 2015/2016 4 / 30

Procedure Prosleđivanje preko steka Pozivom procedure smatra se da su parametri koji se prosleđuju promenljivi. Parametri se mogu proslediti registarski, memorijski ili preko steka. Svakom argumentu koji se prenosi preko steka se pristupa relativno u odnosu na adresu u EBP registru koji ukazuje na vrh steka. ETF Beograd RE VEŽBE 3 2015/2016 5 / 30

Procedure Prosleđivanje preko steka ETF Beograd RE VEŽBE 3 2015/2016 6 / 30

Procedure Prosleđivanje preko steka ETF Beograd RE VEŽBE 3 2015/2016 7 / 30

Procedure Deklarisanje parametara procedure Deklarisanje parametara procedure Mogu se deklarisati registri koji se koriste u okviru procedure, dati parametri procedure i doedeliti simbolička imena promenljivih (umesto ofseta u EBP registru). label PROC [attributes][uses reglist][,][parameter[:tag]]... ETF Beograd RE VEŽBE 3 2015/2016 8 / 30

Procedure Deklarisanje parametara procedure Deklarisanje parametara procedure Argument label attributes reglist parameter Opis Ime procedure. Nekoliko atributa procedure: vidljivost, langtype, udaljenost... Imena registara koji se koriste uz ključnu reč USES. Odvojeni su razmakom imena. Pozivom procedure se vrednosti ovih registara stavljaju na stek, a izlaskom iz procedure skidaju sa steka. Lista parametara koji se prosleđuju proceduri preko steka. Može biti proizvoljan broj parametara. ETF Beograd RE VEŽBE 3 2015/2016 9 / 30

Procedure Deklarisanje parametara procedure Deklarisanje parametara procedure - atributi procedure Atribut distance langtype visibility prologuearg Opis 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. Determiniše calling konvenciju i može biti C, BASIC, FORTRAN i PASCAL. 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. Utiče na generisanje prologue i epilogue koda. ETF Beograd RE VEŽBE 3 2015/2016 10 / 30

Procedure Deklarisanje parametara procedure Deklarisanje parametara procedure - parametri procedure Ukoliko se pišu u redu sa atributima, odvajaju se međusobno razmakom. Ako se pišu u novom redu, odvaja se zarezom. Format parametra je parameter[:tag]. parameter je ime parametra, a tag je tip parametra ili ključna reč VARARG (koju može da ima samo poslednji argument u listi). ETF Beograd RE VEŽBE 3 2015/2016 11 / 30

Procedure Primer 1 1.386 2.model flat,stdcall 3.stack 4096 4 ExitProcess proto,dwexitcode:dword 5 6.data 7 var1 dword 10 8 var2 dword 20 9 var3 dword 30 10 var4 dword? 11 12.code 13 saberi proc c uses eax, 14 arg1:dword, arg2:dword, arg3:dword 15 mov eax, arg1 16 add eax, arg2 17 add eax, arg3 18 mov var4, eax 19 ret 20 saberi endp 21 22 main proc 23 push var3 ; stavi na stek 24 push var2 25 push var1 26 call saberi ; poziv procedure 27 add esp, 3 4 ; unistava podatke sa steka 28 29 invoke ExitProcess,0 30 main endp 31 end main ETF Beograd RE VEŽBE 3 2015/2016 12 / 30

Procedure Primer 1 VARARG parametar procedure Dodavanjem :VARARG poslednjem parametru se označava da procedura prihvata proizvoljan broj parametara. Pre :VARARG se mora navesti ime da se označi u odnosu na koju adresu se pristupa parametrima sa ofsetom. ETF Beograd RE VEŽBE 3 2015/2016 13 / 30

Procedure Primer 2 1.386 2.model flat,stdcall 3.stack 4096 4 ExitProcess proto,dwexitcode:dword 5 6.code 7 varargproc PROC c, argcount:word, arg1:vararg 8 xor eax, eax ; EAX = 0 9 xor esi, esi ; ESI = 0 10 addarguments: 11 cmp argcount, 0 12 jbe finish 13 add eax, arg1[esi] 14 dec argcount 15 add esi, 4 16 jmp addarguments 17 finish: 18 ret 19 varargproc ENDP 20 21 main proc 22 mov eax, 10h ; EAX = 10h 23 mov ebx, 20h ; EBX = 20h 24 mov ecx, 30h ; ECX = 30h 25 push ecx 26 push ebx 27 push eax 28 push 3 ; stavlja na stek 29 30 call varargproc 31 add esp,4 4 32 invoke ExitProcess,0 33 main endp 34 end main ETF Beograd RE VEŽBE 3 2015/2016 14 / 30

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že pristupiti ofestom u odnosu na stek pokazivač. Na kraju procedure je potrebno dealocirati ovu memoriju. ETF Beograd RE VEŽBE 3 2015/2016 15 / 30

Procedure Primer 3 1.386 2.model flat,stdcall 3.stack 4096 4 ExitProcess proto,dwexitcode:dword 5 6.code 7 locvarproc PROC 8 push ebp 9 mov ebp, esp 10 11 sub esp, 4 ; Mesto za DWORD promenjivu 12 mov DWORD PTR [ebp 4], 3 ;Inicijalizacija lokalne promenjive 13 14 mov eax, [ebp+8] ; Preneseni argument preko steka se smesta u eax 15 sub DWORD PTR [ebp 4], eax ; Sadrzaj eax se oduzima od loklne promenjive 16 17 mov eax, DWORD PTR [ebp 4]; Sadrzaj se vraca preko akumulatora 18 mov esp, ebp ; Cisti stek od lokalnih promenjivih 19 pop ebp 20 21 ret 22 locvarproc ENDP 23 24 main proc 25 push 1 26 call locvarproc 27 add esp, 4 ; Ciscenje steka 28 invoke ExitProcess,0 29 main endp 30 end main ETF Beograd RE VEŽBE 3 2015/2016 16 / 30

Procedure Primer 3 Lokalne promenljive - primer 3 ETF Beograd RE VEŽBE 3 2015/2016 17 / 30

Procedure Lokalne promenljive Automatsko kreiranje lokalnih promenljivih LOCAL direktiva Omogućava automatsko kreiranje lokalnih promenljivih. Rezerviše se prostor na steku za promenljivu i pristupa joj se preko simboličkog imena (ne kao ofset na EBP). Nakon izlaska iz procedure dealocira memoriju na steku. Navodi se odmah posle PROC direktive. LOCAL vardef vardef = label [count][:qualifiedtype] label - ime lokalne promenljive count - 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 2015/2016 18 / 30

Procedure Primer 4 1.386 2.model flat,stdcall 3.stack 4096 4 ExitProcess proto,dwexitcode:dword 5 6.data 7 arraysz EQU 20 8 startdata DWORD 30 9 10.code 11 findsum PROC uses esi ecx edx 12 LOCAL data[arraysz]:dword, sum:dword 13 mov ecx, arraysz 14 xor esi, esi 15 initialise: 16 mov eax, esi ; Inicijalizuje 17 mul esi ; rezervisani prostor 18 mov data[4 esi], eax ; sa kvadratima brojeva 19 inc esi ; od 0 do arraysz-1 20 loop initialise 21 22 mov ecx, arraysz 23 xor esi, esi 24 mov eax, [ebp+8] ; U eax stavlja ulazni argument 25 mov sum, eax 26 calculatesum: 27 mov eax, data[4 esi] ; Sabira ulazni argument 28 add sum, eax ; sa inicijalizovanim 29 inc esi ; kvadratima 30 loop calculatesum 31 mov eax, sum ; rezultat sabiranja vraca preko 32 ; akumulatora 33 ret 34 findsum ENDP 35 main proc 36 push startdata 37 call findsum 38 add esp, 4 ; Ciscenje steka 39 invoke ExitProcess,0 40 main endp 41 end main ETF Beograd RE VEŽBE 3 2015/2016 19 / 30

Zajednički podaci i funkcije Zajednički podaci U slučaju postojanja više fajlova, potrebno je da se podaci mogu koristiti u svakom od njih. Postoje dva načina za deljenje podataka: korišćenjem PUBLIC i EXTERN direktive i korišćenjem definicionih fajlova. ETF Beograd RE VEŽBE 3 2015/2016 20 / 30

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 se stavljaju u definicione fajlove. Ako više fajlova koristi definicioni fajl, on ne sme sadržati promenljive 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. Primer INCLUDE SCREEN.INC ETF Beograd RE VEŽBE 3 2015/2016 21 / 30

Zajednički podaci i funkcije Zajednički podaci Korišćenje definicionih fajlova Ukoliko definicioni fajl nije u okviru projekta, putanja do njega mora 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že promeniti 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 u drugom. Deklaracijom sa EXTERNDEF direktivom. Deklaracijom procedure sa PROTO direktivom. ETF Beograd RE VEŽBE 3 2015/2016 22 / 30

Zajednički podaci i funkcije Zajednički podaci EXTERNDEF Predstavlja javnu definiciju u definicionom fajlu i spoljašnju definiciju u ostalim fajlovima. Može da se koristi za procedure i sve tipove podataka. Sintaksa EXERNDEF [langtype] name:qualifiedtype name - ime promenljive/procedure langtype - definisano u okviru.model direktive i može biti: C, PASCAL, STDCALL, SYSCALL, FORTRAN i BASIC. ETF Beograd RE VEŽBE 3 2015/2016 23 / 30

Zajednički podaci i funkcije Zajednički podaci EXTERNDEF Može se koristiti i za labele i tako omogućava referenciranje koda između modula. EXTERNDEF codelabel:type codelabel :: - moraju se navesti dve dvotačke prilikom definisanja labele ETF Beograd RE VEŽBE 3 2015/2016 24 / 30

Zajednički podaci i funkcije Primer 5 Mod.inc 1 EXTERNDEF doaction:near 2 EXTERNDEF returnfromaction:near 3 EXTERNDEF array:byte Mod1.asm 1.386 2.model flat, stdcall 3 option casemap:none 4 5 include Mod.inc 6 7.data 8 9 array db 10, 20, 30, 40 10 11.code 12 start: 13 jmp doaction 14 returnfromaction:: 15 ret 16 end start Mod2.asm 1.386 2.model flat, stdcall 3 option casemap:none 4 5 include Mod.inc 6 7.data 8 9 array1 db 4 DUP(?) 10 11.code 12 doaction:: 13 mov ecx, sizeof array1 14 cld 15 mov esi, offset array 16 mov edi, offset array1 17 rep movsb 18 jmp returnfromaction 19 end ETF Beograd RE VEŽBE 3 2015/2016 25 / 30

Zajednički podaci i funkcije Zajednički podaci PROTO Automatski određuje EXTERNDEF ponašanje procedure, osim kada je procedura deklarisana kao PRIVATE. Da bi se jedna procedura definisala u jednom, a koristila u drugom modulu 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 2015/2016 26 / 30

Zajednički podaci i funkcije Primer 6 Mod.inc 1 TestProcedure PROTO STDCALL arg1:dword, arg2:dword Mod1.asm 1.386 2.model flat,stdcall 3.stack 4096 4 ExitProcess proto,dwexitcode:dword 5 6 include Mod.inc 7 8.data 9 arg1 DD 0ABCDEF10h 10 arg2 DD 000000010h 11 12.code 13 main proc 14 push arg2 15 push arg1 16 call TestProcedure 17 invoke ExitProcess,0 18 main endp 19 end main Mod2.asm 1.386 2.model flat,stdcall 3.stack 4096 4 ExitProcess proto,dwexitcode:dword 5 6 include Mod.inc 7 8.data 9 array1 db 4 DUP(?) 10 11.code 12 TestProcedure PROC STDCALL USES EDI ESI, 13 arg1:dword, arg2:dword 14 15 mov esi, arg1 16 mov edi, arg2 17 add esi, edi 18 mov eax, esi 19 ret 20 TestProcedure endp 21 end ETF Beograd RE VEŽBE 3 2015/2016 27 / 30

Zajednički podaci i funkcije Deljenje podataka i funkcija podešavanjem njihove vidljivosti Ukoliko postoje samo dva.asm fajla, može se definisati podatak ili procedura kao globalna bez.inc fajla. U definišućem modulu se koristi PUBLIC, a u drugom modulu EXTERN. Sintaksa PUBLIC [langtype] name,... EXTERN [langtype] name:qualifiedtype langtype - STDCALL, SYSCALL, C, PASCAL, FORTRAN ili BASIC ETF Beograd RE VEŽBE 3 2015/2016 28 / 30

Zajednički podaci i funkcije Primer 7 Mod1.asm 1.386 2.model flat,stdcall 3.stack 4096 4 ExitProcess proto,dwexitcode:dword 5 6 PUBLIC arg3 7 EXTERN c TestProcedure:NEAR 8 9.data 10 arg1 DD 0ABCDEF10h 11 arg2 DD 000000010h 12 arg3 DD 000000020h 13 14.code 15 main proc 16 push arg2 17 push arg1 18 call TestProcedure 19 add esp, 8 20 invoke ExitProcess,0 21 main endp 22 end main Mod2.asm 1.386 2.model flat,stdcall 3.stack 4096 4 ExitProcess proto,dwexitcode:dword 5 6 EXTERN arg3: DWORD 7 PUBLIC c TestProcedure 8 9.code 10 TestProcedure PROC c USES EDI ESI ECX, 11 arg1:dword, arg2:dword 12 13 mov esi, arg1 14 mov edi, arg2 15 add esi, edi 16 mov eax, esi 17 ret 18 19 TestProcedure endp 20 end ETF Beograd RE VEŽBE 3 2015/2016 29 / 30

KRAJ! ETF Beograd RE VEŽBE 3 2015/2016 30 / 30