Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar



Benzer belgeler
Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

8086 Mikroişlemcisi Komut Seti

Bildiğiniz gibi programları oluşturan kodlar ve veriler hafızaya yüklendikten sonra işlemci tarafından satırsatır icra edilirler.

MTM 305 MĠKROĠġLEMCĠLER

BM-311 Bilgisayar Mimarisi

MTM 305 MİKROİŞLEMCİLER

Mikrobilgisayar Donanımı

Bölüm 4 Veri Aktarma Komutları

ÖZET. Lojiksel ve Hiziksel Hafıza. x86 byte düzeni nın Fiziksel Hafıza Yapısı. Ders 3. Temeller

JZ TEST3 (7/3) 1 makine çevrimi süresi

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

2011 Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

Bileenler arasndaki iletiim ise iletiim yollar ad verilen kanallar yardm ile gerçekleir: 1 Veri Yollar 2 Adres Yollar 3 Kontrol Yollar

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

MTM 305 MİKROİŞLEMCİLER

16 bitlik işlemciler basit olarak 8 bitlik işlemciler gibi Kaydedici ALU Zamanlama/kontrol

Assembly Programlama Dili T e m m u z

MTM 305 MĠKROĠġLEMCĠLER

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

MTM 305 MĠKROĠġLEMCĠLER

Mikrobilgisayar Mimarisi ve Programlama

Ders Özeti. Ders 2. PC nin İç Organizasyonu. Mikroişlemcinin Organizasyonu. Basitçe İşlemciyi Oluşturan Parçalar. Mikroişlemciler

Assembly. Programlama Dili. T e m m u z

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. İşlenenin Yeri. Örnek MİB Buyruk Yapısı. İvedi Adresleme. Adresleme Yöntemleri. Bellek. Kütükler.

KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR:

b) Aritmetik İşlem Komutları

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. Örnek MİB ile Adresleme. Adresleme Yöntemleri. Doğal Adresleme. İvedi Adresleme

BÖLÜM 6 Seri Port Đşlemleri

DENEY III RAPORU MİKROİŞLEMCİ UYGULAMALARI LABORATUVARI

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

MTM 305 MİKROİŞLEMCİLER

Aritmetiksel Komutlar

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

BIL 362 Mikroilemciler Dersi Arasınav Cevapları 3 Temmuz 2007

Özet DERS 5. Şu ana kadar bilmeniz gerekenler... İşaretsiz Çarpma. Bayraklardaki Durumlar. İşaretli Çarpma

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI KESMELİ GİRİŞ/ÇIKIŞ

BM-311 Bilgisayar Mimarisi

8086 dan core2 ya yazaç yapısını tanımak. Bayrak yazacının içeriğinde yer alan bayrakların görevlerini tanımlamak. Real mod çalışmada bellek

Debug Komutları C:\>DEBUG - Çizgi işareti artık debug programının komut kabul etmeye hazır olduğunu belirtmektedir.

8086 Mikroişlemcisi Komut Seti

İŞLEMCİ DURUM KAYDEDİCİSİ (PROCESSOR STATUS REGISTER)

Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR

DENEY II RAPORU MİKROİŞLEMCİ UYGULAMALARI LABORATUVARI

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

1.BÖLÜM 1.SAYI SİSTEMLERİ

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

BM-311 Bilgisayar Mimarisi

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

K uark projesi. Temel Özellikler :

Hem lw hem de sw komutlarının ofseti 16-bitlik işaretli tamsayıdır.

Basit Bootstrap Uygulaması

Mikrobilgisayar Mimarisi ve Programlama

TBİL-405 Mikroişlemci Sistemleri Bölüm 2 1- % %01010 işleminin sonucu hangisidir? % %11000 %10001 %10101 %00011

Yrd. Doç. Dr. Caner ÖZCAN

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

MTM 305 MĠKROĠġLEMCĠLER

İşletim Sistemlerine Giriş

MTM 305 MĠKROĠġLEMCĠLER

Linux Assembly Programlamaya Giriş

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

ÖNEMLİ AÇIKLAMA: Bu derslerdeki sunumların kısa bir özetini göstermek için hazırlanmıştır. Burada türkçeleştirilmemiş olan kısımlar sorulmayacak

