8086 mikroişlemci ders notu

Upload: sukrutoy

Post on 14-Apr-2018

1.153 views

Category:

Documents


86 download

TRANSCRIPT

  • 7/30/2019 8086 Mikroilemci Ders Notu

    1/77

    1

    1

    D1 CPU (CENTRAL PROCESSING UNIT): Merkezi lem Birimi; programla srlen saatmodlu ardl bir devre olup grevleri:

    1) Program emirlerini almak, zmlemek ve uygulamak2) BUS larla donatlm sistemi denetlemektir. En basit bir bilgisayar bir CPU ve bir

    bellekten oluur. BUS, CPU ve Bellek arasndaki etkileimleri salar.

    BUS: CPU ve dier birimler arasndaki adres veya data etkileimini salayan hatlardr. Bir tekBUS bir cihaz tarafndan srlp bir ok cihaz tarafndan kullanlabilir. Data Bus datalarntransferinin yapld ift ynl yoldur.

    KONTROL BUS: CPU nun yapaca ilem trnn belirtildii Bus. Yazma, okuma,interrupt,...vs.

    GR/IKI ARAYZ ELEMANLARI: Sistem ile d dnya arasndaki etkileimin arttrlmassisteme baz eklemelerin yaplmas ile olabilir. Harici cihazlar (yazc, izici, disk, vs...) bu tipeklemelerdir. Bu tip cihazlarn sisteme dorudan balanmasnn dourduu sakncalar

    ortadan kaldrmak iin arayz veya yzletirme elemanlar kullanlr. Aksi takdir harici cihazlarhatlarn kullanmnda karklklara neden olabilirler. PIA (paralel interface acces) paralelarayz eleman, SIO (serial input output) seri giri k eleman, giri/k arayzelemanlarna rnek olarak verilebilir.

    DMA (DIRECT MEMORY ACCES): Direk bellek eriimi eleman. Hzl data transferi gerektiindekullanlr. CPU ile yapt bir dizi haberleme sonucunda CPU yu devre d brakp bus larteslim alr ve harici cihaza daha hzl eriilmesini salar.

    APU (ARITMETIC PROCESSING UNIT): Aritmetik ilemci birimi. CPU lar sadece alnan

    emirlerin icras ile ilgilenirler. Aritmetik ilemciler ise emirlerin icras srasnda gerekli olanaritmetik ilemleri yapabilen co-processorlerdir. CPUya yardmc olduklarndan hzarttrrlar.

    CO-PROCESSOR: Yardmc ilemci. CPU ile birlikte alr. Kendi bellei vardr.

    ALU (ARITMETIC LOGIC UNIT): CPU iinde bulunur ve emirlerle ilgili lojik ilemleri icraederler.

    Kontrol Birimi: Kontrol emir kaydedicinin ierii ile srlr ve emir kaydedicisinin kodu bu

    birim tarafndan zlr.

    Bellekten alnan emir kodlar CPU nun iinde bulunan Kontrol Birimi nitesinde daha kkve basit mikro emir kodlarna zlr ve ne i iin kullanlaca anlalr. Emir kodlar buekilde basit mikro emir kodlar yardmyla icra edilir.

    Program bellee ilk eriimde her zaman ilk kodun emir olduu varsaylr ayrca her bir emrinicras tamamlandktan sonra, program bellekteki bir sonraki kod yine CPU tarafndan emirkodu olarak alglanr.

    Yani CPU her emrin icrasndan sonra tekrar emir bekler.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    2/77

    2

    2

    1) MKROBLGSAYAR DONANIMIMikrobilgisayarlar kullanm amacna gre uygun bir donanm ierirler. Tasarmdaki nemlisorunlar, kullanlacak olan bellek elemanlarnn, Giri/k kaplarnn vs. amaca uygunbiimde adreslenebilmesidir. Akas RAM/ROM ve deiik amal Giri/k kaplarnabellek haritasnda uygun adreslerin kar drlmesi salanmaldr.

    CPU

    (MPU)

    ekil 1-1

    Verilen bir adresteki elemann (RAM,ROM,PIO,SIO) seimi uygun donanmla yaplmaktadr. Adresbilgisi bir kod zcnn giriine uygulanmakta ve kod zcnn k adres blgesinde kullanlacakolan RAM veya ROM u semektedir. Arayz elemannn seimi ise benzer biimde olmaktadr.Genelde arayz elemanndaki tm registerlerin (yazma veya kaydedici) seimi iin adres bus n enanlamsz hatlarndan yararlanlr. Adres bus n en anlaml hatlar ise arayz elemann aktif yapacak iareti retmek iin dier uygun kontrol iaretleri ile birlikte, bir kod zcnn giriine uygulanr.CPU tarafndan retilen okuma/yazma (R/W) iareti R/W bacana sahip tm cihazlara ortak bir hatzerinden balanr. Data Bus ve Adres Bus, bu bus lar kullanan tm elemanlar ve CPU tarafndanortak olarak kullanlmaktadr. CPU nun data bus na balanan tm elemanlarn herhangi bir data

    arpmasna yol amamas iin Yksek-Empedans ( konumlu/three state ) zelliine sahip olmalargerekmektedir.

    ekil 1-1 de basit bir mikrobilgisayar sisteminin yaps verilmitir. Mevcut bir mikrobilgisayarsisteminde bellek kapasitesi veya giri/k kaps yeterli deilse ek bir donanmla bu sorunzlebilir. Yani bir mikrobilgisayara bellek ilavesi yapmak veya seri veya paralel giri/k kaps ilaveetmek mmkndr. ekil 2 deki rnekte bir RAM ve ROM bellein, bir mikrobilgisayara nasleklendii gsterilmitir.

    ekil 1-2 de grld gibi bu kapasite arttrma ileminde RAM ve ROM bellein databusCPUnun databusna balanr. CPU nun adres bus ise gerekirse baz kontrol hatlar ile

    birlikte bir kod zcye uygulanr ve kod zcnn kndan retilen iaretle istenen RAMveya ROM seilir. Seilen bellek elemannn ulalmak istenen hcresi de anlamsz adreshatlarnn bellek elemannn ilgili adres bacaklarna uygulanmas ile salanr.

    ADRES BUS

    Clock

    10 BT 0-1023

    ROM

    INPUT/

    Output

    DATA BUS

    CPU

  • 7/30/2019 8086 Mikroilemci Ders Notu

    3/77

    3

    3

    ekil 1-3 de ise 8 bitlik (databus) bir CPU nun bellek ve PIA cihazlaryla nasl birmikrobilgisayar oluturduu grlmektedir. Adresbus n, databusn, kontrolbus n CPU iledier elemanlar arasnda etkileimi tekil etmek iin nasl kullanldn dikkatlice inceleyin.

    ekil 1-2

    6 BT

    CS

    CE

    8 bit kap

    WR RD

    Kontrol Hatlar

    DO-D7 R/W

    MKROLEMC

    A0-A15

    KOD

    ZC

    A0-A15

    R/W

    D0-D7

    __

    CS

    RAM

    A0-A15

    D0-D7

    ROM

    __

    CS A0-A17

    DATA BUS

    ADRES BUS

    Kontrol

    Bus

    CPU

    APU

    AdresKod

    zc PROGRAMBELLEK

    DATA

    BELLEK

    Adres

    Kod

    zc

    DMA

    PIA

    HARCCHAZ

    16 BT ADRES BUS

    8 BT DATA BUS

    10 BT 0-1023

  • 7/30/2019 8086 Mikroilemci Ders Notu

    4/77

    4

    4

    ekil 1-3 KONTROL BUS

    Son

    (AFFFH)1111111111110101

    Son hexalFFFA

    Balang

    (A000H)0000000000000101

    BELLEK ERM ADRESLER, 12BT ADRES ULARI LE 4Kb BELLEKALANI

    ADRES KOD ZN

    (AXXXH)XXXXXXXXXXXX0101

    A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15

    ADRES UZAYINDA BELLEK HARTAMA ve KOD ZCLERLEBELLEK ORGANZASYONU

    16 bit adres busa sahip cpu ya 4Kb bellek segmenti, A000H adresinden itibarenEriilecek ekilde eklenmek isteniyor. Gereken bellek adres organizasyonunu vererek(bellek eriim balang ve eriim son adresleri) kod zcde kullanlacak adresUlarn belirleyip kod zcy tasarlaynz.

    Hexal 16l notasyonda veri ve adres yazm iin AFFFH, AFFF$ veya 0XAFFFKullanlabilir. Bu derste H harfi ile AFFFH yazm biimi kullanlacaktr.

    Adres uzaynda yukardaki tabloda harilanan 4kb bellek segmenti (A000H-AFFFH):12 bit bellek eriimi iin ve 4 bitte adres kod zc iin kull anlmas gerektiiaka grlmektedir. Genelde deimeyen en anlaml adres bitleri bellei seecekareti reten kod zc tasarmnda kullanlrlar.

    CS alak aktif

    A15

    A14

    A13

    A12

    AXXXH

    16 bit adres busa sahip cpu ya 4Kb bellek segmenti A000H adresinden itibarenEriilecek ekilde eklenmesi iin gereken kod zc

    Adres uzayn 4kb bellek segmenti bu kod zc ile seilebilir. Bellek eriim adres

    aral A000H-AFFFH olacaktr.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    5/77

    5

    5

    Son

    (27FFH)

    1111111111100100

    Balang

    (2000H)0000000000000100

    A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15

    2000H adresinden itibaren eriilemek istenen 2Kb EEPROM (2716) bellek eleman iingereken bellek adres organizasyonunu vererek (bellek eriim balang veeriim son adresleri) kod zcde kullanlacak adres ularn belirleyip kod zcytasarlaynz.

    BELLEK ERM ADRESLER, 11BT ADRES ULARI LE 2KbBELLEK ALANI

    ADRES KOD Z N

    Adres uzaynda yukardaki tabloda haritalanan 2kb bellek segmenti (2000H-27FFH):11 bit bellek eriimi iin ve kalan 5 bit adres kod zc iin kullanlmas gerektiiaka grlmektedir.

    A15+A14+A13+A12+A11 = 2000H..27FFH olacaktr. Bellek elemann seiminiSalayan bellek ucuna gelecek iareti (burada yine alak aktif olsun) reten kod zcDeiik yntemlerle tasarlanabilir, gereken iareti en anlaml adres bitlerindenretecek kod zc basit kombinasyonel lojik devrelerle yaplabildii gibi NAND, NORTasarmyla veya zel kod zc entegreleriyle (rnek 74LS138 3 to 8 line decoder)de yaplabilir

    CS alak aktif74LS30 8 giriliNAND

    A15

    A14

    A13

    A12

    2000H..27FFH

    Bylelikle adres hattna uygulanan 2000H27FFH arasndaki tm adresleri iinkod zc bellek seme ucu iin gereken iareti retecek, geriye kalan 11bit adresular ile de bellek hcreleri seilebilecek gereken okuma yazma yaplabilecektir.

    A15 * A14 * A13 * A12 * A11 = 2000H..27FFH

    NAND kaplaryla gerekleme

    A11

    74LS04hex inverter

    Intel 8086 ilemcinin adres bus genilii 20 bittir. 00000H den balayan 128KbRAM bellek iin gereken bellek adres organizasyonunu vererek (bellek eriim balangve eriim son adresleri) kod zcde kullanlacak adres ularn belirleyip kodzcy tasarlaynz.

    Adres uzaynda yukardaki tabloda haritalanan 128kb bellek segmenti (00000H-1FFFFH):16 bit bellek eriimi iin ve kalan 4 bit adres kod zc iin kullanlmas gerektiiaka grlmektedir.

    11111111111111111000

    BELLEK ERM ADRESLER, 11BT ADRES ULARI LE 2Kb BELLEK ALANIADRES KOD Z N

    00000000000000000000

    A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19

  • 7/30/2019 8086 Mikroilemci Ders Notu

    6/77

    6

    6

    CS alak aktif

    A19

    A18

    A17

    A16

    Bylelikle adres hattna uygulanan 00000H1FFFFH arasndaki tm adresleri iinkod zc bellek seme ucu iin gereken iareti retecek, geriye kalan 16bit adresular ile de bellek hcreleri seilebilecek gereken okuma yazma yaplabilecektir.

    2) BAST BR CPU (MKRO LEMC) MMARSBasit bir CPU nun i mimarisi Kontrol Birimi,Genel Amal Kaydediciler, zel AmalKaydediciler, Aritmetik ve Lojik Birim ve dier Teknoloji Baml Birimlerden oluur.

    1) Programcya ak olan ksm (Kaydediciler)2) Programcya ak olamayan ksm (ALU,Kontrol Birimi)

    Burada ilemcinin 8 bit DataBusa ve 16 bit AdresBusa sahip olduu dnlecek.

    Aada byle bir CPU iin kullanlabilecek, programcya ak olan en genel kaydedicilergrlmektedir.

    7 6 5 4 3 2 1 0Akmlatr

    Data Counter

    Program Counter

    Instruction Register

    Index Register

    Stack Pointer

    Genel Amal Reg.

    Akmlatr (A):lem sonularnn tutulduu, bellee gnderilecek veya bellekten okunacakbilgilerin tutulduu birim. Sadece kaydedicidir, D Flip-Flop lardan olumu bir dizi gibi

    dnlebilir. Her CPU da mutlaka en az bir tane bulunmaldr. Genilii databus geniliikadardr.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    7/77

    7

    7

    Data counter Register (DC) :Data bellei adreslemeye yarayan bir kaydedicidir. Her CPU dabulunmas gerekmez. Genilii adres-bus genilii kadardr.

    Program Counter (PC) : Program bellei adreslemeye yarayan ve her program bellekeriiminden sonra ierii otomatik olarak artan bir saycdr. Baka bir deyile program

    oluturan emir kodlarn srasyla ileme hazrlar. JMP (atlama, dallanma) emirleriyle yklenir.Dk seviyeli dillerde buna RUN karlk gelir. Reset yapldnda PC nin ierii sfrlanr ki buok nemlidir. Adres-bus geniliindedir.

    Instruction Register (I;Emir Kaydedici) : Program bellekten, program counterin adreslediiyerdeki emrin, kodunun zlp icras ilemleri srasnda kaydedildii register.

    Emir kodlar CPU nun iinde bulunan Kontrol nitesinde mikro program kodlarna zlr vene i iin kullanlaca anlalr. Program bellee ilk eriimde her zaman ilk kodun emir olduuvarsaylr ayrca her bir emrin icras tamamlandktan sonra, program bellekteki bir sonraki

    kod yine CPU tarafndan emir kodu olarak alglanr. Yani CPU her emrin icrasndan sonratekrar emir bekler.

    Index Register:Data bellei adreslemek iin kullanlr, adres-bus geniliindedir.

    Stack Pointer (SP): Stack (yn) bellei adreslemeye yarayan, adres-bus geniliinde birkaydedicidir.

    Bellein (zellikle program bellein) kullanc tarafndan adreslenmesi ve kaydedicilerindeiik amalar iin kullanlmas srasnda, ayn zamanda CPU tarafndan da kullanlan

    kaydedicilerin ieriinin deimesinden dolay baz sakncalar ortaya kar, program bir nevivirslenmi olur. Byle durumlarda kaydedicilerin ierikleri gerektiinde tekrar buradanalnmak iin stack pointerde tutularak bu sakncalardan kanlabilir.

    Altprograml almalarda veya interruptl almalarda; alt programdan veya interrupt servisprogramlarndan nce ve bunlardan dnte kaydediciler stack bellee nce atlr vednte buradan geri arlarak ana programn icrasnn devamll salanm olur. Bu tipalmalarda ana program kesilir ve alt veya interrupt servis program CPU tarafndankoulmaya balar, bu ilem bitince CPU nun ana programn neresinde ve hangi ilemdekaldn bilmesi veya CPU ya bu bilgilerin (A, DC,PC,SP....) bildirilmesi kesin gerekmektedir.

    Genel Amal Registerler: Akmlatre benzerler. Ara sonularn sk kullanlan bilgilerintutulduu kaydedicilerdir.

    D2 Aadaki ekilde basit bit CPU nun programcya ak ve kapal olan birimleriyleberaber genel fonksiyonel gsterimi verilmitir.

    Durum bayraklar ALU da yaplan ilemler sonucu oluan durumlara ilikin (Elde, Tama, Sfr,aretvs) zelliklerin tutulduu bir kaydedicidir.

    Tmleyici en bata karma ilemi iin olmak zere gerekli bir aritmetik ilem alt birimidir.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    8/77

    8

    8

    CPU nun i mimarisindeki Data ve Adres BUS genilikleri CPU dan dar olan Data ve AdresBUS genilikleriyle eit veya daha uzun olabilir. rnein 16 bitlik bir CPU ya ait i Data BUS32 bit geniliinde olabilir.

    *Bir BUS bir cihaz tarafndan srlebilir ve bir BUS dan tm cihazlar bilgi alabilir.

    * 16 bitlik bir Adres BUS (0000H..FFFFH) 216 =65536 adet kombinasyon demektir ki budeer 64K olarak kabul edilir.

    26 =64 adet seim kombinasyonu

    ve 10 bitlik adres yolu ile 1024 adet bellek

    alan sonu olarak toplam 64x1024=64Klk bellek alan bu ekilde adreslenebilir vekullanlabilir.

    0000H

    1111111111 3FFH

    10 bit

    0000000000 000H

    ALU

    DATA BUS

    Durum Bayraklar (StatusFlags)

    Ka drc Shifter

    Tmle ici Com lementer

    Toplama ve Boole Lojii(Addition and Bole Logic)

    Buffer Ka dedici

    DATA BUS

    KONTROL BRM

    ADC

    PC

    I

    AdresKod

    zc

    6 BT

    C0C1

    C63

    8 bit

  • 7/30/2019 8086 Mikroilemci Ders Notu

    9/77

    9

    9

    Stack (Yn) Bellek: Alt programl veyainterrupt (kesme) ile alld zaman CPUnun ana programa dnn salamak veilemi kald durumdan tekrar devamettirebilmek iin baz veri veya kaytlarn

    tutulduu bellek blgesidir. Alt program veyainterrupt dan nce gerekli bilgiler(AX,BX,CS,DS.gibi) stack bellee atlr, altprogram veya interruptl alma bitince dahasonrada tekrar bu bilgiler yndan alnarakana programn almasna kalnan yerdendevam etmesi salanr. POP ve PUSH

    ** 0A30H ve 0A31H adreslerindeki 1 bytelk verileri toplayarak sonucu 0A31H adresineyazan bir programn icrasiin;

    1) Toplanacak ilk veri iin data bellek adresini belirle,2) Bu adresteki veri CPU ya transfer et (A akmlatrne yaz)3) Toplanacak ikinci veri iin data bellek adresini belirle,4) Bu adresteki veri ile 2. admda CPU ya alnan veriyi topla,5) Sonucun saklanaca bellek adresini belirle,6) Sonucu bu adrese yaz.

    Bu ilem admlarn srasyla yapacak olan komutlarn program bellekte emir kodlar olarakmevcut olmas yani CPU nun programlanmas gerekmektedir. Her admn icras bir emir

    kodu gerektirir ve her emirin kodu mevcuttur.

    Emir kodlar program belek blgesinde 1 veya daha fazla byte uzunluunda yerkaplayabilirler.

    Program bellek, data bellek, ..vs blgeleri aslnda ayn bellek yongas zerindedirler ve bazdurumlarda i ie yer alabilecekleri bir yerleime de sahip olabilirler. Programlamaesnasnda programc tarafndan bu blgeler tahsis edilebilmektedir.

    **Motorola 6802 cpu iin bu admlar srasyla gerekleyecek program kodlar

    oluturulacak olursa:

    9C emir kodu kendinden sonra gelen 2 byte veriyi alarak data bellein adresi (DC=0A30)olarak yorumlar ki bu 1. adm oluturur. 40 emir kodu 1.admda belirlenen data bellekadresindeki veriyi CPU ya (Akmlatre) transfer

    0001H ------------ CPU Tarafndan

    Program

    Bellek

    DataBellek

    Stack (Yn)Bellek

    FFFFH

  • 7/30/2019 8086 Mikroilemci Ders Notu

    10/77

    10

    10

    Eder ki bu da 2. adm oluturur. 3. adm ile 1. admbirbirinin aynsdr sadece adres deeri deitirilir. 80emir kodu toplama ilemini yapar yani 4. adm.nceki sonraki emir kodlar tarafndangerekletirildiinden 5. adm gereksizdir. 60 emir

    kodu A da tutulan sonucu data bellein belirlenenadresine yazar, bu esnada kontrol BUS iindeki W ucuCPU tarafndan aktif edilir.

    CPU program bellekten ald emir kodlar ilebelirlenen tm bu ilemleri yaparken; kontrolbiriminde zlen emir kodundan oluan mikroemirlere bal olarak A, DC, IP, PC kaytlarnnieriini de gerekli ve srekli bir ekilde deitirir veyagnceller.

    **CPU Kaytlarnn bu rnekte kullanm:

    Programn 0400H adresinden itibaren program bellekte mevcut olduu varsaylrsa ilk ncePC=0400H adresi ile yklenerek programn ilk koduna eriilmi olur.

    Yukarprogram icra edilirken kaytlarn ieriinin srasal bir biimde emir kodlarna uygunbiimde deitii grlmektedir.

    Program

    Bellek Adres/PC Emirkodu

    0400H 9C 9C EMR KODU ALINIR30H ALINIR (ADRESN DK BYTI)0401H 30

    9C Emir Kodu

    30IMMEDIATE DATA

    0A

    40 Data bellekten AyaTransfer

    9CToplanacak 2. verinin

    adresini belirle31

    0A

    80 2. admda CPUya alnanveri ile 0A31 adresindeki

    veriyi topla sonucu CPUda tut, sonu A da kalr

    60 Toplam0A31 adresine yaz

    7 6 5 4 3 2 1 0

    A -------7A------

    DC ------------0A30 -----0A31

    PC 0400H---04001H---04002H-- --0403H

    I 9C----40----------9C

  • 7/30/2019 8086 Mikroilemci Ders Notu

    11/77

    11

    11

    0402H 0A 0A ALINIR (ADRESN YKSEK BYTI) DC=0A30H YAP

    0403H 40 0A30H DATA BELLEK ADRESNDEN CPU YA (AKMLATRE)VER TRANSFER, PC=0404H OLUR

    0404H 9C 9C EMR KODU ALINIR31H ALINIR (ADRESN DK BYTI)

    0A ALINIR (ADRESN YKSEK BYTI) DC=0A31H0405H 31

    0406H 0A

    0407H 80 AKMLATRDEK 07AH LE 0A31H ADRESNDEK 02FHVERLERN TOPLA (BU ARTMETK LEM ALU TARAFINDANYAPILIR) VE SONUCU A YA YAZ. A=0A9H

    0408H 60 A NIN ERN DATA BELLEE YAZ. A NIN ERDEMEZ. A DAK SONUC DC NIN ERNDE EN SON0A31H OLDUUNDAN BU ADRESE YAZILIR.

    0409H lem bittiinden bundan sonra programn ya sonlandrlmasya da dallandrlmas gerekmektedir nk son emirden sonra0409H dan itibaren emir kodu yazlmamtr.

    JMP veya RESET ile bu ilem gerekletirilebilir.

    040AH

    ------------------

    DataBellek 0A30H 07AH

    0A31H 02FH

    JMP ile PC istenilen program bellek adresiyle yklenerek alma ak deitirilebilir. rneinJMP 0400H ile PC=0400H olur yani tekrar baa dnlerek program bir kez daha koulmuolur ve dikkat edilirse eer sistemin enerjisi kesilmezse ayn program blounun sonsuzakadar yinelemeli almas sz konusudur. Bu durumda 0400H ile 0409H arasnda bir sonsuzdng oluturulmu olur ki ayn emir kodlar ayn verileri ayn bellek blgelerine saniyedebinlerce kez yazarlar veya okurlar yani ayn ilemler tekrar edilmi olur. Bu ok fazla istenenve shhatli olan bir durum deildir. Bu yntem yerine:

    1)

    Sonlandrma: 0409H---JMP, 040AH---0409H ile programn sadece bir kere almassalanm olur. st ste veri yazma okuma ve ayn kodlarn tekrar tekrar almasbylece engellenmi olur.

    0409H JMP

    040AH 0409H

    2) Reset: sistem reset yaplarak 0000H adresine atlama yaplm olut. Bu durumdayukardaki programn tekrar balamas iin PC=0400H yklemesi tekrar yaplmaldr.

    0000H JMP0001H 0400H

  • 7/30/2019 8086 Mikroilemci Ders Notu

    12/77

    12

    12

    D3

    3) EMR CRASI

    CPU saat kontroll bir lojik devre olduundan almas iin mutlaka bir saate ihtiya duyar.Bundan dolay her CPU nun bir veya birden fazla saat girii olmaldr. Salkl bir saat iareti

    iin () gerekli olan saat devresi CPU nun iinde olabilecei gibi dndan da salanabilir.

    Tm ilemler saatle ezamanl olarak yaplmas gerektiinden CPU emirlerinin icrasnda dasaatle yaplan bir zamanlama sz konusudur.

    Bir CPU emri birden ok makine periyodundan oluur. Her makine periyodu ise birden oksaat periyodundan olumaktadr.

    Makine Periyodu: Btnlk arz eden en kk ilem dilimine makine periyodu ad verilir.rneklerde verilen 9C emrinin alnmas sonra program bellekten 30 ve 0A saylarnn alnarak

    adres oluturulmas ve data bellein bu adresinden verinin alnmas ilemlerinin her biri bunarnektir.

    Bir CPU da bulunmas gereken ular:

    Genellikle deimekle birlikte VCC=+5V ve GND=0V dur.D0D7 8 bitlik data bus, A0 A1 ..A15 16 bitlik adresbusdr. Read, Write kontrol hatlar olup bunlarndnda daha baka kontrol hatlar da CPU lardaolmaldr.

    Emir ve Data Alma (Okuma):

    Program bellekten emir kodunun alnmas iin PC nin ierii ile adres bus srlerek programbellek adreslenmi olur. Bu ilem yaplrken nce adres, adres busa gnderilerek bu busdanfaydalanacak olan cihazlar iin gereken zaman salanm olmaldr.

    VCC

    CPU

    D0

    GND D1

    ----

    A0

    A1 D7

    -------

    READ

    WRTE

    ---

    A15

    A0-A15

    READ (okuma)

    PC erii

    Adres Kararl

    Gei

    Emir

    koduD0-D7

    Emir Kodu Alma Periyodu

  • 7/30/2019 8086 Mikroilemci Ders Notu

    13/77

    13

    13

    Read aktif olursa (alak seviye) adres busa yerleen adresle adreslenen program bellektekibilgi okunur ve data busa yerletirilir. Bundan dolay CPU da Read ucunun bulunmasgerekmektedir.

    Read ucu alak aktif seviyede iken rnekleme yaplr. rnek says kontrol biriminin iindekimikro programlarn (mikro emirlerin) says kadardr.

    Yukarda ise basit bir emir kodu alma ve data alma (okuma) ilemine olan ait zamanlamaperiyodlar grlmektedir. lemler sonucunda emir kodu emir kaydedicisine, dataakmlatre yerletirilir.

    Data alma periyodu esnasnda; CPU nce PC nin ieriini adres busa yerletirir. Adresinnceden gnderilmesinde yarar vardr. Adres adres busa yerletikten sonraki belli birnoktada read aktif yaplr. Aktiflik sresi de yeterli olmaldr. Srenin sonuna doru readseviyesi rneklenir ve ilgili mikro programlar iin gerekli olan mikro emirler srasyla icra olur

    ve bilgi akmlatre konur.

    Emir kodu alma ile data alma arasda bir fark yoktur. Fazladan bir kontrol hattna da gerekduyulmaz

    Genellikle bir emir iin mutlaka en az iki periyoda gerek duyulur. lki emir alma ilemi iin,ikincisi de data ve CPU dndaki ilemler iindir. Aslnda bir makine periyodu birok saatperiyodundan olumakla birlikte verilen rneklerde kolaylk olsun diye bir saat periyodundagsterilmitir.

    Emir Alma ve Data Yazma:

    A0-A15

    READ (okuma)

    PC eriiEmir Kodu

    Gei

    Emir

    koduD0-D7

    Emir Kodu

    Alma Periyodu

    DC erii

    Data Adresi

    Data

    Data Alma

    Periyodu

  • 7/30/2019 8086 Mikroilemci Ders Notu

    14/77

    14

    14

    Bu durumda bellee yazma ilemi iin CPU nun WRITE hattna ihtiyac vardr.

    Emir almada read iareti yazma iini yapacak emirle ilgili olacak olan datadan nce aktif olur.

    Yazmada is yazlacak datann adresi alndktan sonra yani DC bu adresle srldkten sonrawrite aktif edilir yani DC nin adresledii data bellee veri yazlr. Bu ilem sras bilginin kararlolmas iin gereklidir. Write seviyesi sresince data yazlr.

    Yukarda zamanlamalar verilen ve basit olarak bahsedilen ilemler iin gnmzmikroilemcilerinde daha fazla sayda kontrol ucu ve yardmc iaretler devreye girerek emirokuma, data okuma ve data yazma ilemleri gerekletirilir.

    A0-A15

    READ (okuma)

    PC eriiYazma Emir

    Kodu Adresi

    Gei

    Emir

    koduD0-D7

    Emir Kodu

    Alma Periyodu

    DC eriiYazlacakData Adresi

    Data

    Data Yazma

    Periyodu

    WRITE (Yazma)

  • 7/30/2019 8086 Mikroilemci Ders Notu

    15/77

    15

    15

    D4 4) INTEL 8086 MIKROLEMCS

    Daha nceki blmlerde basit bit 8-bit mikroilemcinin temel baz zelliklerine deinilmiti.Bir mikroilemci aslnda tm ilemlerden sorumlu merkezi ilem birimidir (CPU). Birmikroilemcinin en temel grevleri; bellekten komut okuma, komutun kodunun zlmesi ve

    komutun ilevini yerine getirilmesidir. Bunlarn yan sra bulunduu sistemdeki cihazlarnkontrol edilmesi, sisteme aritmetik ve lojik ilem yapma olana salamak, giri/kbirimleri arasnda veri transferinin srekli salanmas ve evre birimlerinin hizmet isteksinyallerine cevap vermek de balca grevleri arasndadr.

    Bundan sonraki konularda gnmz modern ksaca x86 mikroilemcilerinin (.,Pentium,80486, 80386, 80286, 80186/188) 16-bit ekirdeini oluturan 8086 mikroilemcisi zerindedurulacaktr.

    Mimari: Aada x86 ailesinin 16-bit ekirdek mimarisinin basit bir gsterimi verilmitir.

    Buna gre mikroilemci iki temel ayr alma birimine sahiptir; Yrtme birimi (ExecutionUnit-EU) ve Yol arabirimi (Bus Interface Unit-BIU). EU komutlar yorumlamakta veyrtmektedir. BIU ise yol ilmlerini (ilem kodu okuma, operand okuma ve gri/kcihazlaryla haberleme gibi) yerine getirir.

    Yrtme Birimi: EU,komut zme ve komutlar yrtme iin bir kontrol birimine, ALU ye,genel amal saklayclara (AX,BX,CX,DX), iareti (BP, SP) ve indis(DI, SI) saklayclar ile bayrak(Flags) saklaycsna sahiptir. Kontrol birimi, BIU tarafndan komut kuyruuna (Instructionqueue) srasyla yerletirilen makine dilindeki komutlarn yorumlanmasn, kodunun

    zlmesi ve yrtlmesi iin gereken ve ilemleri kontrol eder. EU hafzadan bir operandaihtiya duyarsa veya yazmak isterse bu ii BIU ya ynlendirir. Bu srada BIU iin gerekenfiziksel hafza adresi hesaplama ilemlerini desalar.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    16/77

    16

    16

    Yol Arabirimi: BIU; btn d yol ilemlerini kontrol eden bir kontrol birimine, EU nunyrtecei komut byte larn tutan komut kuyruuna, fiziksel hafza adresleri retmek iinbir toplaycya, 4 segment saklaycsna (CS, DS, SS, ES), komut iaretisine (IP) sahiptir.Anlalaca gibi BIU hafza ve Giri/k ilemleri dahil btn d yol ilemlerindensorumludur. BIU komut kuyruuna yerletirmek zerernein8086 mikroilemci iin 6 byte

    komut kodunu nden okuyabilir. Komut kodunun bu ekilde nden okunmas BIU ve EUbirimlerinin paralel almasna imkan verir. nceden okunan komutlar icra edilirkenyenilerinin bu esnada okunabilmesi ilemcinin performansn arttrr. Bu tarz alanmikroilemci mimarisine ihatl mimari (pipelined architecture) ad verilir. Aada buzellii bulunmayan 8-bit 8085A mikroilemcisi ile 8086 mikroilemcisinin yol zamanlamasgsterilmektedir.

    ekil b de birinci komutun icra edilirken ikinci komutun okunmas (Fetch2) ayn anda paralelyaplmaktadr. Ayney pei sra gelen komutlar iinde geerlidir ve bu sayede ilemcinin veriileme hz arttrlmaktadr. Oysaki klasik mimariye sahip bir mikroilemcide kod zmyaplrken yol bota kalmakta bir i yaplamamaktadr.

    Bellek ve Adresleme Mimarisi ( Lojik ve Fiziksel Bellek, Segment ve Ofset kavram):

    8086 mikroilemci 20 bit adres yolu ile 1048576 (1M) byte bellek hcresiadresleyebilmektedir.

    Lojik bellek genelde yazlm tarafndan programcya grlenhafzaya denir. 8086 ilemci 16-bit mimarisine sahip olmasnaramen lojik bellek genilii yine 8-bit tir. Ancak saklaycgenilii (16-bit mimari) ve fiziksel bellek tasarm sayesinde 16-bit yazma ve okuma yaplabilir. 8086 ilemci 00000H-FFFFFH

    arasnda 1M byte adres uzunluunda 8-bit yani 1 byte lojikbellee sahiptir. Mikroilemci ile adreslenebilen 16-bit (2 byte)bellek kelimesi (word) herhangi bir byte adresinden balar ve

  • 7/30/2019 8086 Mikroilemci Ders Notu

    17/77

    17

    17

    pe pee iki byte igal eder. Yani programc iin bellek herzaman 8-bit tir fark sadece donanm tasarmndadr.

    Fiziksel bellek ise daha ok donanm tasarmcs

    tarafndan grlen gerek hafza yapsntanmlar ve lojik hafzadan farkl olabilir. Yandagrlen fiziksel bellek yapsnn avantaj byteveya word verisinin dorudanadreslenebilmesinde yatar. 8086 ilemci busayede ve veri adresinin ift olmas salandnda16-bit bir veriyi bir ilemde okuyupyazabilmektedir. 8-bit ilemci olan 8088 16-bitveri aktarm iin ancak 2 okuma veya yazmayaihtiya duyar. Yani 8086 16-bit veriye iki kat daha

    hzl eriir.

    16-bit veri yolu (data bus) geniliine sahip olan 8086 ilemci 20 bit adres yolu (adres bus)geniliine sahiptir. Ancak bellek adresleme ilemleri iin gereken bir 20 bit saklaycsnasahip deildir. Bu durumda zm 16 bit saklayclarn adres verilerinin aadaki ekildegsterildii gibi kullanlmasyla elde edilir.

    te bu yap segment ve ofset kavramlarn dourur. 8086 ilemcisinde bellek eriimi segmentsaklayclar ile salanr. Her segment saklayc 20-bit adresin 16-bit ksmn tutar. Bu 16-bitadresin dk deerli blmne 0H (00002) eklenir. Sonrada 16-bit bir ofset(indis) bu adresletoplanarak 20-bit gerek adres elde edilir. Bu ileme lojik adresin fiziksel adrese evrilmesidenir.

    segment: Bellein daha kolay adreslenebilmesi amacyla blnd dnlen bellekkesimleridir. Dier bir deyile her bir bellek hcresini kk bir kutucuk olarak dnrseksegment kavramn da bu kk kutucuklardan oluan byk kutucuklar olarak dnebiliriz.Yani Segment adresin setlenmesi ile bu byk kutucuklardan birisinin balang adresisetlenmi olur.

    ofset: Segment ierisinde bellein her bir hcresi olarak dnebilir. Segment adresinsetlenmesinden sonra bu segment iindeki veya bu adresten sonra ulalmak istenen bellek

    hcrelerinin her biridir. Yani yukarda bahsi geen byk kutucuklarn iindeki her bir kkkutucuklardr.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    18/77

    18

    18

    rnek:Ulalmas amalanan bellek hcresi iin segment adres: c230H ve ofset adresi: 1200Hise gerek adres: segment adres x 10h + ofset adres , c230hx10h+1200h= c3500h olarakbulunur.

    Segment adresler ileride de grlecei gibi mikroilemcinin ilgili saklayclarnda tutulurlar,

    ofset ler ise deiik saklayclardan gelebilir.Kod segment genelde program ve veri alanolarak kullanlabildii gibi esasnda programkodlarnn bulunduu bellek alandr. CSsaklaycs bu alann balang adresini iareteder. 8086 tarafnda yrtlecek bir sonrakikodun adresi CSx10H+IP ile elde edilir. IP komut

    iaretisi olup kod segmentin ofset adresiniierir.

    DS saklaycs veri alannn balang adresiniiaret eder. Verinin Ofseti veya ofseti ierendier saklayclar DSx10H deerine eklenerekverinin gerek adresi elde edilir.

    Her segment 16-bit ofset adresten dolay 64Kbyte lk bir bellek blounu ierir.

    Segment li bellek yaps sayesinde kod, veri ve gerekli dier bellek alanlar farkl hafzablgelerinde alabilmektedir. rnein DS saklaycsna farkl bir adresi iaret eden adresyazlarak program ve data bellek alanlar birbirinden kolayca ayrlabilir.

    CS her zaman program kodlarnn bulunduu taban adresi ierir dolaysyla 8086 mikroilemci CS nin iaret ettii adresten itibaren emir kodlarn almaya balar. Segment li bu yapsayesinde sadece CS deitirilerek deiik bellek alanlarndaki programlar altrlabilir veyaprogram kodlar bellein istenilen yerine yazlarak ve CS nin bu alan gstermesi salanarakaltrlabilir. Bu ise programlara tekrar yerletirilebilirlik (relocatable)zelliini ve gcn

    katar. Bu sayede programlar bellein her hangi bir yerinde altrlabilmektedir.

    5) 80886 MKROLEMCDE SAKLAYICI VEYA KAYDEDC (REGISTER) YAPISI:

    Bir mikroilemcinin programlanmas bu ilemcinin dahili kaydedicilerinin yapsnn tam olarakanlalmasn gerektirir. Bu blmde bu yapdan ve bellein segment kaydediciler ve offsetadresler kullanlarak nasl adreslendii aklanacaktr.

    INTEL ailesi bir 8086 mikroilemcinin (Gnmz PC lerinde yaygn olarak kullanla gelenilemcilerin atas saylr) dahili kaydedicileri ekilde gsterilmektedir. Programcya ak olan

    bu dahili kaydedicileri gurup altnda toplayabiliriz: Genel Amal Kaydediciler, Pointer(gsterici) ve Index (iaret) kaydediciler, Segment Kaydediciler.Bunlara ek olarak bir diergurup olarak da APU nun (aritmetik ilem birimi veya ALU aritmetik ve lojik birimi) yapt

  • 7/30/2019 8086 Mikroilemci Ders Notu

    19/77

    19

    19

    ilemler hakknda eitli bilgilerin veya koullarn gsterildii Flag (bayrak) Kaydediciyisayabiliriz.

    32 bitlik kaydediciler EAX, 16 bitlik kaydediciler AX, 8 bitlik kaydediciler AH veya AL biimindegsterilmektedir.

    Burada AX rnek tekil etmesi bakmndan bir genel amal kaydedicidir.AH ile AX in yksekbyte ve AL ile de AX in alak byte gsterilmektedir.

    Genel Amal Kaydediciler: Genel amal kaydediciler programcnn isteine bal olarak herhangi bir ekilde kullanlabilir. Bunlarn her biri ekilde gsterildii gibi 32 -bit (EAX, EBX, ECX,EDX), 16-bit (AX, BX, CX, DX) ve 8-bit (AH, AL, BH, BL, CH, CL, DH, DL) kaydediciler olarak

    kullanlabilir. Ayn zamanda baz emirler, genel amal kaydedicileri zel ilemler iin de

    kullanrlar ve bu yzden dolay da her birine deiik bir isim verilmitir.

    AX (Accumulator): Aritmetik veya lojik ilemlerden sonra geici sonularn tutulmasndakullanlr. EAX, AX, AH, AL formlarnda kullanlabilir.

    BX (Base): Bellein her hangi bir lokasyonunda bulunan bir datann base (offset) adresinintutulmasnda kullanlr. EBX, BX, BH, BL formlarnda kullanlabilir.

    CX (Count):Belirli emirlerin icras iin sayma saysnn tutulduu yerdir. rnein kaydrma vedndrme ilemleri iin gereken kaydrma says CL de veya LOOP emri ile icra edilen

    dngnn says CX, veya ECX kaydedicisinde tutulur. ECX,CX,CH,CLformlarnda kullanlabilir.

    DX (Data): Genel amal kullanmnn yannda; ayn zamanda 16 veya 32-bit arpmaileminden sonra arpmn en anlaml ksmnn tutulmasnda, bir blme ileminden nce

  • 7/30/2019 8086 Mikroilemci Ders Notu

    20/77

    20

    20

    blnenin en anlaml ksmnn tutulmasnda ve en nemlisi de I/O ilemlerinde deiken I/Oport numarasnn tutulmasnda kullanlr. EDX,DX,DH,DL formlarnda kullanlabilir.

    D5 Pointer ve Index Kaydediciler: Bu tip kaydedicilerin genel amal bir yapya sahipolmalarnn yannda daha ok sklkta bir ok emir iin, mevcut segment irerisinde olmak

    zereilenen datann tutulduu bellek lokasyonunu gstermek(pointing) veya iaret etmek(indexing) iin kullanlr.

    SP (Stack Pointer): LIFO (last in first out, son giren ilk kar) organizasyonuna sahip Stack(yn) bellekteki datalarn adreslenmesinde kullanlr. PUSH ve POP emirlerinin icrasesnasnda veya bir altprogramn arld CALL emrinin icrasnda veya bir altprogramdan anaprograma geri dn yapld srada SS ile birlikte yn bellein adreslenmesinde kullanlr.ESP,SP formlarnda kullanlabilir.

    BP (Base Pointer): Genel amal bir pointer kaydedici olmakla birlikte daha ok Stack

    bellekteki bir veri dizisini adreslemekte kullanlr. EBP,BP formlarnda kullanlabilir.

    SI (Source Index): Genel amal bir pointer kaydedici olmakla birlikte daha ok Stringkomutlarnda kaynak (Source) verinin dolayl olarak adreslenmesinde kullanlr. ESI,SIformlarnda kullanlabilir.

    DI (Destination Index): Genel amal bir pointer kaydedici olmakla birlikte daha ok Stringkomutlarnda hedef (Destination) verinin dolayl olarak adreslenmesinde kullanlr. EDI,DIformlarnda kullanlabilir.

    IP (Instruction Pointer):Daima, mikroilemci tarafndan icra edilecek olan bir sonraki emrinadreslenmesinde kullanlr. Bir sonraki emrin gerek fiziksel adresi CSx10h kod segmentadresine IP ofset adresinin eklenmesi ile bulunur yani CSx10h+IPdir. EIP, IP formlarndakullanlabilir.

    Veriler bu be kaydediciden drd ilemevcut segment iinde ofsetleri belirlemek amacyla16-bit formunda daha sk adreslenebilirler ancak IP kullanarak asla adreslenmezler veyaadreslenemezler.Bunun nedeni hakknda ne syleyebilirsiniz.

    FLAGS Kaydediciler: Bayrak (Flag) kaydediciler hem mikroilemcinin durumunu hem de onun

    almasnn kontroln gsterirler veya tutarlar. Bu kaydedicideki bitler bir ok aritmetikveya lojik emrin icrasndan sonra deiir, bazlar ise mikroilemci zelliklerinin kontroledilmesinde kullanlr.

    8086 flags kaydedici 16-bit geniliinde olup yukar doru uyumludur. Bu anlamda her yenix86 mikroilemci bir ncekini aynen ihtiva eder. Aadance 8086 mikroilemciye ait bayrakkaydedici FLAGS ve sonra da 80486 mikroilemciye ait 32-bit EFLAGs (Extended FLAGregister) bayrak kaydedici ve ilgili bitleri gsterilmektedir.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    21/77

    21

    21

    31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    AC VM RF NT IOP IOP O D I T S Z A P C

    1 0

    C (Carry): toplama ileminden doan elde veya karma ileminden doan dn iin

    kullanlan bittir. Bu bayrak biti ayn zamanda baz programlar iin hata koullarn, zel ilemdurumlar ve sonular ile ilgili boolean bayrak olarak kullanlr.

    P (Parity):Bu bayrak tek elik (Odd Parity) ilemi iin lojik 0, ift elik (Even Parity) ilemi iinlojik 1 deeri lr. Elik ift veya tek olarak olmak zere bir byte veya word iinde yer alan 1 lerin saysdr.

    A (Auxilary Carry): Yaplan bir ilem sonucunda 3. ve 4. bit pozisyonlar arasnda olan (ensadai bit 0. bittir), toplamadan sonraki eldeyi ve karmadan sonraki dnc belirtir.zellikle BCD toplama (DAA) ve karma (DAS) emirleri bu biti test ederek (3. ve 4. biti

    arasnda doan yardmc elde) AL nin deerini ayarlarlar. Bunun haricinde mikroilemcitarafndan kullanlmaz.

    Z (Zero): Aritmetik veya lojik ilemlerden sonra sonucun sfr olmas halinde lojik 1, dierdurumlarda lojik 0 olur.

    S (Sign): Toplama veya karma ilemlerinden sonra sonucun aritmetik iaretini belirtir.Sonu negatif ise lojik 1, pozitif ise lojik 0 olur. Bayraklar etkileyen her hangi bir komuttansonra en anlaml bit S bit ine yerletirilir.

    I (Interrupt): Mikroilemcinin INTR (Interrupt request, kesme gereksinim) giri bacannalmasn kontrol eder. I=1 ise INTR bacayetkilendirilir yani dardan CPU ya kesme isteibildirilebilir. I=0 ise INTR bacana dardan kesme istei bildirilse bile mikroilemci bunudikkate almaz. Bu bitin durumu STI (Set Interrupt)ve CLI (Cear Interrupt) emirleri ile kontrol

    edilir.

    D (Direction):String emirleri esnasnda DI ve/veya SI kaydedicileri iin; D=1 ise kaydedicilerotomatik olarak azaltlrlar, D=0 iin arttrlrlar. Bir dizi boyunca tekrar edilen ilemler iinartmann veya azalmann ynn kontrol ederler. STD (Set Direction) ile lojik 1, CDT (ClearDirection) ile lojik 0 yaplr.

    O (Overflow):aretli saylarn aritmetik ilemleri srasnda oluan sonu hedef kaydedicininveya bellein alabilecei kapasiteyi aarsa lojik 1 olur. rnein 8-bit iaretli kaydedicilerleyaplan; 7fH (+127) ile 01H (+1) says toplandnda sonu 80H (-128) olacaktr. Bu durumdaiaretli toplama iin tama olmu demektir ve O biti lojik 1 olur. aretsiz saylar iin bubayra dikkate alnmaz.

    Segment Kaydediciler: Segment (kesim) kaydediciler mikroilemci iindeki dier kaydediciyardm ile bellek adreslerinin retilmesi ve bellein adreslenmesi maksadyla kullanlrlar.

    CS (Code): Kod Segment, programlar tarafndan kullanlan dier program veya

    altprogramlarn oturduu bellek blgesidir. CS kodun bulunduu bellek blgesinin balangadresini tanmlar.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    22/77

    22

    22

    DS (Data Segment):Data Segment, program tarafndan kullanlan verilerin bulunduu bellekblgesidir. DS verilerin bulunduu bellek kesiminin balang adresini tanmlar. Bu adreseilgili verinin ofset adresinin veya ofset adresi ieren dier bir kaydedicinin ieriinineklenmesi ile bu dataya eriilmi olur.

    ES (Extra Segment):zel baz emirlerin (String emirleri) kulland ek veri kesimidir.

    SS (Stack): Stack (Yn) Segment, Stack tarafndan kullanlan bellek blgesini tanmlar. Ynkesiminde o anki kullanlabilir bellek giri noktas (zellikle yazma: PUSH veya okuma: POPkomutlar iin) adresi SP kaydedicisi tarafndan belirlenir. BP (Base Pointer) kaydedicisi deayn zamanda stack segment iindeki bir veriyi adreslemede kullanlr.

    FS ve GS kaydedicileri de eitli ilemler iin kullanlan ek segment kaydedicileridir.

    Aada ilgili segment kaydedicilerin adreslenmesi esnasnda kullanlan segment ve ofset

    kaydediciler gsterilmitir. Her hangi bir bellek ksm adreslenirken bellein trne gre(program bellek, data bellek ....) segment adres o blgeyi adresleyen kaydediciye yazlr, buyeni deer veya daha nce yazlm olan deer kullanlarak bellein ilgili segmenti seilmiolur. Aada her segment veya kaydedici iin kullanlabilecek offset kaydediciler degsterilmektedir. Bunlara da bellein offset adresi yazlarak bu ilem tamamlanm olur.

    Segment Offset

    CS EIP,IP

    SS ESP,EBP veya SP,BP

    DS EAX,EBX,ECX,EDX,EDI,ESI veya bunlarn 16-bitlik formlar,8-bit,16-bit veya 32-bit bir say

    ES EDI,DI

    Sonu olarak bellein her blgesi iin gerek fiziksel adres SEGMENTx10h+OFSET ifadesiylehesaplanabilir.

    6) VER YAPILARI: Mikroilemci programlamada iyi bilinmesi gereken ASCII, BCD, iaretli(signed) 8-bit (byte), 16-bit (word) tamsaylar (integers), iaretsiz (unsigned) 8-bit, 16-bittamsaylar; ksa (short) ve uzun (long) gerek saylar (floatin point numbers-kayan noktalsaylar)

    ASCII KOD TABLOSU:Aada kullanlan standart 7 bitlik karaktertablosu verilmi olup

    gnmz kiisel bilgisayarlarnda geniletilmi (7FH-FFH a kadar olan kodlarla birlikte) asciitablosu kullanlr

    SA

  • 7/30/2019 8086 Mikroilemci Ders Notu

    23/77

    23

    23

    BASAMAK

    X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF

    SO

    LBASAMAK

    0X

    1X

    2X ! " # $ % & ' ( ) * + , - . /

    3X 0 1 2 3 4 5 6 7 8 9 : ; < = > ?

    4X @ A B C D E F G H I J K L M N O

    5X P Q R S T U V W X Y Z [ \ ] ^ _

    6X ` a b c d e f g h i j k l m n o

    7X p q r s t u v w x y z { | } ~

    BCD (Binary Coded Decimal): Bellekte paketlenmi ve paketlenmemi halde tutulurlar.Pakelenmi BCD, iki BCD hanenin tek bir byte iine yazlmasyla oluur. Paketlenmemi BCDise her hane tek bir byte iine yazlmasyla oluur.

    Say Paketlenmi Paketlenmemi23 00100011 00000010 00000011

    237 00000010 00110111 00000010 00000011 00000111

    BYTE:Byte veriler bellekte iaretsiz veya iaretli olmak zere iki formatta tutulurlar. Aadaher iki durum iin bit deerleri belirtilmitir.

    aretsiz Byte Veri

    27 26 25 24 23 22 21 20

    128 64 32 16 8 4 2 1

    aretli Byte Veri

    -27

    26

    25

    24

    23

    22

    21

    20

    -128 64 32 16 8 4 2 1

    Grld gibi aralarndaki tek fark en anlaml bitin (en sadaki bit) yani iaret bitininarlndan kaynaklanmaktadr. rnein 80H says iaretsiz olarak 128 deerine sahipken,iaretli olarak -128 deerine sahip olmaktadr. 81H says iaretsiz olarak 129 deerinesahipken, iaretli olarak -127 deerine sahip olmaktadr.

    Grlebilecei gibi iaretli negatif saylarn en anlaml bit deerinin -128 olmas aslnda busaynn iaretsiz pozitifinin 2 li tmleyeninden elde edilmesinden kaynaklanr. Yani negatifsaylar 2 li tmleyen halinde kullanlrlar.

    WORD: Byte veri iin sylenenler word veri iinde geerlidir. Bellekte dk byte yksekbyte dan nce yer alr. rnein 1000H adresin de yer alan 1234H word says iin 1000Hadresinde 34H ve 1001H adresinde 12H yerleir.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    24/77

    24

    24

    REAL NUMBERS (Gerek Saylar): x86 mimarisinde gerek saylarveya kayan noktal saylar(floating point numbers) iki para halinde ifade edilir: bir mantissa (normalizeli taban) ve birexponent (s). Bellekte 4-byte veya 8-byte veya daha fazla genilikte tutulurlar.

    Aada 4-byte; 1-bit iaret biti, 24-bit mantissa, 8-bit exponent iin olmak zereshort real

    bir kayan noktal saynn gsterimine yer verilmitir. Bu tanm 33-bit gerektirmesine ramengsterim 32-bit tir. Bunun nedeni mantissann gizli 1-bit iermesidir dolaysyla 23-bit ileifade edilebilmektedir nk bu bit normalizeedilen gerek saynn soldaki ilk bitidir.

    Say normalize edildiinde deeri 2 den kk ve 1 den byk olacak ekilde tekrardzenlenir. rnein +12 says ikili (binary) olarak 1100B ile gsterilir. Normalize edilmi hali1.1x2

    +3olacaktr.

    31 24 23 16 15 8 7 0

    S

    Excess-127 exponent 23-bit mantissa

    Exponent ise 4-byte short real say iin artk-127 (excess-127), 8-byte long real say iin artk-1023 (excess-1023) eklinde tutulur.Dolaysyla 2+3ss 127+3= 130 (82H) olarak short realsay iin ve 1023+3=1026 (402H) long real say iin ifade edilir.

    Aada deiik saylara ilikin 4-byte short real saynn kayan noktal formatta gsterimrnekleri yer almaktadr.

    Decimal

    (10lu)Binary

    (2li)Normalized Sign

    (iaret)Artk s(excess 127)

    Mantissa

    +12 1100 1.1x2+3

    0 10000010 1000000 00000000 00000000

    -12 1100 -1.1x2+3

    1 10000010 1000000 00000000 00000000

    +100 1100100 1.1001x26

    0 10000101 1001000 00000000 00000000

    -1.75 1.11 -1.11x20

    1 01111111 1100000 00000000 00000000

    0.25 0.01 1.0x2-2

    0 01111101 0000000 00000000 00000000

    0.0 0.0 0.0 0 00000000 0000000 00000000 00000000

    8-byte den oluan long real saylar ise ayn yntemle ancak bu sefer 1-bit iaret, 11-bitexcess-1023 exponent ve 53-bit mantissa olmak zere toplam 64 bit ile kayan noktal

    formatta gsterilir ve ifade edilir.

    7) 16-BIT x86 EKRDENN ADRESLEME MODLARI:

    Adresleme kavram mikroilemcinin veri ya da programlara erimek iin srekli kulland birkavramdr.

    MOV komutu ve deiik kullanm ekilleri veri adresleme modlarnn aklanmasnda,

    program icrasnn ve akn deitiren CALL ve JMP komutlar program adresleme modlarnn

    aklanmasnda,

    PUSH ve POP gibi komutlar ise yn adreslememodlarnn aklanmasnda kullanlacaktr.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    25/77

    25

    25

    MOVkomutu kaydedici veya saklayclar arasnda, saklayclarla bellek arasnda 8, 16, 32-bitveri atarm yapabilen veok sk kullanlan bir komuttur.

    Yukardaki komutta kaynak olan BX iindeki 2-byte (word) veri hedef olan AX ierisinetransfer edilir. Bu komutta kaynak hibir zaman deimez.

    Veri Adresleme ModlarSaklayc Adresleme (Register Addressing):

    Yandaki tabloda baz deiik saklaycadresleme kullanm ekilleri

    gsterilmektedir. Komutlarda saklayclarayn genilie sahip olmaldrlar karkkullanma izin verilmez.

    Segment saklayclar arasnda adresaktarmna da izin verilmez.

    CS saklaycs mov komutu iledeitirilemez. NEDEN?????????

    vedi Adresleme (mmediate Addressing): Verinin program bellekte hexadecimal opcodeiinde yer ald moddur. Yani veri bellekte ilem kodunu takip eden byte veya byte larda yeralr.

    Yandaki tabloda baz deiik ivediadresleme kullanm ekillerigsterilmektedir.

    D6 Dorudan Adresleme (Direct Addressing): Dorudan veri adresleme iki ekilde yaplr.

    1)dorudan bir hafza hcresi ile AL veya AX arasnda gerekleen dorudan adreslemeliveri adreslemesi

    MOV AL, DATA komutunu ele alacak olursak ;DS veri segmentinde bulunan ve ofset adresi

    DATA sembol harfleri ile gsterilen 8-bit veri AL ye kopyalanr. DATA ile sembolize edilenofset 1234H ise komut mov al, [1234H] komutuna eit olacaktr. Assembly programlama dadaha ok adreslerin bu ekli yerine ofset adresleri temsil eden bu tip sembol adresler

  • 7/30/2019 8086 Mikroilemci Ders Notu

    26/77

    26

    26

    kullanlr. Assembler bu tip sembolik adresler (DATA) derleme esnasnda saylara ofsetlereevirir. Aada bu komut iin adresleme ve adreslenen veri hcresine eriim gsterilmitir.

    Aadaki tabloda ise AX, AL ile hafza arasnda yaplan veri aktarmndaki dorudanadreslemeye rnekler verilmektedir. ok sk kullanlan bu komutlar 3-byteuzunluundadrlar. Hafza ile dier saklayclararasnda veri transferi yapan dier komutlar 4-byte ya da daha fazla uzunluktadr ve yer deiim (displacement) adreslemesi kullanrlar.

    2) x86 komut kmesinde yaklak her komut iin kullanlabilen yer deiim(displacement) adreslemesi.

    Dorudan adreslemenin bir benzeri olup komut uzunluu 3-byte yerine 4-byte dir.rnein MOV CL, [3000H] komutu 4-byte iken MOV AL, [1234H] 3-byte olarak derlenir.

    0000 A0 1234 MOV AL, [1234H]

    0003 8A 0E 3000 MOV CL, [3000H]

    Aada bu adresleme ile alan komut rnekleri verilmitir.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    27/77

    27

    27

    Saklayc Dolayl (Indireck Addressing): Hafzann herhangi bir yerindeki veri BX, BP, DI, SIsaklayclaryla adreslenir. Bu yolla kullanlan saklayclar mevcut segmentteki ofset adresleriiermi olmaktadrlar. BX, DI, SI ile saklayc dolayl veya dier tip adresleme modlarndasegment veri segmenttir yani DS dir. BP kullanlm ise segment olarak yn yani SS seilmidemektir. Aada saklayc dolayl adreslemeye rnek komut ve yaplan adreslemenin ileyii

    gsterilmektedir.

    imdiye kadar ki aklamalardan da anlalaca gibi [..] operatre daima dolayl adreslemeiin kullanlr. Ayrca derleyici tarafndan saysal adrese dntrlen sembolik adres(rnek mov al, DATA) ile mevcut allan segment iindegsterilen ofset adrese OFFSETderleyici bildirisi ile eriilir.

    MOV AX, OFFSET DATA komutu ile DATA ile sembolik olarak ifade edilen verinin ofset adresi

    alnarak AX saklaycsna kopyalanr.

    Dolayl adresleme kullanrken baz durumlarda hafzada iaretlenen veri uzunluunun akolarak belirtilmesi gerekir. Bunun iin BYTE PTR, WORD PTR veya DWORD PTR derleyicibildirisi kullanlr.

    MOV AX, [DI] komutunda hedef 16-bit AX olduundan DS de DI nin ierii ile ofsetiadreslenen veri de 16-bit olacaktr.

    MOV [DI], 10H komutunda ise 10H verisinin ne kadar genilikte bir hafza alanna yazlacabelli deildir. Bunun iin, rnein MOV BYTE PTR [DI], 10H ile DI ile 1-byte hafzannadreslendii belirlenmi olur.

    MOV BX, OFFSET TABLO ;TABLO nun ofsetini BX e kopyala

    MOV CX, 50 ;Dng iin saya deerini ykleTEKRAR: IN AL, INPORT ;Giri portunu oku

    MOV [BX], AL ;Veriyi [BX] e kopyala

  • 7/30/2019 8086 Mikroilemci Ders Notu

    28/77

    28

    28

    INC BX ;aretiyi 1 arttrLOOP TEKRAR ;CX=0 oluncaya kadar dngy tekrar et

    Burada TEKRAR:ifadesi ile LOOP dngs iin bir geriye dallanma etiketi (Label) tanmlanmolup aslnda derleyici tarafndan CS de IN AL, INPORT komutunun ilk byte nn bulunduu

    program bellek adresinin LOOP komutu (CX0 ise)ile geri dn iin tekrar kullanlaca (IPye bu adres yazlarak Program bellek adreslenmi olur) adresin belirlenmesine neden olur.

    LOOP ile programn almas yukarda bahsedilen etiket ile belirlenen adrestentekrar salanr yani bir dng kurulmu olur. LOOP komutu dngnn her icrasnda CXieriini 1 azaltrve kontrol eder. Eer CX=0 ise geri dallanma olmaz program LOOP komutundan sonra gelen komuttan devam eder.

    Dngye girilmeden nce TABLO ofset adresi ile yklenen BX saklaycsnn ierii, herdngde 1 arttrlarak porttan okunacak 50 adet verinin saklanmas iin gereken ardk ofset

    adresler retilmi olur.

    Taban-art ndis (Base Plus Indis addressing): Esasnda saklayc dolayl adreslemeden yolaklarak taban saklayclardan BX veya BP den birisi ile bir indis saklaycs (DI veya SI)kullanlarak yaplan adreslemedir. Taban saklayc ou zaman bir hafza dizisinin balangadresini ve indis saklayc da dizideki verinin greceli pozisyonunu tutar. Aadaki tabloeitli kullanm rneklerini gstermektedir.

    Aadaki komut rnei TABLO veri dizisinin 10 no lu elemann 30 no lu pozisyonuna

    kopyalanmas ilemini yerine getirir.

    MOV BX, OFFSET TABLO ;Diziye iaret et yani ofset balang taban adresini alMOV DI,10

    MOV AL, [BX+DI]

    MOV DI, 30

    MOV [BX+DI], AL

    BX sabit taban olarak kalrken DI deierek veriye iaret etmektedir.

    MOV AX, [BX+SI] komutu MOV AX, [BX][SI] eklinde de kullanlabilir.

    Saklayc Greceli Adresleme (Register Relative Addressing): Taban-art-ndis adreslemedetaban adresi saklaycs yerine bir deiim ve indis saklaycs kullanlr.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    29/77

    29

    29

    MOV TABLO[SI+2],CL ;CL DS alannda OFSET TABLO+SI+2 ye kopyalanr.

    MOV DI,10

    MOV AL, TABLO[DI] ;OFSET TABLO+DI

    MOV DI, 30MOV TABLO[DI], AL

    Bu kullanmda TABLO[DI] = [OFSET TABLO+DI] adresini retmektedir.

    Taban Greceli-art-ndis (Base Relative-plus-Indis): Genellikle iki boyutlu hafza dizilerininadreslenmesinde taban saklayc+indis saklayc+deiim adresleri eklenerek kulanlr.

    Aadaki assembly program ve sonrasndaki ekil taban greceli-art-indis adreslemeninalmasn ak ekilde gstermektedir.

    Hafzada DOSYA sembolik adresi ile bir dosyada saklanan ve bir ok kayttan oluan veriblouierisindenistenilen kayttan veri okunup baka bir kayta kopyalanmas:

    MOV BX, OFFSET KAYITA ;KAYIT A balang, ofset adresini, taban alMOV DI, 10

    MOV AL, DOSYA[BX+DI] ;DOSYA DAN KAYIT A YI OKU

    MOV BX, OFFSET KAYITF ; KAYIT F balang, ofset adresini, taban alMOV DI, 20 ;A NIN YEN YERMOV DOSYA[BX+DI], AL

  • 7/30/2019 8086 Mikroilemci Ders Notu

    30/77

    30

    30

    leklenmi ndisli Adresleme (Scaled Inds Addressing): 80386 ve 80486 ilemcilerdekulanlan ve iki 32-bit saklayc gerektiren bir veri adresleme eklidir. Aadaki kullanmekillerini inceleyiniz.

    MOV EAX, [EBX+4*ECX]

    MOV [EAX+2*EBX], CX

    MOV AX, [EBP+2*EDI+100H]

    MOV TABLO[EAX+2*EBX+10H], DX

    PROGRAM HAFIZA ADRESLEME (PROGRAM MEMORY ADDRESSNG):

    JMP ve CALL komutlaryla yaplan program bellek adresleme ayr yapda karmza kar:dorudan, greceli ve dolayl.

    Dorudan Program Hafza Adresleme: Bu tr adresleme programlama dillerindeki GOTOkomutlarnn kullanmna benzerdir. Programda dallanlacak program bellek adresi yani

    dallanma adresi ilem koduyla birlikte program bellekte yer alr. Program hafza adresi CS:IPsaklayc ifti ile belirlendiinden dolay dallanma bir segmenden dier segmente (inter-segment) ve JMP komutuyla yaplacaksa 2-byte sonraki segment adresi iin ve 2-byte busegmentdeki ofset adresi iin olmak zere 5-byte hafza adresinegerek vardr. Aada JMP[20000H] komutuyla yaplan bu tr bir dallanma iin ilem kodu (opcode-operation code)verilmitir. Bylelikle 20000H fiziksel adresine dallanlm olur. Bu tip bir adreslemeyleprogram bellein istenilen fiziksel adresine eriilebilir.Gerek (real) modda bellein ilk 1Mbblmne CS:IP yklemeleriyle eriilebileceinden dorudan program bellek adresleme far

    jumpolarak da anlr.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    31/77

    31

    31

    Anlalaca zere CS=2000H ve IP=0000H deerlerini alacaktr.

    JMP ile yaplacak dallanma yeri ayn segment iinde farkl bir ofset adrese ise sadece buofset adrese gerek vardr dolaysyla ilem kodu 3-byte uzunluundadr. Sadece IP bu ofsetleyklenir.

    Dorudan hafza adresleme kullanan bir dier komutta CALL komutudur.

    Assembly programlarda genellikle dorudan hafza adresi yerine dallanlacak hafza adresinitemsil eden etiketler kullanlr. Etiket kullanldnda derleyici uygun adresleme ekliniseerek 3 veya 5-byte uzunluunda komut retir.

    Greceli Program Hafza Adresleme: Mikroilemcide u an bir komut icra edilirken IP birsonraki komut adresini iaret eder. te IP nin ierdii bu adres deerine yaplacak eklemeveya karma IP ye gre greceli bir hafza adresleme ekli oluturur. Aada JMP [2]komutu icra edilirken IP 2002H adresiyle ykl olacaktr. IP greceli adres 2 ile toplandktansonra 2004H olur ve program ak bu adresten itibaren devam eder.

    Greceli CALL ve JMP komutlarnda ilem kodundan sonra gelen yer deiim 1-byte veya 2-byte dir. 1-byte (short jump) ile +127 ve -128 byte ileri geri dallanma 2-byte (near jump) yerdeiimi +32767 ve -32758 ileri geri dallanma salanabilir. Yer deiim 2-byte dan byksederleyici tarafndan dorudan adresleme seilir ve buna gre uzunlukta ilem kodu seilir.[ 1] 0000: B8 00 00 mov ax,0000H

    [ 2] 0003: EB 01 jmp art ;IP u anda 0005H dir, komut icrasyla IP=IP+0001H=0006Holacaktr bu da art: etiketine dallanmaya neden olacaktr.

    [ 3] 0005: 48 dec ax

    [ 4] 0006: art:

    [ 5] 0006: 40 inc ax

    [ 6] 0007: son:

    Not: 0003: EB xx komutu icra edilirken IP=0005H gsterir ve IP=IP+xxle dallanlr.

    Dolayl Program Hafza Adresleme: JMP ve CALL komutlaryla ok eitli dolayl hafzaadresleme kullanm sz konusudur. Bu moda 16-bit saklayclarn herhangi biri (AX, BX, CX,DX, SP, BP, SI, DI) dorudan kullanlarak, bir greceli saklayc kullanlarak ([BX], [BP], [SI],[DI]) veya bir yer deiim ile herhangi bir greceli saklayc kullanlarak dallanma yaplabilir.

    Aadakitabloda bunlara ait rnekler verilmitir.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    32/77

    32

    32

    JMP [DI+2] mevcut kod segmentte ierisinde, DSx10H+DI+2 ile adreslenenbellekte tutulan adrese dallan

    Her bir rnekte 16-bit ofset adres esas alnarak dallanma yaplr.

    TABLO DW ALT0

    DW ALT1

    DW ALT2

    DW ALT3 ; Her biri 2-byte olan 4 farkl altprogram adresiniieren TABLO deikeni tanmlanyor. Buna dallanma tablosu (Jump Table)ad verilir.

    MOV BX, 4 ;ALT2 ofseti

    JMP TABLO [BX] ;ALT2 ye dallan

    YIIN HAFIZA ADRESLEME (STACK MEMORY ADDRESSNG):

    Yn tm mikroilemcilerde byk bir neme sahiptir. Verileri geici olarak tutar, altprogramlardan dn adreslerini saklar. Yn 8086 da son-giren-ilk-kar (Last-in-First-out

    LIFO) yapsna sahiptir. PUSH komutlaryla veri ynn stne yerletirilir. POP komutlarylaveri yndan ekilir.

    Ayrca CALL komutu icra edilirken alt programn dn adresini ynda saklarken, RETkomutu icra edilirken yndan bir adresin okunmas gerekleir. Aada 8086 ilekullanlabilecek PUSH ve POP komut rnekleri verilmitir.

    POPF ile yndan bayrak saklaycsna 2-byte okuma yaplarak 2-byte lk verinin ynda igalettikleri adresler boaltlm olur.

    Yn hafza SS:SP saklayc ifti ile gsterilir. Aadaki ekilde ilk komut P USH BXyrtlmeden nce SP=0100H ve SS=3000H dr. Bu 30100H fiziksel bellek adresine karlkgelir, SSx10H+SP. Komut yrtlrken nce SP bir azaltlr ve BX in yksek byte (BH) 12HSP ile iaretli 00FFH (fiziksel 300FFH) adresine kopyalanr. Sonra SP bir daha azaltlarak 00FEH

  • 7/30/2019 8086 Mikroilemci Ders Notu

    33/77

    33

    33

    olur. Bu sefer BX in dk byte (BL) 34H SP ile iaretlenen 00FEH (fiziksel 300FEH) adresinekopyalanr. Bylece PUSH komutu yrtldnde SP?SP-2 olur. SP her zaman ynhafzann stne iaret eder.

    Bir POP komutunun icras ile yn stnden mikroilemciye pe pee 2-byte okunur. rnein

    POP DX yrtlrken SP (00FEH) ile iaret edilen yn hafzadaki deer 34H DL ye kopyalanrve sonra SP bir arttrlarak SP=00FFH olur. SP (00FFH) ile iaret edilen yn hafzadaki deer12H DH ye kopyalanr. Bylece ynda dk adreste (300FEH) tutulan veri DX in DL sine veyksek adreste (300FFH) tutulan veri DX in DH sine kopyalanr. Bylelikle SP=SP+2 olmuolur.

    VER TRANSFER KOMUTLARI

    8086 mikroilemcide imdiye kadar kullanlabilen MOV, PUSH ve POP veri transfer komutlardnda LEA, LODS, STOS, MOVS, XCHG, LAHF, SAHF, XLAT, IN ve OUT komutlar da mevcuttur.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    34/77

    34

    34

    Adres Ykleme Komutlar

    Bir saklaycya veya bir saklayc ile bir segment saklaycsna bir adres yklemedekullanlmaktadr. Aadaki Tablo bu komutlarn 3 deiik eklini gstermektedir.

    LEA (Load Effective Address)

    LEA komutu, bir saklaycya operand ile belirtilen adresi ykler. Tabloda birinci rnekte, AXsaklaycs, operand SUBADR ierii ile deil (yani bu adresteki veri ile deil) SUBADRadresiyle yklenmektedir.Bu emir MOV AX,OFFSET SUBADR komutu ile edeerdir.

    Adres ykleme komutlarnn deiik kullanmlar.

    Assembly Dili Yaplan lem

    LEA AX, ADR AX ADR nin ofsetadresiyle yklenir

    LDS DI, LIST E DI ve DS LISTE de tutulan adresile yklenir

    LES BX, VECTOR BX ve ES VECTOR de tutulan adres ile yklenir

    LDS ve LES

    LDS ve LES komutlar, bir 16-bit saklaycya bir ofset adres ve DS (LDS ile) veya ES (LES ile)segment saklaycsna yeni bir segment adresi ykler. Bu komutlardan her birinde hafzadanmikroilemciye iki tane 16-bit kelime, yani toplam 4-byte veri transferi olur. LDS ve LESkomutlar ile, bir program iinde farkl bir DS ve ES alanlarna iaret edilirken, ofsetsaklayclara da yeni ofset yklenir. ekil LDS BX, [SI] komutu ile SI ile iaretli hafza alanndanbir 32-bit say BX ve DS saklayclarna kopyalanmasn gstermektedir.

    Dizi (String) Komutlar

    Dizi (string)veri transfer ilemleri iin LODS, STOS ve MOVS komutlar kullanlr. Bu komutlarmikroilemci ile hafza arasnda, bir blok, tek bir byte veya kelime (word) transferindekullanlr.Daha nce de bahsedildii gibi yn (direction) bayra (D) dizi ilemlerinde DI ve SIsaklayclarnnotomatik artm/azaltm ilevi iinkullanlr.

    Yn Bayra (D)

    Yn bayra, dizi ilemleri srasnda, DI ve SI saklayc iin otomatik-arttrma (D = O) veyaotomatik-azaltma (D = 1) alma modunu seer. D bayra CLD komutu ile 0' lanr ve STDkomutu ile l' lenir. Yani CLD otomatik-arttrmay ve STD otomatik-azaltmay seer. Bir dizi

  • 7/30/2019 8086 Mikroilemci Ders Notu

    35/77

    35

    35

    komutu ile yaplan veri transferinden sonra, D bayra ile seilen alma moduna gre, eerveri 1 byte ise DI ve/veya SI 1 arttrlr veya azaltlr. Benzeri ekilde, transfer edilen veri 2byte ise, bu kez DI ve/veya SI 2 arttrlr veya azaltlr.

    String Komutlar iin Kaynak ve Hedef Saklayclar (DS:SIve ES:DI)

    Dizi komutlarnda DS, SI ve ES, DI iftlerinin her ikisi de kullanlabilir. Normalde SI, DS iin veDI, ES iin ofset adres olmaktadr. SI iin segment atanmas, bir segment n eki (averride prejx)ile deitirilebilir ancak DI segment atamas her zaman ES'tir ve bu atama deitirilemez.

    LOOS (Load String)

    LODS komutu DS de SI ile iaretli hafza hcresinden AL' yi 1-byte veya AX' e 2-byte (kelime)yklemektedir. Tablo LODS komutunun baz kullanm rneklerini gstermektedir. LODSB veLODSW komutlar 1-byte veya kelime transferine neden olur. rnein, LODSB komutuyrtlrken, nce DS de SI ile iaretli hafza alanndan 1-byte veri AL saklaycsna

    kopyalanr. Hemen sonra, SI, D bayrann durumuna gre, 1 arttrlr veya 1 azaltlr.

    STOS (Store String)

    STOS komutu, AL veya AX' i ES deDI ile iaretli hafza hcresine saklamaktadr. Tablo STOSkomutunun baz kullanm rneklerini gstermektedir. LODS'te olduu gibi, STOS' dan sonraB veya W kullanlarak 1-byte veya kelime transferi yapld belirtilir.

    LODS komutunun baz deiik kullanm rnekleri.

    AssemblyDiIi Yaplan lem

    LODSB AL= [SI], SI=SI 1LODSW AX=[SI], SI = SI2LODS BUF AL= [SI], SI= SI 1 (Eer BUF byte ise)LODS DATA AX = [SI], SI = SI 2 (Eer DATA kelime (word) ise)

    STOS komutunun baz deiik kullanm rnekleri.AssemblyDili Yaplan lem

    STOSB [DI]=AL, DI=DIlSTOSW [DI] = AX, DI = DI2STOS BUF [DI] = AL, DI = DI 1 (Eer BUF byte ise)

    STOS DATA [DI] = AX, DI = DI2 (Eer DATA kelime ise)

    REP ile STOS Komutu

    REP (repeat) neki (prefx) herhangi bir dizi komutuna eklenebilir. Bu sayede bir diziileminin, CX sayma deeri sfr oluncaya kadar tekrarlanmas salanabilir. Aada verilenrnek program parasnda, BUFFER adresli yerden balayan 10-bytelk alan sfr iletemizlenmektedir. Bu ilem pe pee 10 tane STOS komutuyla veya REP nekli bir tane STOSkomutuyla yaplabilir. nce LES komutuylaES ve DI saklayclaryklenmekte daha sonra, CX

    sayac yklenmekte ve D bayra sfrlanarak, her STOS komutu yrtldkten sonra DI' nnotomatik-arttrmas salanmaktadr.

    LES DI, BUFFER ; BUFFER deki ofset ve segment adreslerini ykleMOV CX, 10 ; sayac ykle otomatik

  • 7/30/2019 8086 Mikroilemci Ders Notu

    36/77

    36

    36

    CLD ; arttrmay se hafzaMOV AX, 0 ;temizleme iin AX=0REP STOSB ;BUFFER alann temizle

    LES komutuyla yklenen adresler BUFFER da tutulmaktadr. Bu yzden aadakitanmlamada olduu gibi 4-byte veri iermelidir.

    BUFFER DW 0100H,0400H ;0100H ofset, 0400H segment iin

    Ayn ilem REP STOSW komutunu kullanarak CX sayac5 ile yklenerek de yaplabilir. nk 5tane 0000H kelimesi 10-byte hafzay temizler. Aada bu ilememi yapan program parasverilmitir.

    LES DI, BUFFER

    MOV CX, 5

    CLD

    MOV AX, 0

    REP STOSW

    MOVS (Move String)

    MOVS dizi veri transfer komutu ile hafzann bir alanndan dier bir alanna 1-by te veyakelime aktarm yaplabilir. Bu komut MOV komutu ile yaplamayan hafzadan-hafzayaveritransferi ilemini yapar. Bir MOVS komutu, veri segment' te (DS) bulunan ve SI saklaycs ileadreslenen hafza hcresini, ES' de bulunan ve DI ile adreslenen hafza alanna aktarr.

    MOVS komutunun baz deiik kullanm rnekleri.AssemblyDili Yaplan lemMOVSB [DI] = [SI], DI = DI 1, SI = SI 1MOVSW [DI] = [SI], DI = DI2, SI = SI2MOVS DATA1, DATA2 [DI] = [SI], DI = DI 1, SI = SI 1MOVS WORD1, WORD2 [DI] = [SI], DI = DI 2, SI = SI 2

    Aada verilen rnek program parasnda, BUFFER2 alanndan 100-byte veri BUFFER1alanna aktarlmaktadr. Yine MOVS kullanlmadan nce, LES ve LDS komutlar ile hafza ia-retileri DI ve SI yklenerek, BUFFER1 ve BUFFER2 alanlarna iaret etmeleri salanr dahasonra MOVS komutu yrtlrken SI ve DI' de bulunan ofset adreslerin otomatik-arttrmas

    CLD komutuyla seilirve CX sayac 100 ilk deeriyle yklenir. REP komutuyla kullanlan MOVSkomutu ardk 100 adet veri transferini gerekletirir.

    LES DI, BUFFER1 ;BUFFER1 adresini ykleLDS SI, BUFFER2 ; BUFFER2 adresini ykleCLD

    MOV CX, 100

    REP MOVSB

    Dier Veri Transfer Komutlar (IN, OUT, XCHG, XLAT, IAHF ve SAHF )

    IN ve OUT

  • 7/30/2019 8086 Mikroilemci Ders Notu

    37/77

    37

    37

    IN ve OUT komutlar ile 8086 mikroilemcisi giri/k cihazlara (port' lara) eriir.

    8086 mikroilemcisinde veri aktarm mikroilemcinin AL veya AX saklaycs ile 8-bit bir sabitadres veya DX ile belirtilen (adreslenen) bir d port arasnda olur.

    Veri iin hedef veya kaynak her zaman AL, AX veya EAX (386 ve 486 da) saklayclardr.Giri/k cihazlar iin port adres alan 16-bit olarak tasarlanmtr. Bu alan 0000H-03FFHarasndadr ancak gnmzde bu port adres 03FFH dan byk olabilmektedir.

    Aada OUT 19H, AX komutu iin 8086 mikroilemcinin data, adres ve kontrol ularndaoluan veri ve adres yaps gsterilmektedir.

    Burada ilgili kontrol bus ucunun sadece giri/k cihazlarn aktif etmek iin (bellek veyadier harici birimler deil) aktif edildiine dikkat edin (IOWC=0). IN komutu iin IORC ucu

    aktif olmaktadr. A16 ve daha byk adres ular IN ve OUT komutlarnda tanmlanmamtr.

    IN ve OUT komutlarnn deiik kullanm rnekleri.AssemblyDili Yaplan 1em

    IN AL,IPORT IPORT' tan 8-bit veri AL' ye okunur

    IN AX,IPORT IPQRT' un 16-bit veri AX e okunurIN AL,DX DX ile iaretli port' tan 8-bit veri AL' ye okunurIN AX, DX DX ile iaretli port' tan 16-bit veri AX' e okunurOUT OPORT, AL AL' nin ierii OPORT' a gnderilir

    OUT OPORT, AX AX' in ierii OPORT' a gnderilirOUT DX,AL AL' nin ierii DX ile iaretli port' a gnderilirOUT DX,AX AX 'in ierii DX ile iaretli port' a gnderilir

    XCHG

    Herhangi bir saklaycnn ieriini dier bir saklayc veya bir hafza hcresi iledeitirmektedir. XCHG komutu, segment saklayclarnn ieriini veya hafzadan hafzayaveri ierii deitirmede kullanlamaz.

    XCHG komutunu 16-bit AX saklaycs ile dier bir 16-bit saklaycnn ieriklerini deitirmede

    kullanma en etkin ve hzl yer deiim yntemidir. nk, bu komut hafzada 1-byte igaleder.

    Port Data

    AX ierii

    Port Adres

    0019H

    Port Kontrol

    Data BUS (D0-D15)

    Adres BUS (A0-A15)

    IOWC (I/O Write Control)

  • 7/30/2019 8086 Mikroilemci Ders Notu

    38/77

    38

    38

    XCHG komutunun deiik ekilleri.

    AssemblyDiIi Yaplan ilem

    XCHG sak, sak Saklayc ieriklerini deitirXCHG sak, hafza Saklayc ile hafzaieriklerini deitir

    XLAT

    XIAT (translate) komutu, AL'nin ieriini hafzada bir tabloda sakl bir sayya evirmektedir.Bu komut, bir kodu dierine eviren, dorudan bakma tablosu bakla (look-up) tekniindekullanlr. XLAT komutu, nce AL'nin ieriini BX saklaycsna ekleyerek DS iin bir hafzaadresi oluturur. Daha sonra bu adreste sakl veriyi AL saklaycsna geri ykler.

    rnein, bir 7-segment LED gsterge bakma tablosunun DISPLAY adresinde saklandnvarsayalm. XLAT komutu, AL saklaycsnda bulunacak O ile 9 arasnda deiik BCD (BinaryCoded Decimal) saylarn 7 -segment kod karln bulmada kullanlr.

    MOV BX, OFFSET DISPLAY ;DISPLAY ADRESN YKLEXLAT ;AL DEK BCD KODU 7-SEGMENT KOD EVR

    ARTMETK VE LOJK KOMUTLAR

    Toplama: ADD, ADC ve INC Komutlar

    ADD Komutu

    Tabloda ADD toplama komutunun deiik adresleme modlarna gre baz kullanm r-nekleri yer almaktadr.

    Toplama komutunun deiik kullanm rnekleri.

    AssemblyDiIi Yaplan 1em

    ADD AL, CL AL=AL+CL

    ADD DX, SI DX= DX+ SI

    ADD BL,20H BL= BL+ 20H

    ADD CX, 4000H CX= CX + 4000H

    ADD [BX],CLCL, DS de BX ile adreslenen veri ile toplanrsonu yine bu verialanna yazlr

    ADD CX, [SI+2] CX, DS de SI+2 ile adreslenen veri ile toplanrsonu CX'eyazlr

    ADD AL, BUF AL, DS' de bulunan BUF hcresi ile toplanr sonu AL' ye yazlr

    ADD AL, BUF[DI]AL, DS' de bulunan ofset-BUF ve DI toplami ile adreslenen veri ile

    toplanrsonu AL' ye yazlr

    ADD [BX+DI], DLDS' de bulunan BX ve ofset DI' nin toplam ile adreslenen veri DL ile

    toplanr ve sonu yine buveri alanna yazlr

  • 7/30/2019 8086 Mikroilemci Ders Notu

    39/77

    39

    39

    vedi toplama (immediate addition) adreslemesine bir rnek verilmitir. Bu adreslemede biroperand saklaycdan dier operand hafzadan gelen sabit bir saydr. SI, DI, BP veya BXsaklayclar ile yaplan adreslemeyle hafzadan saklaycya toplama (memoryregisteraddition) gerekletirilir. Bir taban ve ofset deerinin toplanmasyla oluan adresleiaretlenen verinin bir saklayc ile toplanmas ile dizi toplamas (araya ddition)

    gerekletirilir.

    Aada bir byte dizisi olan ARRAY'in ilk 3 eleman ARRAY[0], ARRAY[ 1] ve ARRAY[2]toplanmaktadr.

    MOV AL,0 ;TOPLAMI SIFIRLA

    MOV SI, 0 ;Dizinin ilk eleman

    ADD AL, ARRAY[SI] ;ilk eleman

    ADD AL, ARRAY[SI+l]

    ADD AL, ARRAY[SI+2l

    ADC Komutu (Eldeli Toplama):

    ADC eldeli toplama komutunda operand ile beraber elde bayra da (C) toplamaya dahiledilir. Bu komut 8086-80286'da 16-bit' ten ve 80386-Pentium'da ise 32-bit' ten daha genisaylar toplamada kullanlr.

    INC Komutu

    Segment saklayclar dnda herhangi bir saklaycya veya bir hafza hcresi ieriine 1 ekler.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    40/77

    40

    40

    karma: SUB, SBB ve DEC Komutlar

    SUB Komutu

    karma komutunun deiik kullanm rnekleri.

    AssemblyDili Yaplan lem

    SUB AL, CL AL= AL-CL

    SUB DX, SI DX= DX-SI

    SUB BL, 20H BL = BL- 20H

    SUB CX, 4000H CX= CX- 4000H

    SUB [BX],CLDS de BX ile adreslenen veriden CL kartlr sonu yine bu veri alanna

    yazlrSUB CX, [SI+2]

    CX' den DS de SI+2 ile adreslenen veri hcre kartlr sonu CX' eyazlr

    SUB AL, BUF AL' den DS' de bulunan BUF verisi kartlr sonu AL'ye yazlr

    SUB AL, BUF[DI]AL'den DS'te bulunan BUF ve ofset DI' nin toplam ile adreslenen verikartlr sonu AL'ye yazlr

    SUB [BX+DI], DLDS' de bulunan BX ve ofset DI' nin toplam ileadreslenen veriden DLkartlr ve sonu yine bu veri alanna yazlr

    SBB Komutu (dnl kartma)

    SBB dnlkartma komutunda operand ile beraber elde bayra da(C) kar ilemine dahil edilir.8086-80286'da 16-bit'ten ve 80386-Pentium'da ise 32-bit'ten daha geni saylar karmadakullanlr.

    SBB komutunun deiik kullanm rnekleri.

    AssemblyDiIi Yaplan lemSBB AL, CL AL=AL-CL-C

    SBB AX, BX AX=AX-BX-C

    SBB [BX],ALDS' de bulunan BX ile adreslenen 1-byte veriden AL ve C kartlrve sonu ayn veri alanna yazlr

    SBB AX, [BP+2] AX' den SS' de bulunan ve BP+2 ile adreslenen 16-bit veri ve Ckartlr sonu AX' e yazlr

    DEC Komutu

    Segment saklayclar dndaherhangi bir saklayc veya bir hafza hcresi ieriini 1 azaltr.

    Azaltma komutunun deiik kullanm rnekleri.

    AssemblyDili Yaplan lem

    DEC AL AL=AL-1

    DEC SP SP=SP-IDEC BYTE PTR [BX] DS' de bulunan ve BXile adreslenen 1-byte hafza ierii azaltlrDEC WORD PTR[SI] DS' de bulunan ve SIile adreslenen 16-bit hafza ierii azaltlr

  • 7/30/2019 8086 Mikroilemci Ders Notu

    41/77

    41

    41

    Karlatrma

    Karlatrma komutu CMP (Compare) ile sadece bayrak bit' lerini deitiren bir karmailemi gerekletirilir. Karlatrma ilemine giren operand' larda bir deime olmaz, sadecebayraklar etkilenir. Karlatrma ilemi bir saklayc ierii ile dier bir saklayc veya hafza

    ierii arasnda yaplr.

    Genelde bir karlatrma komutundan hemen sonra bayraklarn durumunu test eden birdallanma komutu gelir.

    Karlatrma komutuhafzadan-hafzaya ve segment saklayc karlatrmas dnda dahance verilen tm adresleme modlarn kullanr.

    Karlatrma komutunun deiik kullanm rnekleri.

    AsumblyDili Yaplan lem

    CMP AL,CL AL-CL ilemi yaplr.CMP DX,SI DX-SI ilemi yaplr.CMP BL,20H BL-20 ilemi yaplr.CMP CX. 4000H CX-4000H ilemi yaplr.CMP [BX],CL DS de BX ile adreslenen veriden CL kartlr.CMP CX, [SI+2] CX' den DS de SI+2 ile adreslenen veri kartlr.CMP AL,BUF AL' den DS' de bulunan BUf hcresi kartlr.

    CMP AL, BUF[DI]AL' den DS' de bulunan BUF ve ofset DI' nin toplam ileadreslenen veri kartlr.

    CMP [BX+DI], DLDS' de bulunan BX ve ofset DI' nin toplam ile adreslenen

    veriden DL kartlr.

    arpma ve Blme

    ilk 8-bit mikroilemciler donanm arpma ve blme birimine sahip deildi. Bu birim 16bitmikroilemcilere eklenen ilk nemli donanm birimi oldu. Ancak bu temel birim sadecetamsay (integer) arpma ve blme destei salamaktadr. Kayan nokta ilemleri ya yazlmalt programlar ile veya ilk zamanlar, 8087 (8086/8088 iin), 80287 (80286 iin) ve 80387(80386 iin) gibi bir d nmerik ilemci ile saland. 80486 ve daha sonraki Pentiumilemcilerinde kayan nokta aritmetik ilemleri, artk tmdevre zerinde gerekletirildi.

    arpma (MUL ve IMUL)

    arpma ilemi 8-bit veya 16-bit iaretsiz (MUL) veya iaretli (IMUL) tamsaylar zerindeyaplr. lemsonucu (arpm) operand'lar 8-bit ise, 16-bit; 16-bit ise 32-bit olur. arpmakomutlarnda, ivedi adresleme modunun dndaki adreslerne modlar kullanlabilir.arpma ve blme komutlarnda ilk operand her zaman AL (8-bit ilemde) veya AX (16bitilemde) saklaycsnda bulunur.

    8-Bit arpma

    8-bit arpma ileminde arpanlardan biri her zaman AL saklaycsnda bulunur.Programc ikinci arpan komut ile belirtir. Aada grld gibi 16-bit arpm sonucuAX saklaycsnda bulunur.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    42/77

    42

    42

    aretli arpmada operand' lar donanm tarafndan iaretli (2'nin tmleyeni) olarak yo-rumlanr ve arpm yine 2'nin tmleyeni eklinde olur. Bu tr arpma ileminde IMULkomutu kullanlr. Saylarn yorumlanmas ve ilemleri programcya baldr.

    16-Bit arpma

    arpanlardan biri her zaman AX saklaycsnda bulunur. kinci arpan komut ile belirtilir.Aadagrld gibi 32-bit arpm sonucu DX ve AX saklayclarnda bulunur.

    arpma komutunun deiik kullanm rnekleri.AsstmblyDili Yaplan lem

    MUL DLAL' de bulunan iaretsiz tamsay DL ile arplr.arpm AX' de bulunur.

    IMUL CHAL' de bulunan iaretli tamsay CH ile arplr.arpm AX' de bulunur.

    MUL BYTEPTR[BX]DS' de bulunan BX ile adreslenen veri AL ile arplr.arpm AX' de bulunur.

    IMUL BYTE PTR OPRDS' de OPR adresinde bulunan iaretli tamsay AL

    ile arplr. arpm AXde bulunur.IMUL CX

    AX' deki iaretli tamsay CX ile arplr. arpmDX:AX' te bulunur.

    MUL WORD PTR[SI]DS' de bulunan ve SIile adreslenen 16-bit veri AX

    ile arplr. arpm DX:AX' de bulunur

    Blme (DIV ve IDIV)

    8-BitBlme

    8-bit blme ileminde blnen her zaman AX saklaycsnda bulunur. Blen sayy komut ilebelirtir.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    43/77

    43

    43

    Blnecek say 8-bit ise bu sayy 16-bit' e evirmek iin CBW (Convert Byle to Word)komutukullanlr. Bu komut AL saklaycsnda bulunan iaretli 8-bit sayy AX saklaycsna 16-bitolarak evirir. Bu komut genellikle 8-bit blme ileminden nce kullanlr.

    Aada AL saklaycsndaki 12H says CL saklaycsndaki 2 saysna b lnmektedir. Blme

    ileminden nce kalan saysnn saklandn AH saklaycs temizlenmektedir.

    MOV AL, 12HMOV CL, 2MOV AH, 0DIV CL

    16-Bit Blme

    16-bit blme ileminde blnen her zaman DX:AX saklayc iftinde bulunur. Blensayy komut ile belirtir.

    Blnecek say 16-bit ise bu sayy 32-bit'e evirmek iin CWD (Convert Word to Doubleword) komutu kullanlr. Bu komut AX saklaycsnda bulunan iaretli 16-bit sayy DX:AXsaklayc iftine 32-bit olarak evirir. Bu komut genellikle 16-bit blme ileminden ncekullanlr.

    Aada AX' teki -200 CX' de bulunan 9 ile blnmektedir. Blme ileminde, nce CWDkomutu ile AX'teki iaretli say DX:AX saklayc iftine 32-bit olarak evrilir. Blmeileminden sonra AX'te blm (-22) ve DX'te kalan (-2) bulunur.

    MOV AX, -200

    MOV CX, 9

  • 7/30/2019 8086 Mikroilemci Ders Notu

    44/77

    44

    44

    CWD

    IDIV CX

    BCD ve ASCII Aritmetik

    8086/8088 mikroilemcide bu komutlar sayesinde ikili kodlanm ondalk (Binary CodedDecimal - BCD) ve ASCII formatnda saklanansaylar zerinde ilemler yaplabilir.

    BCD Aritmetik

    DAA (Decimal Adjust af ter Addition)DAS (Decimal Adjust af ter Subtraction)

    AAM (AdjustAfter Multiplication)

    AAD (Adjust Before Division)

    DAA, DAS ve AAM komutlar BCD saylarn toplama, karma ve arpma ilemlerinden sonra;AAD ise DIV komutunu kullanmadanncesaylar ayarlama iin kullanlr.

    Saylar toplama ve karmada 1-byte olarak 2 hane paketlenmi BCD formatnda AL' desaklanr.Eer 1- byte ierii 25H ise ve bu bir BCD sayy belirtiyorsa bu say BDC kodlu 25saysdr. Yani bu byte 2 ve 5 BCD hanelerini iermektedir.

    arpma ve blmede ise saylar 1-byte 1 hane olacak ekilde paketlenmemi BCD saylarolarak saklanr. rnein AL 04 ise, bu say BCD 4'e karlk gelir.

    DAA komutu iin rnek :

    Aadaki rnekte BX ve CX saklayclarnda bulunan 4 haneli BCD saylar toplamakta, sonucuDX saklaycsnda saklamaktadr. lk DAA komutunun kullanmndan nce, 99 ve 34 saylartoplanarak BCD olmayan CD says retilmitir. DAAkomutu bu ilemi C bayranda 1 ve AL'de 33 yaparak dzeltmektedir. Daha sonra 12 ve 30 elde bayrayla beraber toplanmakta ve43 bulunmaktadr. Bu saynn haneleri BCD olduundan, ikinci DAA komutundan sonra busayda bir deiiklik olmaz. Sonu olarak, DX saklaycsnda 4333H veya 4333 BCD kodubulunur.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    45/77

    45

    45

    MOV BX, 1234H

    MOV CX, 3099H

    MOV AL, BL

    ADD AL, CL

    DAAMOV DL, AL

    MOV AL, BH

    ADC AL, CH

    DAA

    MOV DH, AL

    DAS komutu iin rnek:

    Aadaki rnekte BX ve CX saklayclarnda bulunan 4 haneli BCD saylar kartmakta ve

    sonucu DX saklaycsnda saklamaktadr. DAS komutu DAA gibi almaktadr. Bu komutkarma ileminden sonra AL' yi ayarlamada kullanlr. ADD ve ADC komutlar SUB ve SBB ile ve DAA komutu DAS ile yer deitirmitir. Bu program altrldnda DX saklaycsnda 1865BCD says bulunur.

    MOV BX, 1234H

    MOV CX, 3099H

    MOV AL, CL

    SUB AL, BL

    DAS

    MOV DL, AL

    MOV AL, CH

    SBB AL, BH

    DAS

    MOV DH, AL

    AAM

    ki tane tek haneli paketlenmemiBCD saynn arpma ileminden sonra kullanlr. AadakirnekteAL saklaycsnda bulunan 5 ile CL deki 6 saylararplmaktadr. arpma ilemindensonra AX saklaycsnda 1EH (30) bulunur. Bu BCD olarak doru bir gsterim deildir. AAMkomutundan sonra AX saklaycs 0300H veya 2haneli paketlenmemi 30 BCD sonucunaevrilir.

    MOV AL, 5MQV CL, 6MUL CLAAM

    AAD

    Bu komut ncekilerden farkl olarakblme ileminden ncekullanlmaktadr. AAD komutu AXsaklaycsnda 2-haneli paketlenmemibir BCD saynn var olduunu varsayar (AH en deerlihaneyi, AL ise dier haneyi tutar). Bu 2-haneli BCD say, tek-haneli bir BCD say ile

  • 7/30/2019 8086 Mikroilemci Ders Notu

    46/77

    46

    46

    blnmeden nce AAD komutuylaikili sayyaayarlanmaldr. Bu sayede yaplan blme ilemisonucunda, AL saklaycsnda tek-haneli sonu ve AH' te kalan retilir. AAD komutupaketlenmemiBCD saylar 00 ile 99 arasnda ikili saylara evirir.

    Aada paketlenmemiBCD 72 saysnn 9 ile blnme ilemini gerekletirmektedir. AADkomutuyla AX saklaycsnda bulunan 0702H says, yine AX' de 0048H saysna evrilir. Bu

    ekilde BCD say ikili sayya evrilir. Bylece, ikili blme komutu D IV ile doru blme ilemiyaplarak AL' de 08H ve AH' da 00H bulunur.

    MOV BL, 9H

    MOV AX, 0702H

    AAD

    DIV BL

    ASCII Aritmetik

    ASCII aritmetik komutlar 0 ile 9 arasndaki saylarn ASCII-kodlar (30H-39H) ile yaplacakilemlerde kullanlr.

    AAA (Adjust for ASCII Addition)

    AAS (Adjust for ASCII Subtraction)

    Bu komutlar her zaman AX. saklaycsn ayarlama ileminden nce kaynak ve sonra hedefolarak kullanr.

    AAA

    rnein 31H (1) ile 39H (9) saylarn toplarsak sonu 6AH olur. Bu ASCII toplama (1 + 9)ilemi 10 ondalk saysna kar gelen 31H ve 30H ASCII-kodlu 2-haneli bir ASCII sonucuretmelidir. Eer bu toplamadan sonra, AAA komutu yrtlrse, AX saklaycs 0100H ierir.Bu sonu ASCII olmamakla beraber, 3030H eklenerek ASCII koda evrilir ve 3130H elde edilir.

    MOV AX, 0031H ;ASCII 1ykle, AH' i temizleADD AL, 39H ;ASCII 9 ile topla

    AAA ; ASCII toplama sonu ilk ayarlama

    ADD AX, 3030H ;Sonucu ASCII olarak ver AX=3130H

    AAS

    AAS komutu AAA gibi, ASCII karma ileminden sonra AX. saklaycsn ayarlar.

    LOJK LEMLER

    Lojik ilem komutlar yardmyla ikili bit kontrol rahatlkla yaplabilir. Btn lojik ilemlerbayrak bit' lerini etkilerler: her zaman elde ve tama bit' leri temizlenir ve dier bayraklarsonucun durumuna gre deer alrlar.

    AND, OR ve XOR Komutlar

    Lojik arpma ilemi AND komutuyla gerekletirilir. kili saylarda her hangi bir bit'i sfrlama(temizleme) ilemine maskeleme (masking) ad verilir. AND ilemi sayesinde bir verikelimesinde istenmeyen bit' ler temizlenebilir.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    47/77

    47

    47

    Aada 16-bit bir ASCII saynn AND komutuyla yani ASCII saydaki her bir veri hanesinin ensol 4 bit' i temizlenerek (maskeleme) BCD koda evrilmesigsterilmektedir.

    MQV CX, 3531H ;2 haneli ASCII sayy ykle

    AND CX, 0F0FH ;CX i maskele

    Lojik toplama ilemi OR komutuyla gerekletirilir ve kili saylarda her hangi bir bit'i 1 leme(setleme) ileminde kullanlabilir.

    Aada iki say arpldktan sonra AAM komutu kullanlarak 2-haneli paketlenmemi BCDsayya evrilmektedir. OR AX,330H ilemiyleAX dekisay 2-haneli ASCII-kodlu sayya evrilir.OR komutundan nce AX saklaycs 0305H iermektedir. OR komutundan sonra AX=3335Holmaktadr.

    MOV AL,5 Veriyi ykleAND BL, 7

    MUL BL AX = 5*7

    AAM Paketlenmemi 2-haneli BCD ayar AX=0305H

    OR,

    3030 ASCII'ye evir

    XOR ilemi tanm gerei (XOR ileminde giriler farkl ise k lojik 1 ayn ise k lojik 0)

    karlatrma ilemi olarak da deerlendirilebilir.

    XOR AX, 0FFC0H ; AX saklaycsnda bulunan bit' lerin en-sandaki 6 bit deitirilmedenen-solundaki 10 bit' nin tersi alnmaktadr.

    XOR AL, AL ; Bu komutla AL temizlenmektedir bu ilem MOV ile yaplsayd dahauzun srecekti nk fazladan bir hafza okuma ilemi gerektirmektedir

    MOV AL, 0

    TEST Komutu

  • 7/30/2019 8086 Mikroilemci Ders Notu

    48/77

    48

    48

    TEST aslnda bir AND ilemi gerekletirir ancak ilem sonucunda hedef veya kaynakoperandlar deimemektedir sadece TEST sonucuna gre bayrak saklaycsnndurumunu etkilenir.

    TEST komutu yapt ilem itibariyle bir karlatrma CMP (Compare) komutu gibi kullanlr.TEST ilemi normalde tek bir bit'i test eder CMP komutu ise btn bir byte veya kelimeyi(word) test eder. Test edilen bit sfr ise Sfr bayra (Z) lojik l'dir (Z = 1, sonu sfr), sfr deilise lojik 0' dr (Z = O, sonu sfr deil).

    CMP komutunda olduu gibi TEST komutundan sonra JZ (Jump Zero) veya JNZ (Jump NotZero) gibi bir dallanma komutlar kullanlr. Aada verilen rnek program bu kullanmgstermektedir.

    TEST AL, 1 ;en sadaki bit i test etJNZ RIGHT ;eer 1 ise dallanTEST AL, 128 ;en soldaki bit i test etJNZ LEFT ;eer 1 ise dallan

    NOT ve NEG Komutlar

    NOT ilem ile Lojik ters-alma veya verinin 1' li tmleyeni ve NEG ilemiyle aritmetik iarettersleme veya 2' li tmleyeni elde edilir. Sadece tek operand kullanrlar.

    NOT bir lojik ilem olarak; NEG ise bir aritmetik ilem olarak dnlebilir.

    NOT ve NEG komutlarnn baz kullanm rnekleri.AssemblyDiIi Yaplan ilemNOT CL CL = CL'

    NEG CL CL= CL' + 1 (2'nin tmleyeni)NEG AK AX=AX' + 1 (2'nin tmleyeni)

    NOT TEMP

    DS'te bulunan TEMP ile adreslenen verinin bit'leri

    terslenir. TEMP ile adreslenen verinin boyu TEMP' in

    tanmlanmasna baldr.NOT BYrE PTR[BX] DS'te bulunan BXile adreslenen l-byte verinin bit'leri

    terslenir.

    Kaydrma ve Dndrme

    Kaydrma (Shift) ve dndrme (Rotate) komutlar, AND, OR, XOR ve NOT komutlarndaolduu gibi ikili saylar zerinde ikili bit seviyesinde ilem yapmaktadr.

    Kaydrma Komutlar

  • 7/30/2019 8086 Mikroilemci Ders Notu

    49/77

    49

    49

    Kaydrma komutlar 2' nin katlar ile arpma (sola kaydrma) ve blme (saa kaydrma)ilemlerinde kullanlr.

    SAR komutu ile aritmetik saa kaydrmailemi (eer say pozitif ise, sola '0' kaydrlr negatif

    ise, en sola '1' kaydrlr) gerekletirilir yani iaret bit'i kendi zerinde dnmektedir. Ensadaki bit elde bayrana (C) girer. Grld gibi SAR komutu iaretli sayy 2' yeblmektedir.

    Aritmetik kaydrmada kaydrma adedi komuta operand olarak girilen CL ierii ilebelirlenebilir.

    SHR komutu ise lojik saa kaydrma ilemi gerekletirir yani iaretsiz sayy 2 ye bler.

    Kaydrma komutlarnn baz kullanm rnekleri.

    AssernblyDili Yaplan lem

    SHL CX Lojik olarak CX'i sola kaydr

    SHR AX Lojik olarak AX'i sa; kaydr

    SAL BUFFER, CLAritmetik olarak DS' de bulunan BUFFER' sola CL'de bulunan say

    kadar kaydr

    SAR SI Aritmetik olarak SI' ysaa kaydr

    Dndrme Komutlar

    Dndrme komutlar bir saklayc veya hafza adresindeki veriyi bir ucundan dierineveya elde bayra zerinden dndrmektedir.

    Dndrme ileminde dndrme adedi komuta operand olarak girilen CL ierii ilebelirlenebilir.

    Dndrme komutlarnn baz kullanm rnekleri.AssemblyDili Yaplan lem

    ROL DI DI sola 1 bit dner.RCL CL CL sola elde zerinden 1 bit dner.ROR AH,CL AH sola elde zerinden CL'de bulunan say kadar dner.

  • 7/30/2019 8086 Mikroilemci Ders Notu

    50/77

    50

    50

    RCR WORD PTR[BP]SS' de bulunan ve BP ile adreslenen 16-bit kelime saa 1bit dner.

    PROGRAM KONTROL KOMUTLARI

    Program icrasn ynlendirmek ve program aknn deimesini kontrol etmekmaksadyla JMP (dallanma), CALL (altprogram arma), RET dn, kesme (INTERRUPT)ve ilemci kontrol komutlar gibi Program kontrol komutlar kullanlabilir. Dallanma ileyaplan programlarn ak kontrol genellikle bir CMP veya TEST komutuyla bir testileminden sonrakoulabal dallanma komutuyla gerekletirilir.

    Dallanma Komutlar

    JMP komutu hafzann bir blmnden dier bir blmne program akn ynlendirentemel program dallanma komutudur. Koula bal dallanma komutlar ise bayrak bit'lerinin durumuna gre (bir durum testi sonucu) program akn deitirir.

    DORUDAN DALLANMALAR

    Daha nce de bahsedildii gibi JMP komutu 3 deiik ekilde kullanlr: Ksa (short)dallanma, yakn (near) dallanma ve uzak (far) dallanma.

    Ksa Dallanma

  • 7/30/2019 8086 Mikroilemci Ders Notu

    51/77

    51

    51

    Bellekte herhangi bir yere deiiklik yaplmadan tanabildiinden Greceli (relative)dallanmalar olarak da bahsi geen ksa dallanma 2-byte komut uzunluuna sahip olupilem kodundan sonraki ikinci byte iaretli adres bilgisidir ve bu sayede kendisini takipeden hafza adresinden itibaren, + 127 ile -128-byte arasnda bir hafza hcresine

    dallanmay salar.

    Program bellekte EB (DISP) ile IP=IP+(DISP) yaplarak dallanma salanr

    Yakn Dallanma

    Ksa dallanmaya benzeyen yakn dallanma 3-byte bir komuttur ve o anki CS iinde herhangibir adrese dallanmay salar. lem kodundan sonra CS iin 16-bit Ofset adres yer alr.

    Uzak Dallanma

    Ksa ve yakn dallanmalar genellikle segment ii dallanma (inter segment jump) olarak uzakdallanma ise segmentler aras dallanma (intersegment jump) olarak adlandrlr dolaysylauzak dallanma komutlar mikroilemcinin hafza adres alanndaki herhangi bir adresedallanmay salar. Programc dallanmalarda JMP komutundan sonra bir adres etiketi (Iabel)kullanr. Kullanlan assembler dallanmann uzunluuna gre ilem kodu ve adres retir. Buyzden programc iin yaplacak tek ey JMP' tan sonra dallanlacak yerin etiketini yazmaktr.

    Saklayc Operand' l Dallanma

    Bu dallanma komutu bir 16-bit saklaycy operand alarak dallanlacak adresi belirlemedekullanlabilirbu yzden dallanma tablosu kullanarak dallanlan programlar iin ok uygundur.Bu tr dallanma, dolayl dallanmadr ve saklaycnn iindeki veri dallanma adresi olarakkullanlr. Saklaycnnierdii adresi IP olarak alnr ve program bu adresten itibaren devameder.

    Aada, TABLO adresinden balayan bir dallanma tablosunda bulunan 4 farkl altprogramadresine erien bir rnek verilmektedir. Altprogram adresleri 16-bit olduu iin, bu adresler,TABLO balang adresinden itibaren TABLO+0, TABLO+2, TABLO+4 ve TABLO +6adreslerinde yer almaktadr. Program banda SI' da 0,1,2 veya 3 olduu varsaylmakta ve ikikat alnmaktadr. Daha sonra TABLO taban adresiyle bu adres toplanarak dallanlacakaltprogram adresi bulunur ve JMP AX ile bu adrese dallanlr.

    ADD SI, SI ; SI' nin 2 katADD SI, QFFSET TABLO ;altprogram adresleri iin taban adresMOV AX, CS: [SI] ;adresi AX' e al

    JMP AX ; altprograma dallan

    TABLO DW SUBO ;4 ALTPROGRAM ADRES TABLOSU

    DW SUBI

    DW SUB2DW SUB3

    ndisli Adresleme Kullanan Dolayl Dallanma

  • 7/30/2019 8086 Mikroilemci Ders Notu

    52/77

    52

    52

    Bu tip dallanmada indisli adresleme kullanarak bir dallanma tablosuna eriebilir. Dallanmatablosu yakn (near) dolayl dallanmada ofset adresleri veya uzak (far) dolayl dallanmadasegment ve ofset adresleri ierir. Yukardaki programn indisli adresleme kullanan ekliaada verilmitir.

    ; Dallanma tablosu rneiADD SI, SI ; SI'nin 2 katADD SI, OFFSET TABLO ;altprogram adresi

    JMP CS: [SI] ;altprograma dallan

    TABLO: DW SUBO ;4 ALTPROGRAM ADRES TABLOSU

    DW SUBI

    DW SUB2

    DW SUB3

    Yukarda verilen programda, dallanma tablosuna eriim, normal hafzaya eriim gibidir.

    Burada kullanlan JMP CS:[SI] formundaki komut CS hafzada bulunan ve SI ile adreslenenprogram bellek a