48

RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

RA�UNARSKA ELEKTRONIKA � VE�BE 1

Aleksandra Leki¢

[email protected]

Elektrotehni£ki fakultet, Univerzitet u Beogradu

2015/2016

ETF Beograd RE VE�BE 1 2015/2016 1 / 48

Page 2: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Uvod

Asembler

Pripada grupi niºih programskih jezika.

Sastoji se od grupe mnemonika (instrukcija) koje treba dasimboli£ki predstave ma²inski kod.

Svaka ma²inska instrukcija ima simboli£ku predstavu.Asembler se kao alat sastoji od

editora

kompajlera

linkera

Prilikom prevo�enja se uglavnom prevodi jedna asemblerskainstrukcija u jednu ma²insku re£.

ETF Beograd RE VE�BE 1 2015/2016 2 / 48

Page 3: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Uvod

Debugger

Program koji sluºi za testiranje i debagovanje drugih programa.

ETF Beograd RE VE�BE 1 2015/2016 3 / 48

Page 4: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86

Pripada grupi CISC ra£unara (Complex Instruction Set Computer).Svaka instrukcija obavlja niz low - level operacija:

O£itavanje podataka iz memorije

Aritmeti£ke operacije

Upis u memoriju

inc DWORD PTR[EBX]

Von Neumann-ova arhitektura

CPU

(Central

Processing Unit)

MEMORY (1MB)

PROGRAM

DATA

DATA

16 bit

ETF Beograd RE VE�BE 1 2015/2016 4 / 48

Page 5: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 CPU

ProcesorKoristi segmente za kontrolu podataka i koda.

Noviji 8086-bazirani procesori imaju ve¢i set instrukcija i ve¢umemoriju, ali imaju istu segmentnu arhitekturu.

Noviji 8086-bazirani procesori su kompatibilni sa svojimprethodnicima.

ETF Beograd RE VE�BE 1 2015/2016 5 / 48

Page 6: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 CPU

Modovi rada

Process je instanca programa koji se izvr²ava.

Operativni sistem za svaki proces rezervi²e memoriju, CPU i drugehardverske resurse.

ETF Beograd RE VE�BE 1 2015/2016 6 / 48

Page 7: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 CPU

Multitasking � Scheduler

# P1

P1S1

P1S2

...

P1Sj

P1Sh

# P2

P2S1

P2S2

...

P2Sj

P2Sh

# Pn

PnS1

PnS2

...

PnSj

PnSh

...

ti P1Sj ↔ CPU, MEMORY

ti+1 P2Sk ↔ CPU, MEMORY

ti+2 P3Sl ↔ CPU, MEMORY

ETF Beograd RE VE�BE 1 2015/2016 7 / 48

Page 8: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 CPU

Modovi rada procesora

Real mode - jedan proces se pokre¢e. Adresa u realnom modu uvekodgovara realnoj adresi u memoriji.

Protected mode - vi²e od jednog procesa moºe biti aktivno.Operativni sistem ²titi memoriju procesa kako joj drugi proces nebi pristupio. Realna adresa u memoriji ne odgovara adresigenerisanoj u protected modu, ve¢ je procesor alocira i odre�ujedinami£ki.

# PROCESS 1

# PROCESS 1

# PROCESS 2

# PROCESS 3

REAL MODE

MEMORY

PROTECTED

MODE MEMORY

ETF Beograd RE VE�BE 1 2015/2016 8 / 48

Page 9: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Segmentirana arhitektura

Segmentirana arhitektura

Svaka adresa se predstavlja kao segment i ofset.

Dizajnirana je da omogu¢i da 16-bitni procesor adresira ve¢imemorijski prostor od 64 kB.

Ova arhitektura je zna£ajno izmenjena kod procesora 80386 kojiomogu¢ava 32-bitni ofset kako bi se pristupilo memoriji do 4 GB.

Za²tita segmentaTokom multitasking-a vi²e programa moºe da radi istovremeno.

Podaci i kod mogu biti bilo gde u memoriji. perativni sistem moºe£ak i da premesti podatke na novu memorijsku lokaciju tokomizvr²avanja programa.

ETF Beograd RE VE�BE 1 2015/2016 9 / 48

Page 10: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Segmentirana arhitektura

Za²tita segmenta

