34
VIŠA TEHNIČKA ŠKOLA DOBOJ SEMINARSKI RAD Način adresiranja mikroprocesora i8086

seminarski rad-nacin adresiranja kod mikroprocesora i8086

Embed Size (px)

Citation preview

Page 1: seminarski rad-nacin adresiranja kod mikroprocesora i8086

VIŠA TEHNIČKA ŠKOLA

DOBOJ

SEMINARSKI RADNačin adresiranja mikroprocesora i8086

PROFESOR: Dr Zlatko Bundalo STUDENT: Stanišić Milana ASISTENT: Dipl. ing Gordana Jotanović INDEKS: 949/01

Page 2: seminarski rad-nacin adresiranja kod mikroprocesora i8086

SADRŽAJ

Mikroprocesor i8086.............................................................................. 2

Arhitektura i8086……………………………………………............... 3

Format instrukcija i način izvršavanja................................................... 6

Načini adresiranja.................................................................................. 7

Adresiranje podataka........................................................................ 8

Registarsko adresiranje.......................................................... 9

Neposredno adresiranje......................................................... 10

Direktno adresiranje.............................................................. 11

Registarsko-indirektno adresiranje....................................... 12

Bazno-relativno adresiranje.................................................. 14

Direktno-indeksno adresiranje.............................................. 15

Bazno-indeksno adresiranje.................................................. 16

Skalarno-indeksno adresiranje.............................................. 17

Adresiranje instrukcija.................................................................... 18

Direktno adresiranje........................................................ 18

Indirektno adresiranje...................................................... 19

Relativno adresiranje....................................................... 20

Adresiranje steka............................................................................. 21

Peimjer asamblerskog programa.......................................................... 23

Literatura.............................................................................................. 24

1

Page 3: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Mikroprocesor i8086

Mikroprocesor i8086 je prvi Intelov 16-bitni mikroprocesor, proizveden 1978. godine. On je

omogućio kompatibilnost prethodne 8-bitne familije (Intel 8080/8085), ali i znatno bolje

performanse koje su se ogledale u ubrzanju izvršavanja programa. Arhitektura je poboljšana i

većim brojem radnih registara nego kod 8-bitnih mikroprocesora. Procesor koji vrši obradu

podataka u mikroračunaru naziva se mikroprocesor. Jedna od osnovnih karakteristika

mikroprocesora je dužina podatka kojeg obrađuje u jednom trenutku. Uobičajene dužine su 4,

8, 16, 32.... Prema ovome svi mikroprocesori se mogu podijeliti na četvorobitne, osmobitne,

šesnaestobitne itd. . Ova podijela nije striktna. Postoje neki mikroprocesori koji po nekim

karakteristikama pripadaju i osmobitnim i šesnaestobitnim, odnosno šesnaestobitnim i

tridesetdvobitnim.

Intel 8086 realizovan je u jednom integrisanom sklopu sa 40 pinova. Posjeduje 16-bitnu

magistralu podataka i 20-bitnu adresnu magistralu. Ovakav način realizovanja magistrale

omogućava adresiranje od jednog miliona bajtova memorijskih lokacija. Takođe, znatno su

proširene mogućnosti adresiranja ulazno/izlaznih uređaja za koje je namijenjen adresni

prostor od 64 KB. Radi uštede broja spoljnih pinova izvršeno je mutipleksiranje magistrale

podataka i adresne magistrale tj. ovaj mikroprocesor u jednom trenutku prenosi adrese i tada

ne može prenositi podatke, a u drugom trenutku vrši prenos podataka.

Intel 8086 nije imao mogućnost rada sa operacijama sa pokretnim zarezom, ali se mogao

spojiti sa matematičkim koprocesorom da bi mu se omogućila

ta sposobnost.

Dio adresnog prostora memorije koristi se za posebne svrhe,

kao što je to prikazano na slici. Gornjih 16 bajtova se koristi za