Şekil. 64 Kelimelik Yığıtın Blok Şeması

Komutların Yürütülmesi

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

Mikrobilgisayar Sistemleri ve Assembler

BÖLÜM in Bellek Organizasyonu

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Yığın MİKROİŞLEMCİ SİSTEMLERİ. Yığın. Örnek MİB için Yığın. Yığma İşlemi. Çekme İşlemi

6. Mikroişlemcili Geliştirme Sistemleri

BİL 361 BİLGİSAYAR MİMARİSİ VE ORGANİZASYONU Güz Dönemi ÖDEV 1

Mikroişlemciler. Öğr. Gör. Kürşat Mustafa KARAOĞLAN Güz

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BM-311 Bilgisayar Mimarisi

Saklayıcı (veya Yazmaç) (Register)

Komut Seti Mimarisi (ISA)

Bahar Dönemi BIL382 Mikroişlemcili Sistem Lab. Vize Sınavı,

Çok sayıda adım motoru tasarımı olmasına rağmen, bu motorlar iki değişik temel tür altında toplanabilir: değişken relüktanslı veya hibrid yapılı.

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

80x86 MICROPROCESSOR Instructions

Bilgisayar İşletim Sistemleri BLG 312

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Yrd. Doç. Dr. Caner ÖZCAN

AND Komutu. and hedef, kaynak

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

MİKROİŞLEMCİ MİMARİLERİ

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

HSancak Nesne Tabanlı Programlama I Ders Notları

MTM 305 MİKROİŞLEMCİLER

Öğr. Gör. Kürşat Mustafa KARAOĞLAN Güz

Ayhan Yüksel. (Son güncelleme: Berat Doğan) Tıbbi Enstrumantasyon Tasarım & Uygulamaları ( )

Transkript:

Adresleme Modları 1

Adresleme Modları İşlenenin nerede olacağını belirtmek için kullanılırlar. Kod çözme aşamasında adresleme yöntemi belirlenir ve işlenenin nerede bulunacağı hesaplanır. Mikroişlemcide bulunan adresleme yöntemlerinin sayısının çokluğu yüksek düzeyli dillerdeki karmaşık işlemlerin daha kolay bir şekilde yerine getirilmesini sağlar. 2

x86 Ailesinin Adresleme Modları 3

Adresleme Modları x86 mikroişlemcileri için etkili yazılım geliştirmede, her komutun kullanmış olduğu adresleme modunu bilmek gerekmektedir. Adresleme modları, veri ve programlara erişim yöntemlerini belirtir. x86 için adresleme modları açıklanırken aşağıdaki komutlar kullanılacaktır : MOV Saklayıcılar arasında veya saklayıcı ile hafıza arasında veri transferi yapar. CALL ve JMP Program akışımının farklı adreslere kaymasını sağlarlar. PUSH ve POP Yığına veri koymak ve almak için kullanılırlar. 4

x86 Veri Adreslme Modları Saklayıcı (Register) Adresleme İvedi (Immediate) Adresleme Doğrudan (Direct) Adresleme Saklayıcı Dolaylı (Register Indirect) Adresleme Taban-Artı-İndis (Base-Plus-Index) Adresleme Saklayıcı Göreceli (Register Relative) Adresleme Taban Göreceli-Artı -İndis (Base Ralative Plus Index) Adresleme 5

x86 Program Adreslme Modları Program Göreceli (Program Relative) Adresleme Doğrudan (Direct) Adresleme Dolaylı (Indirect) Adresleme Bir hafıza hücresinden diğer bir hafıza hücresine transfer yapan bir komut yoktur. 6

x86 Veri Adreslme Modları 7

x86 ailesinin komutlarındaki veri aktarım yönü aşağıda gösterildiği gibidir. MOV hefef, kaynak MOV AX, BX 8

I) Saklayıcı (Register) Adresleme Bu adresleme modu yardımıyla mikroişlemcinin iç saklayıcıları arasında işlemler gerçekleştirilebilir. Komutlarda 8-bit ve 16-bit saklayıcılar karışık olarak kullanılamaz. Bir segment saklayıcısından diğer bir segment saklayıcısına adres aktarımı için MOV komutu kullanılamaz. Ayrıca, bir CS saklayıcısı MOV komutu ile değiştirilemez. (Daha önce de belirtildiği gibi yürütülecek bir sonraki komutun adresi CS:IP çifti tarafından belirlenmekteydi. Eğer ki CS değiştirilirse yürütülecek bir sonraki komutun adresi belirsiz olacaktır.) 9