Procesor u realnom modu nema mehanizam detekcijenedozvoljenog pristupa memoriji.

Protected mode procesori u segmentnom registru ne sadrºe realnuadresu, ve¢ sadrºe selector koji pokazuje na strukturu koja se zovesegment descriptor.

ETF Beograd RE VE�BE 1 2015/2016 10 / 48

Page 11: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Segmentirana arhitektura

Za²tita segmenta

Segmentni registar

SEGMENTNI REGISTAR SEGMENT DESRIPTOR

SEGMENT ADRESS

SEGMENT LENGTH

PERMISSIONS

ACCESS

SYSTEM LEVEL

STRUCTURE

ETF Beograd RE VE�BE 1 2015/2016 11 / 48

Page 12: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Segmentirana arhitektura

Adresiranje segmenta

Adresa je predstavljena iz dva dela segment:offset.

segment je 16-bitni, a offset je 16-bitni u 16-bitnom modu, a32-bitni u 32-bitnom modu.

Zajedno formiraju 20-bitnu �zi£ku adresu za pristup 1 MB umemoriji.

ETF Beograd RE VE�BE 1 2015/2016 12 / 48

Page 13: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Segmentirana arhitektura

Segmentna aritmetika

Procesor

�iftuje segment za £etiri mesta ulevo i dobija se 20-bitna adresa.

Sabira 20-bitnu adresu sa offset-om.

Dobijena adresa je �zi£ka (realna) adresa u memoriji.

Svaka adresa moºe da se zada na 4096 na£ina segment:o�set.

ETF Beograd RE VE�BE 1 2015/2016 13 / 48

Page 14: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Registri

Registri

16-bitni procesori 32-bitni procesori

ETF Beograd RE VE�BE 1 2015/2016 14 / 48

Page 15: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Registri

Segmentni registri

Registar i segment NamenaCS (Code Segment) Sadrºi procesorske instrukcije i neposredne

operande.DS (Data Segment) Sadrºi podatke alocirane programom.SS (Stack Segment) Programski stek za upotrebu uz instrukcije

PUSH, POP, CALL i RET.ES (Extra Segment) Koristi se u instrukcijama za stringove.FS, GS Ekstra segmenti za 80386/486.

ETF Beograd RE VE�BE 1 2015/2016 15 / 48

Page 16: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Registri

Registri op²te namene � General Purpose Registers

AX, DX, CX, BX, BP, DI i SI su 16-bitni registri.

8086-bazirani procesori ne mogu da izvr²e operacije sa dvememorijske lokacije. Zato se podatak mora prvo prebaciti u nekiregistar op²te namene, a zatim na drugu memorijsku lokaciju.

Pristup vi²ih osam bita FX (F = A, B, C, D) registra je FH, a niºihFL.

Gornjih 16-bita EFX registra ne moºe da se pristupi direktno, ve¢:Primer: SHR EAX, 16

ETF Beograd RE VE�BE 1 2015/2016 16 / 48

Page 17: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Registri

Registri specijalne namene

SP - Stack Pointer

Pokazuje na trenutnu lokaciju na steku. Raste ka niºim adresama.

Dodavanje na stek PUSH smanjuje adresu SP za 2, a skidanje sasteka POP pove¢ava adresu SP za dva. Kod 80386/486 je ±4.Instrukcije CALL i INT £uvaju adresu povratka na steku i redukujuSP.

PUSH EAX ESP = ESP - sizeof(EAX), MEMORY[ESP] = EAX

POP EAX EAX = MEMORY[ESP], ESP = ESP + sizeof(EAX)

IP - Instruction Pointer

Sadrºi adresu slede¢e instrukcije koja se izvr²ava.

ETF Beograd RE VE�BE 1 2015/2016 17 / 48

Page 18: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

x86 Registri

FLAG registar

ETF Beograd RE VE�BE 1 2015/2016 18 / 48

Page 19: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Assembling - Kompajliranje

Kreiranje .EXE programa

Kompajliranje izvornog koda u objektni fajl.

Povezivanje objektnog fajla sa ostalim modulima i bibliotekama uizvr²ni program.

Ubacivanje programa u memoriju.

Pokretanje programa.

ETF Beograd RE VE�BE 1 2015/2016 19 / 48

Page 20: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Assembling - Kompajliranje

Kreiranje .EXE programa