smještanje informacije o inicijalnom automatskom puniocu,

kao i informacije o adresi na kojoj započinje izvršavanje, nakon

pojave RESET signala. Donji 1 KB se podijeli u 4-bajtne

pokazivače (pointere) na rutine za obradu 256 mogućih tipova

prekida. Od ukupno 32 bita ovih pokazivača, 16 se koristi za

adresu segmenta, a 16 predstavljaju odsječak unutar segmenta.

Svi ovi pokazivači moraju da budu inicijalizovani pre nego što

Adresni prostor memorije se prekidi pojave.

2

Page 4: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Arhitektura i8086

Mikroprocesor i8086 sastoji se od dvije jedinice: izvršna jedinica i jedinica interfejsa

magistrale. Ove dvije jedinice operišu asinhrono. Cjelokupna komunikacija sa perifernim

jedinicama i osnovnom memorijom odvija se preko jedinice interfejsa magistrale. Izvršna

jedinica sastoji se od opštih registara i aritmetičko – logičke jedinice, dok jedinicu interfejsa

magistrale čine segmentni registri, unutrašnji komunikacioni registri i skup bajtova koji služe

za uvođenje instrukcija. Sve ove komponente povezane su unutrašnjim magistralama širine

od 16 do 20 bita.

Pokazivački i indeksni registri omogućavaju razne vrste adresiranja unutar segmenta. Sadržaj

pokazivača se tretira kao odsječak u odnosu na tekuću vrednost pokazivača steka (SS), a

sadržaj indeksnih registara kao odsječak unutar tekućeg segmenta podataka. Ovi registri su

BP - pokazivač baze, SP – pokazivač steka, SI – izvorni indeks i DI – indeks odredišta.

3

Page 5: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Važnu ulogu ima treća grupa registara: segmentni registri. Ovi registri učestvuju u svim

izračunavanjima adresa, pa se sve instrukcije uzimaju relativno u odnosu na sadržaj

segmentnog registra koda. Sličnu ulogu imaju i ostali registri koji služe za rad sa podacima.

Programi koji ne mjenjaju sadržaj segmentnog registra su dinamički relokatibilni, te se mogu

prekidati, premještati na druge lokacije i ponovo startovati sa novom vrijednošću segmentnog

registra. Segmentni registri su CS – kodni segment, DS – segment podataka, SS – stek

segment, ES – ekstra segment.

Adresni prostor memorije dijeli se na segmente dužine po 64 KB, a oni se mogu dodijeliti

kodu, podacima i steku. Donja četiri bita segmentnih registara imaju vrijednost nula, tako da

početak svakog segmenta može da bude samo na adresama koje su umnošci broja 16.

Segmenti se mogu preklapati.

Fizička adresa se formira sabiranjem odsječka sa vrijednošću izabranog segmentnog registra.

Na slici prikazan je način formiranja 20-bitne fizičke memorijske adrese. Iako se za pristup

podacima iz instrukcije normalno koristi registar segmenta koda, ovo može da se uradi i sa

drugim segmentnim registrima. Prilikom adresiranja ulaza/izlaza, segmentni registri ne

učestvuju u formiranju efektivne adrese. U tom slučaju, fizička adresa jednaka je vrijednosti

odsječka odgovarajućeg registra iz grupe pokazivača i indeksnih registara.

Formiranje fizičke adrese

4

Page 6: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Primjer:

Pretpostavimo da je u segmentntnom registru broj 6020H i da je dodatak 4267. Fizička adresa

se dobija na sledeći način.

Segment *10H 60200 H 1

+ dodatak 4267 H

20-bitna adresa 64467 H

Mikroprocesor i8086 ima četrnaest 16-bitnih registara, i to dvanaest registara za podatke i

adrese, jedan pokazivač instrukcija i statusni registar. Registri adresa i podataka su podjeljeni

u tri skupa sa po 4 registra: segmentni registri, registri podataka i pokazivački i indeksni