Assembly Dili MOV AH, BH MOV DH, AL MOV AX, DX MOV SP, BP MOV DS, AX MOV DI, SI MOV BX,DS MOV ES, DS MOV AL, BX MOV CS,AX Yapılan İşlem BH, AL ye kopyalanır. AL, DH ye kopyalanır. DX, AX e kopyalanır. BP, SP ye kopyalanır. AX, DS ye kopyalanır. SI, DI ya kopyalanır. DS, BX e kopyalanır. İzin verilmez (Segment ten segmente) İzin verilmez (Boyutlar farklı) İzin verilmez (CS hedef olamaz) 10

II) İvedi (Immediate) Adresleme Bu modda, veri hafızada olup bir op-code u izler. Veri 8 bit veya 16 bit olabilir. Assembly Dili MOV AL, 23 MOV BX,77H MOV CH, 100 MOV AL, A MOV BX, AB MOV CL, 10101001B Yapılan İşlem Ondalık 23 AL ye kopyalanır. 77h BX e kopyalanır. 100(64h) CH ye kopyalanır. A karakterinin ASCII kod karşılığı AL ye kopyalanır. (41h) A ve B karakterlerinin ASCII kod karşılığı BX e kopyalanır. (4241h) İkili 10101001 verisi CL ye kopyalanır. 11

III) Doğrudan (Direct) Adresleme Bu şekilde olan yöntemde, veri segmentinde (DS) yer alan bir hafıza hücresi ile, AL veya AX saklayıcısı arasında veri aktarımı yapan MOV komutu kullanılır. Örn: MOV AL, DATA DS de bulunan ve ofsetinin DATA sembolü ile belirtilen veri AL saklayıcısına aktarılır. DATA herhangi bir ofset değer olabilir. Eğer ki DATA nı ofset değeri 1234h ise bunu: MOV AL, [1234h] şeklinde de göstermek mümkündür. 12

Örn: MOV AL, [1234h] DS 1000h AX BX AH BH AL,10 BL DS:1234h 10 11234h 13

Örn: Assembly Dili MOV AL, NUMBER1 MOV AX, NUMBER2 MOVE STORE1, AL MOVE STORE2, AX MOV DH, MEM1 MOV BL,[2000h] MOV ES, SEGADR MOV BPMEM,BP Yapılan İşlem DS de bulunan NUMBER1 bellek hücresinin içeriği AL ye kopyalanır. DS de bulunan NUMBER2 bellek hücresinin içeriği AX e kopyalanır. AL nin içeriğini DS de yer alan STORE1 bellek hücresine kopyala AX nin içeriğini DS de yer alan STORE2 bellek hücresine kopyala DS de bulunan MEM1 bellek hücresinin içeriğini DH ye kopyala DS de bulunan 2000h bellek hücresinin içeriğini BL ye kopyala DS de bulunan SEGADR bellek hücresinin içeriğini ES ye kopyala BP yi DS de bulunan BPMEM bellek hücresin e kopyala. 14

IV) Saklayıcı Dolaylı (Indirect) Adresleme Bu adresleme modunda, BX, BP, DI ve SI saklayıcıları ile hafızanın herhangi bir yerinde bulunan bir veri adreslenir. BX, DI ve SI saklayıcıları kullanıldığında bu saklayıcılar DS de bulunan veriyi adreslemektedirler. Eğer kullanılan saklayıcı BP ise SS de bulunan bir hücre adreslenmiş olur. 15

BX= 2000h olsun ve bu saklayıcı ile adreslenen hafıza hücresinde 16 bitlik 2340h bilgisi olsun. DS 0100h MOV AX,[BX] ; işletildiğinde AX BX 23 40 20 00 DS: 2000h [ ] sembolü Assembly dilinde dolaylı adresleme için kullanılır. 40 03000h 23 03001h 16