ML.EXE prvo prevodi izvorni kod uobjektni fajl.

LINK.EXE povezuje fajlove ibiblioteke u izvr²ni program, vr²irealokaciju: zamenu referencikonkretnim vrednostima.

# FILE1.ASM

VAR1 (defined)

# FILE1.ASM

VAR1 (defined)

# FILE2.ASM

VAR1 (extern)

(declared)

MOV EAX, VAR1

# FILEn.ASM

VAR1 (extern)

(declared)

MOV ECX, VAR1...

ML.EXE

# FILE1.OBJ

VAR1

# FILE2.OBJ

VAR1 (pointer)

MOV EAX,

placeholder

# FILEn.OBJ

VAR1 (pointer)

MOV ECX,

placeholder...

LINK.EXE

# PROJECT.EXE

ETF Beograd RE VE�BE 1 2015/2016 20 / 48

Page 21: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Assembling - Kompajliranje

Kreiranje .EXE programa

Loading

Kreira se Program Segment Pre�x (PSP).

Alocira se memorija programa.

U£itava se program.

Ra£unaju se ta£ne apsolutne adrese prema realokacionoj tabeli.

Postavljaju se vrednosti segmentnih registara SS, CS, DS i ES.

Program se pokre¢e po£ev²i od prve instrukcije.

ETF Beograd RE VE�BE 1 2015/2016 21 / 48

Page 22: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Assembling - Kompajliranje Logi£ki segmenti

Logi£ki segmenti

To su delovi programa sekcije koji grupi²u podatke ili naredbe(kod).

Oni se grupi²u u �zi£kim delovima memorije.

Direktive za grupisanje segmenata su: .MODEL, .CODE, .CONST,.DATA, .DATA?, .FARDATA, .FARDATA?, .STACK, .STARTUP i .EXIT.

ETF Beograd RE VE�BE 1 2015/2016 22 / 48

Page 23: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Assembling - Kompajliranje Logi£ki segmenti

Izgled programa

.386 ozna£ava da se koristi 80386 setinstukcija.

.MODEL ozna£ava memorijski modelprograma. Za Windows operativni sistemje to samo FLAT.

STDCALL ozna£ava konvencijuprosle�ivanja parametara. Moºe biti C iliPASCAL konvencija.

ETF Beograd RE VE�BE 1 2015/2016 23 / 48

Page 24: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Assembling - Kompajliranje Logi£ki segmenti

Izgled programa

C konvencija - prosle�uju se parametri funkcije s desna na levo ibalansira se pokaziva£ na stek.

PASCAL konvencija - parametri funkcije se prosle�uju sa leva nadesno, a sama funkcija treba da balansira pokaziva£ na stek.

STDCALL je hibrid C i PASCAL konvencije. Windows 32 koristiisklju£ivo STDCALL.

Direktive .DATA, .DATA?, .CONST, .CODE predstavljaju sekcije.

.DATA sadrºi inicijalizovane podatke programa.

.DATA? sadrºi neinicijalizovane (deklarisane) podatke programa.

.CONST sadrºi konstante programa.

.CODE je sekcija za kod, postoji samo jedna.

Ne moraju da se koriste sve tri sekcije .DATA, .DATA?, .CONST.

ETF Beograd RE VE�BE 1 2015/2016 24 / 48

Page 25: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi

Operandi

Nalaze se u nizu odmah nakon instrukcije.

Instrukcije RET, CLD, STD nemaju operande.

Mogu biti registarski, neposredni, direktni memorijski i indirektnimemorijski.

ETF Beograd RE VE�BE 1 2015/2016 25 / 48

Page 26: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Registarski operandi

Registarski operandi

Koriste se 8- i 16-bitni registri, a kod 80386/486 i 32-bitni.

Podaci se £uvaju u registrima.

Primermov bx, 10 konstanta 10 se upisuje u bx

add ax, bx ax = ax + bx

jmp di jump na adresu u di

ETF Beograd RE VE�BE 1 2015/2016 26 / 48

Page 27: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Neposredni operandi

Neposredni operandi

Predstavljaju konstante ili konstantne izraze.

Primer: mov cx, 20

add var, 1Fh

OFFSET/SEG operator

OFFSET/SEG vra¢a ofset vrednost/vrednost segmenta adrese.

