You are on page 1of 37

KARABK NVERSTES

TEKNOLOJ FAKLTES MEKATRONK MHENDSL BLM

MTM 305 MKROLEMCLER

Ar. Gr. Emel SOYLU


Ar. Gr. Kadriye Z
2
8086 Mimarisi
8086da bulunan tm i registerlar ve veri yollar 16
bitlik geniliktedir.

3
Adresleme
Veri yolu 16-bit geniliindedir. Adres yolu ise 20-bit
geniliindedir
8086, 1MBlk hafza blounu adresleyebilir (1M =
220)
Ancak, en fazla adreslenebilir hafza uzay 64 KB
byklndedir. nk tm dahili registerlar 16-bit
byklndedir. 64 KBlk snrlarn dnda
programlama yapabilmek iin extra operasyonlar
kullanmak gerekir

4
8086 Bileenleri

5
Registerlar
Registerlar, CPU ierisinde bulunduklarndan dolay, hafza
blouna gre olduka hzldrlar.
Hafza blouna eriim iin sistem veri yollarnn kullanlmas
gereklidir.
Registerdaki verilerin ulalmas iin ok ok kk bir zaman
dilimi yeterli olur.
Bu sebeple, deikenlerin, registerlarda tutulmasna allmaldr.
Register gruplar genellikle olduka kstldr ve ou registern
nceden tanmlanm grevleri bulunur. Bu nedende, kullanmlar
ok snrldr. Ancak, yine de hesaplamalar iin geici hafza birimi
olarak kullanlmak iin en ideal birimlerdir.

6
Register Tipleri
1. Genel Amal Registerlar
2. ndis Registerlar
3. zel Amal Registerlar

7
1. Genel Amal Registerlar
8086 CPUda, 8 genel amal register bulunur. Her registern ayr bir
ismi bulunur:
AX - accumulator register akmlatr (AH / AL).
BX - the base address register adres balangc (BH / BL).
CX - the count register sayma (CH / CL).
DX - the data register veri (DH / DL).
SI - source index register kaynak indisi.
DI - destination index register hedef indisi.
BP - base pointer temel gsterici.
SP - stack pointer yt gsterici.

8
Genel Amal Registerlar (devam)
Bu registerlar, isminin belirttii amalar iin kullanlmak zorunda
deildir. Programc, genel amal registerlar istedii gibi kullanabilir.
Registerlarn ana amac, bir deikeni tutmaktr.
Yukardaki registerlarn tamam 16-bitliktir.
4 genel amal register (AX, BX, CX, DX), iki 8-bitlik register olarak
kullanlabilir.
rnein eer AX=3A39h ise, bu durumda AH=3Ah ve AL=39h
olur.
8-bitlik registerlar deitirdiiniz zaman, 16-bitlik registerlar da
deimi olur.

9
2. Segment Registerlar
CS (Code Segment) Mevcut programn bulunduu blm
iaretler.
DS (Data Segment) Genellikle programda bulunan deikenlerin
bulunduu blm iaretler.
ES (Extra Segment) Bu registern kullanm, kullancya
braklmtr.
SS (Stack Segment) ynn bulunduu blm iaretler.

10
Segment Registerlar (devam)
Segment registerlarnda herhangi bir veriyi depolamak mmkndr.
Ancak bu, gzel bir fikir deildir.
Segment registerlarnn zel amalar vardr. Hafzada ulalabilir
baz blmleri iaretler.

11
Segment Registerlar (devam)
Segment registerlar, genel amal registerlar ile
birlikte alarak hafzada herhangi bir blgeyi
iaretleyebilir. rnein, fiziksel adres 12345h
(heksadesimal) iaretlenmesi isteniyor ise, DS =
1230h ve SI = 0045h olmaldr.
CPU, segment register 10h ile arpar ve genel
amal registerda bulunan deeri de ilave eder
(1230h10h + 45h = 12345h).

12
Segment Registerlar (devam)
2 register tarafndan oluturulmu olan adrese,
effective address (efektif adres) ismi verilir.
BX, SI ve DI registerlar, DS ile birlikte alr; BP
ve SP registerlar ise SS ile birlikte alr.
Dier genel amal registerlar, efektif adres
oluturmak iin kullanlmazlar. Ayrca, BX efektif
adres oluturulmasnda kullanlrken, BH ve BL
kullanlmaz.

13
Segment ve Offset
Tm hafza adresleri segment adresine offset adresi
ilave edilmesi ile bulunur.
segment adresi: Herhangi bir 64 KBlk hafza
blmnn balangcn gsterir.
offset adresi: 64 KBlk hafza blmnde herhangi
bir satr belirtir.

14
Segment ve Offset (devam)
Segment register 1000h
deerine sahip ise, 10000h
ile 1FFFFh aralnda bir
hafza adresine karlk gelir.
64KBlk bir aralktr
Offset deeri F000h ise
1F000h adresindeki hafza
satrna karlk gelir.