Örn: Assembly Dili MOV AL, [BX] MOV [BP], CL MOV [DI], BH MOV [DI], [BX] Yapılan İşlem DS alanında bulunan ve BX ile adreslenen bir byte ı AL ye kopyala BP ile adreslenen SS alanındaki hafıza hücresine CL yi kopyala DI ile adreslenen DS alanındaki hafıza hücresine BH ı kopyala Geçersizdir. Çünkü hafızadan hafızaya kopyaya string komutları dışında izin verilmez. (bknz slayt 6) 17

Örn: MOV BX, OFFSET TABLO ; Tabloya işaret et. MOV CX, 50 ; Döngü sayacını yükle TEKRAR : IN AL, INPORT ; Giriş portunu oku MOV [BX], AL ; Veriyi hafızada sakla INC BX ; İşaretçiyi arttır LOOP TEKRAR ; CX=0 oluncaya kadar... döngüyü tekrarla... 18

V) Taban-Artı-İndis (Base-Plus-Index) Adresleme Taban saklayıcılar (BX veya BP) den biri ile bir indis saklayıcısı (DI veya SI) kullanılarak hafıza adreslenir. Taban saklayıcısı, bir hafıza dizisinin başlangıç adresini, indis saklayıcısı ise dizideki verinin göreceli pozisyonunu tutar. 19

Örn: Assembly Dili MOV DX, [BX+DI] MOV CL, [BP+SI] MOV [BX+SI],SP MOV [BP+SI],CS Yapılan İşlem DS alanında bulunan ve BX+DI toplamı ile adreslenen veri DX e kopyalanır. SS alanında bulunan ve BP+SI toplamı ile adreslenen veri CL ye kopyalanır. SP, DS alanında bulunan BX+SI toplamı ile adreslenen alana kopyalanır. CS, SS alanında bulunan ve BP+SI toplamı ile adreslenen yere kopyalanır. 20

Örn: Aşağıda verilen örnek program ARRAY adlı bir dizinin 10 numaralı elemanını 30 numaralı hafıza hücresine taşımaktadır. MOV BX, OFFSET ARRAY ; Tabloya işaret et. MOV DI, 10 ; Dizi elemanının yeri 10 MOV AL, [BX+DI] ; 10. elemanı oku MOV DI, 30 ; Dizi elemanın yeri 30 MOV [BX+DI], AL ; Elemanı 30. konuma yerleştir. 21

VI) Saklayıcı Göreceli (Register Relative) Adresleme Hafıza segmentinde bulunan veri, bir taban veya indis saklayıcısına (BX, BP, DI veya SI) bir değişim değerinin toplanmasıyla adreslenir. Örn: Assembly Dili MOV AX, [DI+100] MOV ARRAY[SI], AL MOV DI, LIST[BX] Yapılan İşlem DS alanında bulunan ve DI+100 toplamı ile adreslenen veri AX e kopyalanır. AL, DS alanında bulunan ve ARRAY+SI ile adreslenen yere kopyalanır. DS alanında bulunan ve LIST ile BX toplamı ile adreslenen veri DI ye kopyalanır. 22

VII) Taban Göreceli-Artı İndis (Base Relative-Plus Index) Adresleme Bu mod, taban artı indis adreslemeye benzemektedir. Farklı olarak, bir taban saklayıcısına bir indis saklayıcısının içeriğinin eklemenin yanısıra bir değişim adresi (displacement) ekler. Örn: Assembly Dili MOV CH, [BX+DI+10] MOV AX, FILE[BX+DI] MOV LIST[BP+SI+4], AH Yapılan İşlem DS de bulunan ve BX+DI+10 ile ifade edilen yerdeki veriyi CH a kopyalar. DS de bulunan ve FILE, BX, DI toplamı ile adreslenen veriyi AX e kopyalar. AH nin içeriği, SS te bulunan ve LIST, BP, DI ve 4 toplamı ile adreslenen yere kopyalanır. 23