Primer: mov bx, OFFSET var

ETF Beograd RE VE�BE 1 2015/2016 27 / 48

Page 28: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Direktni memorijski operandi

Direktni memorijski operandi

Ozna£ava podatak na memorijskoj lokaciji. Podatak moºe da semenja, ali adresa ne.

Za direktno memorijsko adresiranje se koristi DS registar.

Primer.DATA? neinicijalizovani podatakvar BYTE ? rezervi²e 1 B neinicijalizovan.CODE

...

mov var, al kopira se AL u memory[var]

ETF Beograd RE VE�BE 1 2015/2016 28 / 48

Page 29: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Direktni memorijski operandi

Direktni memorijski operandi

Uz direktno memorijsko adresiranje mogu da se koriste operatori +,-, [], . i :.

Primermov ax, array[2]

mov ax, array+2

ETF Beograd RE VE�BE 1 2015/2016 29 / 48

Page 30: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Indirektni memorijski operandi

Indirektni memorijski operandi

Omogu¢avaju dinami£an pristup memoriji.

Na memorijskoj lokaciji se nalazi adresa u memoriji na kojoj senalazi podatak.

Mogu biti 16-bitni i 32-bitni.

Primerimov ax, WORD PTR[bx] prebacuje u AX 16 b sa adrese DS:BXmov ax, [bx+si] prebacuje u AX podatak sa adrese BX + SI

mov ax, table[si] table sadrºi baznu adresu niza, a SI pomeraj

ETF Beograd RE VE�BE 1 2015/2016 30 / 48

Page 31: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Indirektni memorijski operandi

Indirektni memorijski operandi

Veli£ina operanda moºe da se zada na tri na£ina:Odre�ena deklaracionom veli£inom operanda.mov table[bx], 0 2 B na osnovu veli£ine tabele

Odre�ena PTR operatorom.mov BYTE PTR table, 0 1 B dato sa BYTE

Implicitno odre�ena veli£inom drugog operanda.mov ax, [bx] 2 B na osnovu AX

ETF Beograd RE VE�BE 1 2015/2016 31 / 48

Page 32: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Indirektni memorijski operandi

Varijante sa 16 b registrima:mov ax, table[bx][di]

mov ax, table[di][bx]

mov ax, table[bx+di]

mov ax, [table+bx+di]

mov ax, [bx][di] + table

mov ax, [bx+di]

mov ax, [bx+si]

mov ax, [bp+di]

mov ax, [bp+si]

Ne moºe!mov ax, [bx+bp] dva bazna registra

mov ax, [di+si] dva indeksna registra

ETF Beograd RE VE�BE 1 2015/2016 32 / 48

Page 33: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Indirektni memorijski operandi

Varijante sa 16 b registrima:

ETF Beograd RE VE�BE 1 2015/2016 33 / 48

Page 34: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Operandi Indirektni memorijski operandi

Skaliranje indeksa

Za nizove veli£ine 1 B je faktor skaliranja 1, 2 za re£i, a 4 zaDOUBLE WORD.

Operator za skaliranje je *.

Primerimov eax, darray[edx*4] prebacuju se 4 Bmov ax, wtbl[ecx+2][edx*2] prebacuje se 2 B niza podataka od 2 B

ETF Beograd RE VE�BE 1 2015/2016 34 / 48

Page 35: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Deklarisanje integer varijabli

Direktive

ETF Beograd RE VE�BE 1 2015/2016 35 / 48

Page 36: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Deklarisanje integer varijabli

Operator SIZEOF daje broj elemenata u bajtovima.

Operator TYPE daje veli£inu jednog elementa u bajtovima.

PrimerUSER_ARRAY BYTE 100 DUP(0)

TYPE(USER_ARRAY) = 1

SIZEOF(USER_ARRAY) = 100

SBYTE, SWORD i SDWORD ozna£avaju ozna£ene podatke.

ETF Beograd RE VE�BE 1 2015/2016 36 / 48

Page 37: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Deklarisanje integer varijabli

Tip podataka

Direktiva TYPEDEF se koristi za de�nisanje tipa podataka.

Primerichar TYPEDEF SBYTE

long TYPEDEF DWORD

float TYPEDEF REAL4

double TYPEDEF REAL8

ETF Beograd RE VE�BE 1 2015/2016 37 / 48

