Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Intel 8086 Mimarisi Adresleme Modları 1 Mikroişlemciler.

Benzer bir sunumlar


... konulu sunumlar: "Intel 8086 Mimarisi Adresleme Modları 1 Mikroişlemciler."— Sunum transkripti:

1 Intel 8086 Mimarisi Adresleme Modları 1 Mikroişlemciler

2 İçerik Mikroi ş lemcinin iç tasarımı Adresleme modları

3 Mimarisi

4 4 8086’da bulunan tüm iç register’lar ve veri yolları 16 bitlik geni ş liktedir. 8086: little endian mikroi ş lemcidir. Hafıza blo ğ una 16 bitlik veri yazıldı ğ ı zaman, hafızanın ilk 8 bitlik satırında verinin küçük kısmı bulunur. Big Endian  İ lk baytta, verinin büyük kısmı bulunur Small Endian  İ lk baytta, verinin küçük kısmı bulunur

5 Adresleme 5 Veri yolu 16-bit geni ş li ğ indedir. Adres yolu ise 20-bit geni ş li ğ indedir 8086, 1MB’lık hafıza blo ğ unu adresleyebilir (1M = 2 20 ) Ancak, en fazla adreslenebilir hafıza uzayı 64 KB büyüklü ğ ündedir. Çünkü tüm dahili register’lar 16-bit büyüklü ğ ündedir. 64 KB’lık sınırların dı ş ında programlama yapabilmek için extra operasyonlar kullanmak gerekir

6 8086 Bileşenleri 6

7 Register’lar 7 Register’lar, CPU içerisinde bulunduklarından dolayı, hafıza blo ğ una göre oldukça hızlıdırlar. Hafıza blo ğ una eri ş im için sistem veri yollarının kullanılması gereklidir. Register’daki verilerin ula ş ılması için çok çok küçük bir zaman dilimi yeterli olur. Bu sebeple, de ğ i ş kenlerin, register’larda tutulmasına çalı ş ılmalıdır. Register grupları genellikle oldukça kısıtlıdır ve ço ğ u register’ın önceden tanımlanmı ş görevleri bulunur. Bu nedende, kullanımları çok sınırlıdır. Ancak, yine de hesaplamalar için geçici hafıza birimi olarak kullanılmak için en ideal birimlerdir.

8 Register Tipleri 8 1. Genel Amaçlı Register’lar 2. İ ndis Register’ları 3. Özel Amaçlı Register’lar