Örn: Aşağıda verilen örnek program bir dosyadaki (FILE) kayıt A nın 10 numaralı elemanını, yine aynı dosyada yer alan kayıt C nin 20 numaralı elemanına kopyalamaktadır. MOV BX, OFFSET RECA ; Kayıt A adresi MOV DI, 10 ; Kayıt elemanının yeri MOV AL, FILE [BX+DI] ; Kayıt A nın 10 numaralı elemanını oku MOV BX, OFFSET RECC ; Kayıt C adresi MOV DI, 20 ; Kayıt elemanının yeri MOV FILE[BX+DI], AL ; Kayıdı C nin 20 numaralı konumuna sakla 24

REC C DI=20 BX REC B REC A DI=10 BX FILE Taban 25

x86 Program Adreslme Modları 26

Program Adreslme Modları JMP ve CALL komutlarıyla kullanılmaktadır. 3 değişik şekle sahiptir: Doğrudan Göreceli Dolaylı 27

I) Doğrudan Program Hafıza Adresleme Doğrudan program hafıza adreslemedeki komutlarda, 8085A mikroişlemcisinde olduğu gibi dallanma adresi op-code ile beraber hafızada saklanır. 8086/8088 ve sonraki kuşak x86 ailesinde bir hafıza adresi CS:IP çifti ile belirlendiğinden, eğer segmentler arası bir dallanma söz konusu ise 2 byte bir sonraki segmet numarası için sonraki 2 byte ise bir sonraki offset için kullanılır. Örn: Op-code Offset-Low Offset-High Segmet- Low Segment- High EA 00 00 00 20 JMP [2000] komutundaki işlem kodu ile segment ve offset adreslerinin hafızada yerleşimi 28

II) Göreceli Program Hafıza Adresleme Bu adresleme modu komut işaretçisine göre görecelidir. Örn: 2000 2001 EB 02 JMP[2] İşlemci JMP komutunu yürütürken IP 2002h adresine işaret etmektedir. 2002 2003 2004 - - IP göreceli adres 2 ile toplandıktan sonra 2004h olur ve program akışı bu adresten itibaren devam eder. 29

III) Dolaylı Program Hafıza Adresleme Bu modda, 16-bit saklayıcılardan herhangi biri veya bir göreceli saklayıcı ile veya bir yer değişim değeri ile beraber kullanılabilir. Örn: Assembly Dili JMP AX JMP [BX] JMP TABLE[BX] Yapılan İşlem O anki kod segment içinde, AX ile adreslenen hafıza bölgesine dallan. O anki kod segment içinde, BX ile işaretli DS de yer alan bir ofset ile adreslenen yere dallan. O anki kod segment içinde, TABLE+BX ile işaretli DS de yer alan bir ofset ile adreslenen yere dallan. 30

Örn: TABLE adresli yerden başlayan bir dallanma tablosu aşağıdaki gibi olsun. TABLE DW SUB0 DW SUB1 DW SUB2 DW SUB3 Her adres 2-byte offsettir. Bu şekilde tanımlı bir tabloya erişmek için, genelde program içinde bir offset hesaplanır, sabit tablo taban adresi ile toplanarak bir alt program adresi seçilir ve o adrese dallanılır. MOV BX, 4 JMP TABLE [BX] SUB2 ye dallanmak için gerekli olan yapı 31

Yığın Hafıza Adreslemesi 32

Yığın Hafıza Verileri geçici olarak tutar, alt programlardan dönüş adreslerini saklar. Yığın hafıza 8086/8088 ve diğer pekçok mikroişlemcide LIFO (Last in First Out) prensibine göre çalışır. Bir PUSH komutu ile veri yığın üstüne yerleştirilir. POP komutuyla veri, yığından çekilir. CALL komutunda, alt programın işletilmesinden sonra dönülecek olan adres yığında saklanır. RET komutu yığından bir adresin okunmasına neden olur. Yığın alanındaki bir veri SS:SP saklayıcı çifti ile gösterilir. 33

Örn: Assembly Dili Yapılan İşlem PUSH AX PUSH 4321h PUSH DS PUSHF PUSH [BX] POP BX AX içeriğini yığına sakla Yığına 4321h sayısını sakla DS nin bir kopyasını yığına sakla Bayrak saklayıcısını yığına sakla DS de bulunan ve BX ile adreslenen yerdeki veri, yığına aktarılır Yığından BX saklayıcısına oku POP CS Geçersizdir. (bknz slayt 7) POPF Yığından bayrak saklayıcısına oku 34