Page 38: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Deklarisanje integer varijabli

Inicijalizacija podatakainteger BYTE 16

Operator PTRForsira tretiranje operanda speci�ciranog tipa.

num DWORD 0

mov ax, WORD PTR num[0]

ETF Beograd RE VE�BE 1 2015/2016 38 / 48

Page 39: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Kopiranje podataka

MOV

Kopira podatak sa jedne lokacije na drugu.

Primerimov ax, 7 upisuje 7 u registar AXmov mem, ax upisuje se podatak iz registra AX na memorijsku lokacijumem

ETF Beograd RE VE�BE 1 2015/2016 39 / 48

Page 40: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Kopiranje podataka

Zamena vrednosti

XCHG instrukcija zamenjuje vrednosti na lokacijama operanada.

Primerxchg ax, bx zamenjuje vrednosti u registrima AX i BX

ETF Beograd RE VE�BE 1 2015/2016 40 / 48

Page 41: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Kopiranje podataka

Produºavanje podatka

Prevodi integer u podatak ve¢e veli£ine zadrºavaju¢i znak.

VarijanteCBW - convert byte to word

CWD - convert word to doubleword

CWDE - convert word to doubleword extended

CDQ - convert doubleword to quadword

ETF Beograd RE VE�BE 1 2015/2016 41 / 48

Page 42: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Instrukcije sabiranje/oduzimanje

Sabiranje i oduzimanje

Istrukcije su ADD, INC (inkrementiranje), SUB i DEC(dekrementiranje).

Mogu da rade na 8, 16 i 32 bita.

Ako postoje dva operanda, samo jedan moºe biti adresa umemoriji.

Operandi moraju da budu iste veli£ine. U suprotnom moºe da sekoristi PRT operator.

Operatori INC i DEC tretiraju podatke kao neozna£ene brojeve i neosveºavaju carry i borrow bite.

Primermov al, 26

inc al

ETF Beograd RE VE�BE 1 2015/2016 42 / 48

Page 43: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Instrukcije sabiranje/oduzimanje

Sabiranje i oduzimanje u vi²e registara

Mogu da se sabiraju i oduzimaju podaci ve¢i od veli£ine registrainstrukcijama ADC (add with carry) i SBB (subtract with borrow).

Ove instrukcije osveºavaju carry flag.

Za least signi�cant part podatka se koriste instrukcije ADD/SUB, aza most signi�cant part instrukcije ADC/SBB.

Primer

ETF Beograd RE VE�BE 1 2015/2016 43 / 48

Page 44: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Instrukcije mnoºenja i deljenja

Mnoºenje

Instrukcija MUL mnoºi neozna£ene brojeve, a IMUL ozna£ene.

Mnoºenjem dva 8-bitna broja se dobija 16-bitni rezultat i upisuje uregistar AX.

Mnoºenjem dva 16-bitna broja se dobija 32-bitni rezultat i upisujeu registar DX:AX.

Operacije mnoºenja su date u formatu OPERATION

source1,source2, immediate, pri £emu se ukoliko postojisource2, rezultat mnoºenja source2 * immediate upisuje usource1. Ukoliko ne, rezultat mnoºenja je source1 = source1 *

immediate.

ETF Beograd RE VE�BE 1 2015/2016 44 / 48

Page 45: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Instrukcije mnoºenja i deljenja

Deljenje

DIV deli neozna£ene brojeve, a IDIV deli ozna£ene brojeve.

ETF Beograd RE VE�BE 1 2015/2016 45 / 48

Page 46: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Instrukcije na nivou bita

Logi£ke instrukcije

To su instrukcije AND, OR, XOR i NOT.

Primer

ETF Beograd RE VE�BE 1 2015/2016 46 / 48

Page 47: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

Instrukcije Instrukcije na nivou bita

�iftovanje i rotiranje bita

ETF Beograd RE VE�BE 1 2015/2016 47 / 48

Page 48: RA UNARSKA ELEKTRONIKA VE BE 1tnt.etf.bg.ac.rs/~oe3re/pdf/Vezbe/2018/Cas1/RE_Cas_1.pdf · Kreira se Prgroam Segment Pre x ( PSP ). Alocira se memorija programa. U£itaav se program

KRAJ!

ETF Beograd RE VE�BE 1 2015/2016 48 / 48