15
Segment ve Offset (devam)
Balang adresi belli ise, biti adresi FFFFh ilave
edilerek bulunur.
nk segment register 64 KBlk bir blm iaretler.
Offset adresi, segment adresine ilave edilir.
Segment ve offset adresleri 1000:2000 biiminde de
yazlabilir.
Bu durumda segment adresi 1000H ve offsette
2000Hdir.

16
ntanml Segment ve Offset Registerlar
CS:IP
CS, kod blmnn balangcna iaret eder. IP, kod
blm ierisinde bir sonraki komutun bulunduu
hafza adresine iaret eder.
Eer CS=1400H ve IP=1200H, mikroilemci, bir
sonraki komutu 14000H + 1200H = 15200H
adresinden okur.

17
ntanml Segment ve Offset Registerlar (devam)
SS:SP veya SS:BP
Yn blmn kullanan komutlar kullanr.
DS register, BX, DI, SI, 8-bitlik veya 16-bitlik say
ile birlikte
ES:DI (string komutlar iin)

18
3. zel Amal Registerlar
IP instruction pointer komut iaretleyicisi.
IP register CS ile birlikte, halihazrdaki altrlan
komutu iaretler.
Flags (Bayrak) register
Flags register, CPU tarafndan, matematiksel
operasyonlardan sonra otomatik olarak deitirilir. Bu
register sayesinde, elde edilen sonucun eidi ve
durumu ile ilgili bilgiler, program tarafndan
kullanlabilir.

19
3. zel Amal Registerlar
Genellikle, bu registerlara dorudan eriim
bulunmaz.
Ancak, sistem registerlarnn deerleri, daha sonra
reneceiniz baz metotlar sayesinde deitirilebilir.

20
Flag Bitleri
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

O D I T S Z A P C

C (carry): toplama ileminden oluan elde ve


karma ileminden oluan dnleri tutar.
Ayrca, hata durumlarn gsterir
P (parity): bir sayda bulunan 1lerin tek sayda m
yoksa ift sayda m olduunu belirtir.
0 tek parity; 1 ift parity.
Eer bir say 3 tane binary 1 bit var ise, say tek
parityye sahiptir.
Eer bir sayda hi 1 bit yok ise, say ift parityye
sahiptir.
21
Flag Bitleri (devam)
A (auxiliary carry): 3 ve 4. bit pozisyonlar iin
geerli olmak zere, toplama ileminden oluan elde
ve karma ileminden oluan dnleri tutar.
Z (zero): aritmetik veya mantk operasyonunun
sonucunun sfr olup olmad bilgisini tutar.
S (sign): altrlan aritmetik veya mantk
operasyonunun sonucunda elde edilen saynn
aritmetik ynn (pozitif veya negatif) belirtir.

22
Flag Bitleri (devam)
T (trap): ip zeri debug zelliine olanak tanr.
I (interrupt): INTR (interrupt request interrupt
istei) giriini kontrol eder.
D (direction): DI ve/veya SI registerlar iin arttrma
veya azaltma modlarndan birini seer.
O (overflow): iki ynl saynn toplam veya
karlmas durumlarnda kullanlr.
overflow olmas, sonucun, 16-bitlik kapasiteyi atn
gsterir.

23
Adresleme Modlar
Adresleme modlar bellein nasl kullanldn, bellee
nasl eriileceini ve verilerin bellee nasl
yerletirileceini belirler. Aada verilen anlatmda
kullanlan ksaltmalar anlamalar u ekildedir.

Register: Kaydedici (Yazma)


Memory: Bellek
mmediate : Acil veri, dorudan veri
Acil Adresleme( Immediate Addressing)
(Anlk Adresleme)
Dorudan sabit bir deer bir kaydediciye aktarlr. Sabit
deerin bykl ile register uyumlu olmaldr.
rnein 8 bitlik bir kaydediciye 16 bitlik bir deer
yklenemez.
Genel Kulanm:
KOMUT register, immediate
rnek:
MOV CL, 16h
MOV DI, 2ABFh
MOV AL, 4567h ; Yanl
Kaydedici Adresleme (Register Addressing)
(Yazma Adresleme)
Bu adresleme modunda her iki operand (ilenen) de
kaydedicidir.
Genel kullanm:
KOMUT register, register
rnek:
MOV AL, BL
INC BX
DEC AL
SUB DX, CX
Dorudan adresleme(Direct addressing)
Dorudan bir adres deeri kullanlr. Bir adresten bir
kaydediciye very aktarm gerekletirilir. Bir baka ifade
ile operandlardan birisi adres belirtir.
Genel kullanm:
KOMUT register, memory veya
KOMUT memory, register
rnek:
MOV AX, [1000]
TOPLAM DW 20 ; Burada TOPLAM bir adrestir. 20 says bu adresin
iindeki deerdir.
MOV AX, TOPLAM ; TOPLAM adresindeki deeri AX e at.