9 1. Genel Amaçlı Register’lar CPU’da, 8 genel amaçlı register bulunur. Her register’ın ayrı bir ismi bulunur: AX - accumulator register – akümülatör (AH / AL). BX - the base address register – adres ba ş langıcı (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 gösterici. SP - stack pointer – yı ğ ıt gösterici.

10 Genel Amaçlı Register’lar (devam) 10 Bu register’lar, isminin belirtti ğ i amaçlar için kullanılmak zorunda de ğ ildir. Programcı, genel amaçlı register’ları istedi ğ i gibi kullanabilir. Register’ların ana amacı, bir de ğ i ş keni tutmaktır. Yukarıdaki register’ların tamamı 16-bitliktir. 4 gene ş amaçlı register (AX, BX, CX, DX), iki 8-bitlik register olarak kullanılabilir. Örne ğ in e ğ er AX=3A39h ise, bu durumda AH=3Ah ve AL=39h olur. 8-bitlik register’ları de ğ i ş tirdi ğ iniz zaman, 16-bitlik register’lar da de ğ i ş mi ş olur.

11 2. Segment Register’ları 11 CS – (Code Segment) Mevcut programın bulundu ğ u bölümü i ş aretler. DS – (Data Segment) Genellikle programda bulunan de ğ i ş kenlerin bulundu ğ u bölümü i ş aretler. ES – (Extra Segment) Bu register’ın kullanımı, kullanıcıya bırakılmı ş tır. SS – (Stack Segment) yı ğ ının bulundu ğ u bölümü i ş aretler.

12 Segment Register’ları (devam) 12 Segment register’larında herhangi bir veriyi depolamak mümkündür. Ancak bu, güzel bir fikir de ğ ildir. Segment register’larının özel amaçları vardır. Hafızada ula ş ılabilir bazı bölümleri i ş aretler.

13 Segment Register’ları (devam) 13 Segment register’ları, genel amaçlı register’ları ile birlikte çalı ş arak hafızada herhangi bir bölgeyi i ş aretleyebilir. Örne ğ in, fiziksel adres 12345h (heksadesimal) i ş aretlenmesi isteniyor ise, DS = 1230h ve SI = 0045h olmalıdır. CPU, segment register’ı 10h ile çarpar ve genel amaçlı register’da bulunan de ğ eri de ilave eder (1230h×10h + 45h = 12345h).

14 Segment Register’ları (devam) 14 2 register tarafından olu ş turulmu ş olan adrese, effective address (efektif adres) ismi verilir. BX, SI ve DI register’ları, DS ile birlikte çalı ş ır; BP ve SP register’ları ise SS ile birlikte çalı ş ır. Di ğ er genel amaçlı register’lar, efektif adres olu ş turmak için kullanılmazlar. Ayrıca, BX efektif adres olu ş turulmasında kullanılırken, BH ve BL kullanılmaz.

15 Segment ve Offset 15 Tüm hafıza adresleri segment adresine offset adresi ilave edilmesi ile bulunur. segment adresi: Herhangi bir 64 KB’lık hafıza bölümünün ba ş langıcını gösterir. offset adresi: 64 KB’lık hafıza bölümünde herhangi bir satırı belirtir.

16 Segment ve Offset (devam) 16 Segment register’ı 1000h de ğ erine sahip ise, 10000h ile 1FFFFh aralı ğ ında bir hafıza adresine kar ş ılık gelir. 64KB’lık bir aralıktır Offset de ğ eri F000h ise 1F000h adresindeki hafıza satırına kar ş ılık gelir.

17 Segment ve Offset (devam) 17 Ba ş landıç adresi belli ise, biti ş adresi FFFFh ilave edilerek bulunur. Çünkü segment register’ı 64 KB’lık bir bölümü i ş aretler. Offset adresi, segment adresine ilave edilir. Segment ve offset adresleri 1000:2000 biçiminde de yazılarbilir. Bu durumda segment adresi 1000H ve offset’te 2000H’dir.

18 Öntanımlı Segment ve Offset Register’ları 18 CS:IP CS, kod bölümünün ba ş langıcına i ş aret eder. IP, kod bölümü içerisinde bir sonraki komutun bulundu ğ u hafıza adresine i ş aret eder. E ğ er CS=1400H ve IP=1200H, mikroi ş lemci, bir sonraki komutu 14000H H = 15200H adresinden okur.

19 Öntanımlı Segment ve Offset Register’ları (devam) 19 SS:SP veya SS:BP Yı ğ ın bölümünü kullanan komutlar kullanır. DS register’ı, BX, DI, SI, 8-bit’lik veya 16-bit’lik sayı ile birlikte ES:DI (string komutları için)

20 3. Özel Amaçlı Register’lar 20 IP –instruction pointer – komut i ş aretleyicisi. IP register’ı CS ile birlikte, halihazırdaki çalı ş tırılan komutu i ş aretler. Flags (Bayrak) register Flags register, CPU tarafından, matematiksel operasyonlardan sonra otomatik olarak de ğ i ş tirilir. Bu register sayesinde, elde edilen sonucun çe ş idi ve durumu ile ilgili bilgiler, program tarafından kullanılabilir.

21 3. Özel Amaçlı Register’lar 21 Genellikle, bu register’lara do ğ rudan eri ş im bulunmaz. Ancak, sistem register’larının de ğ erleri, daha sonra ö ğ renece ğ iniz bazı metotlar sayesinde de ğ i ş tirilebilir.

22 Flag Bit’leri 22 C (carry): toplama i ş leminden olu ş an elde ve çıkarma i ş leminden olu ş an ödünçleri tutar. Ayrıca, hata durumlarını gösterir P (parity): bir sayıda bulunan 1’lerin tek sayıda mı yoksa çift sayıda mı oldu ğ unu belirtir. 0 tek parity; 1 çift parity. E ğ er bir sayı 3 tane binary 1 bit var ise, sayı tek parity’ye sahiptir. E ğ er bir sayıda hiç 1 bit yok ise, sayı çift parity’ye sahiptir ODITSZAPC

23 Flag Bit’leri (devam) 23 A (auxiliary carry): 3 ve 4. bit pozisyonları için geçerli olmak üzere, toplama i ş leminden olu ş an elde ve çıkarma i ş leminden olu ş an ödünçleri tutar. Z (zero): aritmetik veya mantık operasyonunun sonucunun sıfır olup olmadı ğ ı bilgisini tutar. S (sign): çalı ş tırılan aritmetik veya mantık operasyonunun sonucunda elde edilen sayının aritmetik yönünü (pozitif veya negatif) belirtir.

24 Flag Bit’leri (devam) 24 T (trap): çip üzeri debug özelli ğ ine olanak tanır. I (interrupt): INTR (interrupt request – interrupt iste ğ i) giri ş ini kontrol eder. D (direction): DI ve/veya SI register’ları için arttırma veya azaltma modlarından birini seçer. O (overflow): iki yönlü sayının toplamı veya çıkarılması durumlarında kullanılır. overflow olması, sonucun, 16-bitlik kapasiteyi a ş tı ğ ını gösterir.

25 25 Adresleme Modları

26 Giriş 26 Mikroi ş lemci için verimli yazılım geli ş tirme, her bir komut için geçerli adresleme modlarının iyi bilinmesine ba ğ lıdır.

27 Veri Adresleme Modları 27 MOV komutu, çok kullanılan esnek bir komuttur. Veri adresleme modlarının anlatımı için bir temel olu ş turacaktır. Source (kaynak): sa ğ da destination (hedef): solda operand Opcode: MOV. Opcode (operasyon kodu): mikroi ş lemciye, hangi operasyonun çalı ş tırılaca ğ ını belirtir.

28 28

29 Adresleme Modu 29 Operand’larda belirtilen efektif hafıza adresinin nasıl hesaplanaca ğ ını belirtir. Bu adresin hesaplanması için register’larda bulunan bilgiler ve/veya sabit sayılar kullanılabilir. Sabit sayılar, komutun içerisinde belirtilebilece ğ i gibi, farklı yerlerde de belirtilmi ş olabilir.

30 1. Register Adreslemesi 30 Bu modda, kaynak operand’ı, hedef operand’ı veya her ikisi birden 8086 register’ları arasından seçilir. MOV DX, CX MOV CL, DL 8-bit register’lar: AH, AL, BH, BL, CH, CL, DH, ve DL. 16-bit register’lar: AX, BX, CX, DX, SP, BP, SI, ve DI. H İ Ç B İ R ZAMAN 8-bitlik ve 16-bitlik register’ları karı ş tırmayın.

31 2. Immediate (Veri tanımlı) Adresleme 31 Kaynak olarak, komutun içerisinde tanımlanmı ş olan byte veya word; hedef register’ı veya hafıza satırına yazılır. MOV CL, 03H MOV DX, 0502H İ mmediate (hemen) kelimesi, heksadesimal opcode’dan hemen sonra gelen hafıza satırındaki verinin kullanılmasını ifade eder. İ mmediate veriler, sabit verilerdir. Register’dan veya hafıza satırından okunan veriler, de ğ i ş ken verilerdir.

32 Immediate Addressing (continued) 32 H harfi, heksadesimal veri oldu ğ unu ifade eder. E ğ er heksadesimal veri, bir harf ile ba ş lar ise (A, B, C, D, E), assembler, verinin 0 ile ba ş lamasını gerektirir. Örne ğ in heksadesimal F2, assembly dilinde 0F2H ş eklinde ifade edilmelidir. Desimal (10’luk sistemdeki) veriler için herhangi bir özel ön veya arka takı gerekmez. Örne ğ in, desimal 100 rakamı AL register’ına yazılması istenir ise MOV AL,100 komutu kullanılır.

33 Bir Assembly Programı 33 VERI1 DB 23H ; VERI1 23H baytı olarak tanımlı VERI2 DW 1000H ; VERI2 1000H word’u olarak tanımlı BASLA: MOV AL,BL ;BL’yi AL’ye kopyala MOV BH,AL ;AL’yi BH’ye kopyala MOV CX,200 ;200 desimal rakamını CX’e kopyala

34 Assembly Programları 34 Assembly programlama dilindeki her komut 4 parça/kısımdan olu ş ur. En soldaki kısma label ismi verilir. Bulundu ğ u hafıza satırı için sembolik bir isim belirtir. Tüm label’lar, bir harf veya ş u özel karakterlerden biri ile ba ş $, -, or ?. Bir label, 1 ile 35 karakter arasında olabilir.

35 Assembly Dili (devam) 35 Bir sonraki kısım opcode alanıdır. Komutun ne oldu ğ unu tanımlar. Daha önce belirtilen örneklerdeki MOV kısmı, opcode için bir örnektir. Opcode kısmının sa ğ ındaki kısım operand kısmıdır. Opcode tarafından kullanılacak olan bilgileri içerir. MOV AL,BL komutundaki AL ve BL kısımları operand kısımlarıdır. En sonda ise, komut ile ilgili eklenebilecek yorumları içeren kısmı comment bulunur. Yorumlar, noktalı virgül (;) karakteri ile ba ş lar.

36 3. Direct (Doğrudan) Adresleme 36 Hafıza ile bir register arasında byte veya word transferi yapar. Komut seti, hafızadan hafızaya veri transferini içermez (MOVS komutu hariç) Örnekler: MOV CX,START MOV START,BL START assembler tarafından, DB(Define Byte – Byte olarak tanımla) or DW(Define Word – Word olarak tanımla) pseudo komutları ile tanımlanmı ş bir adrestir.

37 4. Register Indirect (Dolaylı) Adresleme 37 Register ile bir indis veya baz register’ı sayesinde adreslenmi ş olan bir hafıza bölümü arasında byte veya word transferi. Indis ve baz register’ları BP, BX, DI, ve SI’dır. Örnek: MOV AX,[BX] komutu, (veri bölümünün ba ş langıcından) BX register’ında belirtilen offset’te bulunan 16-bitlik veriyi AX register’ına kopyalar.

38 5. Base-plus-index (Baz-artı-indis) Adresleme 38 Baz register (BP veya BX)’te bulunan de ğ ere indis register’larda (DI veya SI)’da bulunan de ğ er ilave edilerek bulunan de ğ erin i ş aret etti ğ i hafıza adresindeki veri ile register’da bulunan veri arasında yapılan byte veya word büyüklü ğ ündeki transferi gerçekle ş tirir. Örnek: MOV [BX+DI],CL komutu, CL’de bulunan byte büyüklü ğ ündeki veriyi, BX+DI ile i ş aretlenen hafıza adresine kopyalar.

39 6. Register Relative (Göreceli) Adresleme 39 İ ndis veya baz register’ındaki de ğ ere bir sayı ilave edilmesi ile olu ş an de ğ erin i ş aret etti ğ i hafıza bölgesi ile register arasında gerçekle ş tirilen byte veya word büyüklü ğ ündeki transferi gerçekle ş tirir. Örnekler: MOV AX,[BX+4] MOV AX,ARRAY[BX]

40 7. Base Relative-Plus-Index (Baz Göreceli-artı-indis) Adresleme 40 Baz ve indis register’ına bir de ğ er ilave edilerek bulunan de ğ erin i ş aretledi ğ i hafıza bölgesi ile register arasındaki byte veya word büyüklü ğ ündeki veri transferi. Örnekler: MOV AX,ARRAY[BX+DI] MOV AX,[BX+DI+4]

41 8. Relative (Göreceli) Adresleme 41 Bu modda, operand, PC’ye göre göreceli olarak belirtilmi ş olan 8-bitlik yönlü sayı ile ifade edilir. Örnek: JNC START E ğ er carry=0 ise, PC’ye START’ın gösterdi ğ i 8-bitlik yönlü sayı ilave edilerek bulunan de ğ er yüklenir. Aksi durumda, bir sonraki komuta geçilir.

42 9. Implied (İmalı) Adresleme 42 Bu modu kullanan komutların hiç operand’ı bulunmaz. Örnek: CLC Bu komut, carry bayra ğ ının de ğ erini sıfıra çeker.

43 Örnekler 43 A ş a ğ ıdaki komutların adresleme modlarını bulun: MOV DH,[BX+DI+20H] MOV AL,BL JMP LABEL1 MOV SP,BP MOV AX,WATER MOV CH,[BP+SI] MOV AX,FILE[BX+DI] MOV [DI],BH MOV AX,44H MOV [BX+SI],SP MOV AL,NUMBER MOV AX,[DI+100H] MOV BL,44 MOV ARRAY[SI],BL MOV LIST[SI+2],CL MOV CX,[BX] CLI


"Intel 8086 Mimarisi Adresleme Modları 1 Mikroişlemciler." indir ppt

Benzer bir sunumlar


Google Reklamları