registri.

Pored ove tri grupe imamo i fleg registar i IP.

IP – pokazivač instrukcija čuva dodatak koji treba dodati sadržaju registra kodnog segmenta

da bi se formirala fizička adresa instrukcije koja treba sledeća da se izvrši.Statusni registar

sadrži zastavice (flags) koje mogu biti podignute ili spuštene. Jednu zastavicu predstavlja

jedna ćelija.

5

Page 7: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Ako je sadržaj ćelije 1, zastavica je podignuta, u suprotnom je spuštena. Flegovi kod i8086

su: CF – fleg prenosa, PF – fleg parnosti, AX – pomoćni fleg prenosa, ZF – nula fleg, SF –

fleg znaka, TF – zamka-fleg, IF – fleg osposobljavanja prekida, DF – fleg pravca, OF – fleg

prekoračenja.

Format instrukcija i način izvršavanja

Programer pristupa mikroprocesoru preko instrukcija (komandi), koje izdaje mikroprocesoru.

Instrukcije se u memoriji računara predstavljaju u binarnom obliku, tj. pomocu cifara 0 i 1.

Jedino u ovom obliku one su prihvatljive za mikrokontroler. Preko magistrala podataka i

adresnih magistrala, instrukcije se, u ovom obliku, dovode u mikroprocesor. U okviru svake

instrukcije razlikuju se dva glavna dijela: operacioni kod (opkod) i adresni dio. Operacioni

kod određuje vrstu operacije, koju treba da obavi mikroprocesor, a adresni dio ukazuje na

adrese sa kojih treba uzeti podatke za operisanje ili na koje treba da se pređe tokom

izvršavanja programa. Opkod mora postojati u svakoj instrukcij, dok adresni dio može da

bude prazan.

Pošto binarni oblik instrukcija nije pogodan za čovjeka uvode se skraćenice za pregledniji

zapis opkodova i adresnog dijela. Za opkodove se, skoro redovno, koriste skraćenice

engleskih riječi, a adrese se zamjenjuju raznim simboličnim imenima. Za ovako zapisane

instrukcije kaže se da su zapisane u simbiličnom obliku i nazivaju se asemblerskim

instrukcijama.

Između asemblerskih i mašinskih instrukcija postoji jednoznačna korespodencija.

Asemblerske instrukcije za i8086 mogu biti bez adrese, sa jednom adresom ili sa dve adrese,

tj. mogu imati jedan od oblika:

Opkod

Opkod Adresa

Opkod Adresa 1, Adresa 2

6

Page 8: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Adrese u instrukcijama mogu biti: adrese memorijskih lokacija, imena registara ili neposredni

podaci.

Primejri instrukcija bez adresa:

NOP ; Instrukcija bez dejstva, omogućava generisanje kratkih pauza

CLD ; Instrukcija za brisanje D flega.

Primjeri instrukcija sa jednom adresom su:

INC CX ; Uvećava sadržaj CX za 1

JMP Labela ; Bezuslovni skok na Labela.

Primjeri instrukcija sa dvije adrese:

MOV AX, Labela1 ; Premješta sadržaj lokacije Labela1 u AX

ADD DX, Labela2 ; Sabira sadržaj lokacije Labela2 i DX i upisuje u DX

Primjeri instrukcija koje na mjestu druge adrese imaju neposredni podatak:

MOV AL, 32 ; Upisuje 32 u AL

MOV AX, 543 ; Upisuje 534 u AX

Operandi u instrukcijama mogu biti dužine jednog bajta ili dužine jedne reči.

Načini adresiranja

Instrukcije i podaci čuvaju se u memoriji računara. Da bi instrukcija mogla da se izvrši, mora

biti dovedena iz memorije u mikroprocesor. Položaj instrukcije u memoriji određen je

sadržajem registara: CS i IP. Ukoliko u instrukciji treba operisati i sa nekim podacima,