MOV TOPLAM, AX
Dolayl adresleme(Indirect addressing)
(Kaydediciye dayal dolayl adresleme)
Etkin adres deeri (offset) BX, BP, SI, DI kaydedicilerinden birinde bulunur.
Genel kullanm:
KOMUT register, [BX/BP/SI/DI] veya
KOMUT [BX/BP/SI/DI], register
rnek:
MOV AX,[SI]
MOV BX,1000 ;
SUB DX, [BX]
MOV [SI], AL
TABLO DB 5,9,0,3,-7
MOV BX, OFFSET TABLO ; Bunun yerine LEA BX,TABLO kullanlabilir.
MOV AX, [BX] ; Kaydedici dolayl adresleme var
Dolayl adresleme(Indirect addressing)
(Kaydediciye dayal dolayl adresleme) (2)
LEA komutu (Load Efective Addres) ofset adresi bir keydediciye yklemek
iin kullanlr.
Yukardaki iki komut yerine aadaki komut kullanlabilir.
MOV AX, TABLE ; dorudan adresleme var. lk iki deer AX e yklenir.
Herhangi bir bellek blgesi dolayl bir adresleme ile adreslenip iine sabit bir
deer atanmak istendii zaman atanacak deerin uzunluu byte ptr ve word
ptr ile belirtilmelidir.

MOV [BX], 12 ; yanl 00


MOV byte ptr [BX],12 ; doru 12 sabit deeri bayt olarak BX in
gsterdii adrese yerleecek
MOV word ptr [BX],1234 ;doru 1234 sabit deeri word olarak BX in
gsterdii adrese yerleecek
ndisli adresleme (Indexed addressing)
Dolayl adreslemede keli parantez iinde kalan BX/BP/SI/DI kaydedicilerine
bir indis deeri eklenerek kullanlr.
Genel kullanm:
KOMUT register, [BX/BP/SI/DI+indis] veya
KOMUT [BX/BP/SI/DI+indis], register
rnek:
MOV AX, [SI+4]
ADD [DI-6],CX
MOV CX, [SI+DI+7] ;
MOV AX, [BX+DI]
MOV AX, [SI-7] ; bu komut yerine MOV AX, [SI]-7 de kullanlabilir.

MOV DI, 2
MOV AL, TABLE [DI] ;AL kaydedicisine TABLE dizisinin 2. Elemann ykler.
DKKAT
1-) KOMUT memory, memory
eklinde bir kullanm geerli deildir. Bir bellek blgesinde
baka bir bellek blgesine veri aktarm yoktur.
2-) Sabit bir deer dorudan Segment Registerine atanamaz.

MOV DS,1234 Yanltr. Bunun yerine aadaki kullanm


geerlidir.
MOV AX, 1234 ; nce kaydediciye
MOV DS, AX ; sonra segment kaydedicisine deer
atanr.
16 Bitlik bir verinin bellee yerlemesi
Bellein her bir hcresi 8 bit
olduundan 16 bitlik verinin dk
deelikli 8 bitlik ksm adresin
dk deerlikli ksmna, yksek
deerlikli 8 bitlik ksm adresin
yksek deerlikli ksmna yerleir.
Aada verilen rnekte AX
kaydedicisinde 2A8BH deeri yer
almaktadr. Dk deerlikli deer
AL de yer almakta ve 10H
adresine yerlemektedir. Yksek
deerlikli ksmda yer alan AH daki
deer 2AH deeri ise 11H
adresine yerlemektedir.
Benzer olarak 32bitlik bir veriyi(doubleword) bu ekilde
dnerek yerletirebilirsiniz.
rnein:
SAYI DB 1A2F56FFH verisini 100H adresinden
itibaren yerletirecek olursa u ekilde olur.

Adres veri

100 FF
101 56
102 2F
103 1A
104
105
106
.MODEL SMALL
Dizi Tanmlamas ve .STACK 64
.DATA
Elemanlarna Eriimi DIZI DB 5, 6, 7, 8, 9, 0,-6,-9, 3, 8
SONUC DW ?
.CODE
ANA PROC FAR
DIZI DB 5, 6, 7, 8, 9, 0, -6, MOV AX,@DATA
MOV DS, AX
-9,3 eklinde tanmlamas MOV AL,0
yaplr. MOV CX,10
LEA SI, DIZI ; DIZI nin baslangic ofset
LEA SI, DIZI ; eklinde adresi SI ya yklenir
dizinin balang adresini BAS:
SI kaydedicisine alnr. MOV BL,[SI]
ADC AL, BL
INC SI
rnek: Bir dizide bulunan LOOP BAS
MOV SONUC, AL
elemanlarn toplamn
MOV AH,4CH
bulan program kodunu INT 21H
yaznz. ANA ENDP
END ANA
rnekler
Aadaki komutlarn adresleme modlarn bulun
MOV [DI],BH
MOV DH,[BX+DI+20H]
MOV AX,44H
MOV AL,BL
MOV [BX+SI],SP
JMP etiket1
MOV AL,say
MOV SP,BP
MOV AX,[DI+100H]
MOV AX,dizi
MOV BL,44
MOV CH,[BP+SI]
MOV dizi[SI],BL
MOV AX,dosya[BX+DI]
MOV liste[SI+2],CL
MOV CX,[BX]
Beni dinlediiniz iin teekkr ederim.

You might also like