moguće je da su podaci sadržani u samoj instrukciji, da se nalaze u nekom registru

7

Page 9: seminarski rad-nacin adresiranja kod mikroprocesora i8086

mikroprocesora ili u memoriji računara. Ukoliko su podaci sadržani u instrukciji, ili se nalaze

u nekom registru mikroprocesora, njima se lako pristupa jer su, praktično, u samom

mikroprocesoru. Međutim, ako su podaci u memoriji (ili ih treba upisati u memoriju),

mikroprocesor mora da se obrati nekoj memorijskoj lokaciji. Postoji više načina za obraćanje

mikroprocesora nekoj memorijskoj lpkaciji. U zavisnosti od toga gdje se nalazi podatak i

kako se vrši obraćanje memorijskoj lokaciji, adresni djelovi instrukcija pojavljuju se u

različitim oblicima.

Razlikujemo adresiranje podataka, instrukcija i steka.

Adresiranje podataka

Intelova familija mikroprocesora raspolaže sa 8 načina adresiranja podataka. Za ilustraciju

svakog pojedinačnog načina adresiranja pogodno je koristiti instrukciju MOV kojom se

kopira sadržaj izvorišnog registra ili memorijske lokacije u odredišni registar ili memorijsku

lokaciju, pri čemu sadržaj izvora ostaje nepromijenjen.

MOV odredište, izvor

Kod adresiranja podataka razlikujemo sledeće načine adresiranja:

Registarsko

Neposredno

Direktno

Registarsko – indirektno

Bazno – relativno

Direktno – indeksno

Bazno – indeksno

Skalirano – indeksno

Registarsko i neposredno adresiranje razlikuju se od ostalih oblika adresiranja jer se ovde ne

zahtjeva obraćanje memorijskim lokacijama. Kod ostalih oblika adresiranja neophodno je

obraćanje memorijskim lokacijama. U ovom slučaju, da bi se odredila efektivna adresa

podatka, koristi se sadržaj nekog od segmentnih registara (DS, ES ili SS) i određen dodatak

(pomjeranje). Sadržaj segmentnog registra se množi sa 16 i određuje početnu adresu segmenta

u memoriji. Dodatak (pomjeranje) određuje položaj podataka unutar segmenta i on je

8

Page 10: seminarski rad-nacin adresiranja kod mikroprocesora i8086

definisan načinom adresiranja. Za svaki način adresiranja poznato je iz kog segmenta se

uzimaju podaci.

Primer:

MOV Labela, AL

Pomoću ove instrukcije vrši se upis sadržaja AL-registra u memorijsku lokaciju pod nazivom

Labela. Ovde simboličko ime Labela predstavlja 16-bitnu adresu i određuje položaj podatka

unutar segmenta podataka. Da bi mikroprocesor mogao da upiše sadržaj AQL-registra u

memoriju, mora da odredi efektivnu adresu (apsolutnu adresu u memoriji) lokacije u kojoj se

vrši upis. To postiže množeći sadržaj DS-registra sa 16 i dodsavanjem vrednosti simboličkog

imena Labela.

Registarsko adresiranje

Ovo je jedna od najjednostavnijih metoda adresiranja i svodi se na preuzimanje sadržaja

registra i njegovog smeštanja u odredište.Ograničenje ovog načina adresiranja je da oba

registra moraju biti iste dužine, zatim da SЅ registar ne može biti odredište, kao i da nije

dozvoljen transfer podataka između dva segmentna registra.

Primjeri:9

Page 11: seminarski rad-nacin adresiranja kod mikroprocesora i8086

instrukcija dužina operacija

MOV AL,BL 8 bita kopira sadržaj BL u AL

MOV CH,CL 8 bita kopira sadržaj CL u CH

MOV AX,CX 16 bita kopira sadržaj CX u AX

MOV SP,BP 16 bita kopira sadržaj BP u SP

MOV DS,AX 16 bita kopira sadržaj AX u DS

MOV ECX,EBX 32 bita kopira sadržaj EBX u ECX

MOV ESP,EDX 32 bita kopira sadržaj EDX u ESP

MOV ES,DS ne može iz segmentnog registra u

segmentni registar

MOV BL,DX ne može različita dužina registara

MOV CS,AX CS ne može biti odredišni registar

Neposredno adresiranje

Ovo je najjednostavnija metoda adresiranja. Kao što joj ime kaže, radi se o neposrednoj

dodjeli vrijednosti. Kada se instrukcija, koja koristi ovo adresiranje, prevede u mašinski oblik,

neposredno iza koda operacije nalaziće se zadata konstanta.

Koristi se za upisivanje konstanti (konkretnih vrijednosti) u registre programskog

modela

MOV registar, konstanta

Heksadecimalne konstante praćene su oznakom "h", a ako počinju nekim od

simbola A-F ispred se dodaje "0"

Konstante praćene su oznakom "b"

10

Page 12: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Decimalne konstante upisuju se bez ikakvih oznaka

Znakovne konstante (ASCII) ograničavaju se apostrofima

Direktno adresiranje

To je metoda adresiranja koja podrazumijeva da joj je parametar adresa na kojoj se nalazi

vrijednost koju treba preuzeti. Postoji direktno i na bazi pomjeranja. U mašinskom formatu

adresa lokacije se nalazi kao neposredni operand i uvijek je 16-bitna vrijednost.

Pretpostavimo da je broj1 lokacija na kojoj se nalazi vrijednost A1h. Tada će instrukcija:

MOV AL, broj1

u AL upisati vrijednost A1h. Ovo je direktni način.

Na bazi pomjeranja imamo slučaj da je adresa određena sadržajem odgovarajućeg registra.

Npr. neka imamo instrukciju:

MOV BX, [2000h].

11

Page 13: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Ovo [2000h] nam definiše vrijednost pomjeraja u odnosu na vrijednost početka segmenta

podataka.

Primjeri :

MOV AL, [8088h]

MOV [1234h], AX

Stvarna adresa formira se na osnovu sadržaja DS registra pomnoženog sa 10h, na koji se

dodaje pomenuta vrijednost pomjeraja. Treba reći da se kod ove metode adresiranja kao

segmentni registar podrazumijeva DS, ali je to moguće predefinisati kao u narednim

primjerima :

MOV AL, ES:[0234h]

MOV AX, CS:[0452h]

Registarsko – indirektno adresiranje

Sadržaj registra, koji je naveden između uglastih zagrada, tumači se kao adresa na kojoj se

nalaze podaci. Registarsko-indirektno adresiranje omogućava adresiranje memorijske lokacije

u okviru datog segmenta pomoću offset-a (pomjeraja) sadržanog u nekom od sledećih

registara: BP, BX, DI i SI. 12

Page 14: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Registarsko-indirektno adresiranje

Primjeri:

MOV AL, [BX]

MOV AL, [BP]

MOV AL, [SI]

MOV AL, [DI]

Treba naglasiti da se prilikom upotrebe registara BX, SI i DI za računanje efektivne adrese

koristi segmentni registar DS, dok se za BP koristi SS. Eksplicitnim navođenjem segmentnih

registara moguće je uticati na računanje efektivne vrednosti, kao u sledećim primjerima :

MOV AL, CS:[BX]

MOV AL, DS:[BP]

MOV AL, ES:[SI]

MOV AL, SS:[DI]

13

Page 15: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Bazno – relativno adresiranje

Bazno – relativno adresiranje omogućava adresiranje memorijske lokacije u okviru datog

segmenta pomoću offset-a sadržanog u nekom od registara uvećanog ili umanjenog za

određenu konstantu. Ovdje se koriste BX i BP registri. Ako se koristi registar BP, podatak je

u stek – segmentu, u suprotnom je u segmentu sa podacima.

Bazno-relativno adresiranje

Primjer:

MOV AX, [BX+100h]

Efektivna adresa se formira sabiranjem vrijednosti registra i navedene konstante, pa se sa

lokacije, koju određuje efektivna adresa, uzima podatak ili se on u nju smiješta.

14

Page 16: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Sledeći primjeri prikazuju dozvoljene načine zapisa instrucija:

MOV AL, 20h[BP] ili

MOV AL, [BP+20h] ili

MOV AL, [BP]+ 20h

MOV DL, 78 [BX] ili

MOV DL, [BX+78] ili

MOV DL, [BX]+ 78

Direktno-indeksno adresiranje

Direktno-indeksno adresiranje se koristi za indirektno adresiranje memorijske lokacije

pomoću jednog od indeksnih registara (DI i SI).

Oblici adresa u ovom načinu adresiranja su sledeći:

[DI] + disp

[SI] + disp

15

Page 17: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Dodatak se dobija sabiranjem sadržaja SI ili DI sa nekim brojem (disp).

Primjer:

MOV SI, disp

MOV AX, NIZ [SI]

U akumulator će biti upisan član niza NIZ na koji pokazuje SI (sadržaj SI je disp), s tim što je

NIZ prvi član niza.

Ovaj način adresiranja koristi se pri radu sa nizovima i tabelama.

Bazno-indeksno adresiranje

Bazno-indeksno adresiranje, slično je prethodnom načinu adresiranja, koristi se za indirektno

adresiranje memorijske lokacije pomoću jednog od baznih registara u kombinaciji sa jednim

od indeksnih registara (DI i SI), a po potrebi sve se sabira sa nekim dodatnim brojem.

Bazno-indeksno adresiranje

Primjer:

MOD AL, disp [BX][SI]

MOV AL, disp [BX + DI]

16

Page 18: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Za formiranje dodatka, u ovom slučaju koristi se DS – registar (operandi su u segmentu sa

podacima).

MOV AL, [BP + SI + disp]

MOV AL, [BP][DI] [disp]

U ovom slučaju koristi se SS – registar (stek – segment) za formiranje dodatka.

Npr. Neka je u BP 1000h, BX sadrži 2000h, SI 120h, I DI sadrži 5.

Tada instrukcija MOV AL, 10h[BX + SI] učitava u AL sa adrese na koju pokazuje DS, a to je

2130; MOV CH, 125h[BP + DI] učitava u CH sa lokacije na koju pokazuje SS, a to je 112A.

Skalarano – indeksno adresiranje

Skalirano indeksno adresiranje je indeksno adresiranje kod kojeg se vrši skaliranje sadržaja

indeksnog registra, tj. množenje sa 1, 2, 4 ili 8.

Primjer:

MOV AX, [BX][2*CX+20h]

17

Page 19: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Adresiranje instrukcija

Adresiranje instrukcija (programske memorije) pojavljuje se u tri oblika i to:

Direktno

Indirektno

Relativno

Izvodi se korišćenjem JMP i CALL instrukcija.

Direktno adresiranje

Radi se o metodi adresiranja koja podrazumeva da joj je parametar adresa na kojoj se nalazi

vrijednost koju treba preuzeti. U mašinskom formatu adresa lokacije se nalazi kao neposredni

operand i uvek je 16-bitna vrednost. Direktno adresiranje u okviru instrukcija za skok

(grananje) pored operacionog koda sadrži i adresu naredne instrukcije.

Primjer:

JMP 1200h

Direktno adresiranje

18

Page 20: seminarski rad-nacin adresiranja kod mikroprocesora i8086

rjeđe se koristi od indirektnog i relativnog adresiranja

instrukcije koje se koriste za direktno adresiranje pored opkoda (opcode)

sadrže adresu na koju će se izvršiti grananje

ovaj način adresiranja omogućava tzv. intersegmentne skokove (skok na bilo

koju lokaciju u memoriji)

Indirektno adresiranje

Adresiranje se vrši tako što se adresa dobija na osnovu sadržaja jednog od 16-bitnih registara

ili relativnih registara.

• termin "relativno" podrazumijeva relativno u odnosu na pointer instrukcija (IP)

• pomjeraj može biti jednobajtni ili dvobajtni

• jednobajtni pomjeraj predstavlja kratki (short) skok

• dvobajtni pomjeraj predstavlja bliski (near) skok ili intrasegmentni skok (skok u okviru

istog segmenta)

• za specifikaciju pomjeraja koriste se označeni brojevi

19

Page 21: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Primjer:

JMP AX

JMP NEAR PTR[BX]

Relativno adresiranje.

• termin "relativno" podrazumijeva relativno u odnosu na pointer instrukcija (IP)

• pomjeraj može biti jednobajtni ili dvobajtni

• jednobajtni pomjeraj predstavlja kratki (short) skok

• dvobajtni pomjeraj predstavlja bliski (near) skok ili intrasegmentni skok (skok u okviru

istog segmenta)

• za specifikaciju pomjeraja koriste se označeni brojevi

20

Page 22: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Primjer:

JMP [6h]

znači šest mjesta u odnosu na ono što bi pokazivao pokazivač instrukcije.

Adresiranje steka

• stek je LIFO (Last In First Out) memorijska struktura

• stek se puni PUSH, a prazni POP instrukcijama

• podaci na steku adresiranju se pomoću SS i SP registara

• SP pokazuje na lokaciju na kojoj je raspoloživ podatak

• stavljanje podataka na stek

uvijek se stavlja riječ, prvo viši bajt (na SP-1), pa niži bajt (na SP-2)

• uzimanje podataka sa steka

21

Page 23: seminarski rad-nacin adresiranja kod mikroprocesora i8086

uvijek se uzima riječ, prvo niži bajt (sa SP), pa viši bajt

• PUSH i POP uvijek barataju sa riječima, a ne bajtovima (8086-80286), a noviji

mikroprocesori mogu i sa dvostrukim riječima

• na stek može biti ostavljen sadržaj bilo kojeg registra

• sa steka se može uzeti podatak i staviti u bilo koji registar osim u CS

Primjeri:

instrukcija operacija

PUSHF kopira flegove na stek

POPF uzima riječ sa steka i puni registar FLAGS

PUSHFD kopira EFLAGS na stek

POPFD uzima dvostruku riječ sa steka i puni EFLAGS

PUSH AX kopira sadržaj AX na stek

POP AX uzima riječ sa steka i puni AX

PUSH DS kopira sadržaj DS na stek

POP DS uzima riječ sa steka i puni DS

PUSH 1234h stavlja na stek konstantu 1234h

22

Page 24: seminarski rad-nacin adresiranja kod mikroprocesora i8086

Primjer asamblerskog programa

Primjer asemblerskog programa koji definiše odgovarajući niz, zatim puni registre određenim

vrijednostima i manipuliše sadržajem registara koristeći opisane načine adresiranja:

podaci segment 'data'

niz db 96 dup (?)

podaci ends

kod segment 'code'

assume ds:podaci, cs:kod

start: mov ax, podaci

mov ds, ax

mov al, 65

mov cl, 10h

mov di, 20

mov niz, al

mov bx, offset niz

mov [niz+10], cl

mov di, 20

mov [bx][di], cl

mov [bx][di+1], cl

mov ah, 4ch

int 21h

kod ends

end star

23

Page 25: seminarski rad-nacin adresiranja kod mikroprocesora i8086

LITERATURA:

Dušan Tošić “Mikroprocesori sa elementima programiranja”

Dr Zoran Salčić “ Mikroračunarski sistemi ” - 1982. god

Gabro Smiljanić “Mikroračunala” - 1985.god

www.intel.co

24