You are on page 1of 77

1

D1 CPU (CENTRAL PROCESSING UNIT): Merkezi lem Birimi; programla srlen saat modlu ardl bir devre olup grevleri: 1) Program emirlerini almak, zmlemek ve uygulamak 2) 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 tek BUS bir cihaz tarafndan srlp bir ok cihaz tarafndan kullanlabilir. Data Bus datalarn transferinin 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 arttrlmas sisteme baz eklemelerin yaplmas ile olabilir. Harici cihazlar (yazc, izici, disk, vs...) bu tip eklemelerdir. Bu tip cihazlarn sisteme dorudan balanmasnn dourduu sakncalar ortadan kaldrmak iin arayz veya yzletirme elemanlar kullanlr. Aksi takdir harici cihazlar hatlarn kullanmnda karklklara neden olabilirler. PIA (paralel interface acces) paralel arayz eleman, SIO (serial input output) seri giri k eleman, giri/k arayz elemanlarna rnek olarak verilebilir. DMA (DIRECT MEMORY ACCES): Direk bellek eriimi eleman. Hzl data transferi gerektiinde kullanlr. CPU ile yapt bir dizi haberleme sonucunda CPU yu devre d brakp bus lar teslim 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 olan aritmetik ilemleri yapabilen co-processorlerdir. CPUya yardmc olduklarndan hz arttrrlar. CO-PROCESSOR: Yardmc ilemci. CPU ile birlikte alr. Kendi bellei vardr. ALU (ARITMETIC LOGIC UNIT): CPU iinde bulunur ve emirlerle ilgili lojik ilemleri icra ederler. 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 kk ve basit mikro emir kodlarna zlr ve ne i iin kullanlaca anlalr. Emir kodlar bu ekilde basit mikro emir kodlar yardmyla icra edilir. Program bellee ilk eriimde her zaman ilk kodun emir olduu varsaylr ayrca her bir emrin icras tamamlandktan sonra, program bellekteki bir sonraki kod yine CPU tarafndan emir kodu olarak alglanr. Yani CPU her emrin icrasndan sonra tekrar emir bekler.

1) MKROBLGSAYAR DONANIMI Mikrobilgisayarlar kullanm amacna gre uygun bir donanm ierirler. Tasarmdaki nemli sorunlar, kullanlacak olan bellek elemanlarnn, Giri/k kaplarnn vs. amaca uygun biimde adreslenebilmesidir. Akas RAM/ROM ve deiik amal Giri/k kaplarna bellek haritasnda uygun adreslerin kar drlmesi salanmaldr. ADRES BUS
10 BT 0-1023

CPU CPU
(MPU) DATA BUS
ROM

Clock
INPUT/

Output

ekil 1-1
Verilen bir adresteki elemann (RAM,ROM,PIO,SIO) seimi uygun donanmla yaplmaktadr. Adres bilgisi bir kod zcnn giriine uygulanmakta ve kod zcnn k adres blgesinde kullanlacak olan 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 en anlamsz 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 hat zerinden balanr. Data Bus ve Adres Bus, bu bus lar kullanan tm elemanlar ve CPU tarafndan ortak olarak kullanlmaktadr. CPU nun data bus na balanan tm elemanlarn herhangi bir data arpmasna yol amamas iin Yksek-Empedans ( konumlu/three state ) zelliine sahip olmalar gerekmektedir. ekil 1-1 de basit bir mikrobilgisayar sisteminin yaps verilmitir. Mevcut bir mikrobilgisayar sisteminde bellek kapasitesi veya giri/k kaps yeterli deilse ek bir donanmla bu sorun zlebilir. Yani bir mikrobilgisayara bellek ilavesi yapmak veya seri veya paralel giri/k kaps ilave etmek mmkndr. ekil 2 deki rnekte bir RAM ve ROM bellein, bir mikrobilgisayara nasl eklendii gsterilmitir.

ekil 1-2 de grld gibi bu kapasite arttrma ileminde RAM ve ROM bellein databus CPUnun databusna balanr. CPU nun adres bus ise gerekirse baz kontrol hatlar ile birlikte bir kod zcye uygulanr ve kod zcnn kndan retilen iaretle istenen RAM veya ROM seilir. Seilen bellek elemannn ulalmak istenen hcresi de anlamsz adres hatlarnn bellek elemannn ilgili adres bacaklarna uygulanmas ile salanr.
2

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

DATA BUS

DO-D7

R/W

R/W

D0-D7 D0-D7

MKRO LEMC

Kontrol Bus

KOD ZC

__ CS RAM ROM

A0-A15

A0-A15 A0-A15 __ CS A0-A17

ADRES BUS

ekil 1-2
16 BT ADRES BUS

8 BT DATA BUS

6 BT
Adres Kod zc

10 BT 0-1023

PROGRAM BELLEK

Adres Kod zc

CPU

CS CE
DATA BELLEK

8 bit kap RD
PIA

APU
DMA

WR

HARC CHAZ

Kontrol

Hatlar

ekil 1-3

KONTROL BUS

ADRES UZAYINDA BELLEK HARTAMA ve KOD ZCLERLE BELLEK ORGANZASYONU 16 bit adres busa sahip cpu ya 4Kb bellek segmenti, A000H adresinden itibaren Eriilecek ekilde eklenmek isteniyor. Gereken bellek adres organizasyonunu vererek (bellek eriim balang ve eriim son adresleri) kod zcde kullanlacak adres Ularn belirleyip kod zcy tasarlaynz.
A15 1 1 1 A14 0 0 0 A13 1 1 1 A12 0 0 0 A11 X 0 1 A10 X 0 1 A9 X 0 1 A8 X 0 1 A7 X 0 1 A6 X 0 1 A5 X 0 1 A4 X 0 1 A3 X 0 1 A2 X 0 1 A1 X 0 1 A0 X 0 1 (AXXXH) Balang (A000H) Son (AFFFH) Son hexal

A ADRES KOD Z N

F F F BELLEK ERM ADRESLER, 12BT ADRES ULARI LE 4Kb BELLEK ALANI

Hexal 16l notasyonda veri ve adres yazm iin AFFFH, AFFF$ veya 0XAFFF Kullanlabilir. 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 kullanlmas gerektii aka grlmektedir. Genelde deimeyen en anlaml adres bitleri bellei seecek areti reten kod zc tasarmnda kullanlrlar.

A15

A14 A13

AXXXH

CS alak aktif

A12

16 bit adres busa sahip cpu ya 4Kb bellek segmenti A000H adresinden itibaren Eriilecek ekilde eklenmesi iin gereken kod zc Adres uzayn 4kb bellek segmenti bu kod zc ile seilebilir. Bellek eriim adres aral A000H-AFFFH olacaktr.

2000H adresinden itibaren eriilemek istenen 2Kb EEPROM (2716) bellek eleman iin gereken bellek adres organizasyonunu vererek (bellek eriim balang ve eriim son adresleri) kod zcde kullanlacak adres ularn belirleyip kod zcy tasarlaynz.
A15 0 0 A14 0 0 A13 1 1 A12 0 0 A11 0 0 A10 0 1 A9 0 1 A8 0 1 A7 0 1 A6 0 1 A5 0 1 A4 0 1 A3 0 1 A2 0 1 A1 0 1 A0 0 1 Balang (2000H) Son (27FFH)

ADRES KOD Z N

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

Adres uzaynda yukardaki tabloda haritalanan 2kb bellek segmenti (2000H-27FFH): 11 bit bellek eriimi iin ve kalan 5 bit adres kod zc iin kullanlmas gerektii aka grlmektedir. A15+A14+A13+A12+A11 = 2000H..27FFH olacaktr. Bellek elemann seimini Salayan bellek ucuna gelecek iareti (burada yine alak aktif olsun) reten kod zc Deiik yntemlerle tasarlanabilir, gereken iareti en anlaml adres bitlerinden retecek kod zc basit kombinasyonel lojik devrelerle yaplabildii gibi NAND, NOR Tasarmyla veya zel kod zc entegreleriyle (rnek 74LS138 3 to 8 line decoder) de yaplabilir

A15 * A14 * A13 * A12 * A11 = 2000H..27FFH NAND kaplaryla gerekleme A15
74LS04 hex inverter 74LS30 8 girili NAND

A14 A13 A12 A11

2000H..27FFH CS alak aktif

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

Intel 8086 ilemcinin adres bus genilii 20 bittir. 00000H den balayan 128Kb RAM bellek iin gereken bellek adres organizasyonunu vererek (bellek eriim balang ve eriim son adresleri) kod zcde kullanlacak adres ularn belirleyip kod zcy tasarlaynz.
A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0

0 0

0 0

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

0 1

ADRES KOD Z N

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

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

A19

A18 A17

CS alak aktif

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

2) BAST BR CPU (MKRO LEMC) MMARS Basit bir CPU nun i mimarisi Kontrol Birimi,Genel Amal Kaydediciler, zel Amal Kaydediciler, 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 kaydediciler grlmektedir.
7 6 5 4 3 2 1 0
Akmlatr Data Counter Program Counter Instruction Register Index Register Stack Pointer Genel Amal Reg.

Akmlatr (A): lem sonularnn tutulduu, bellee gnderilecek veya bellekten okunacak bilgilerin tutulduu birim. Sadece kaydedicidir, D Flip-Flop lardan olumu bir dizi gibi dnlebilir. Her CPU da mutlaka en az bir tane bulunmaldr. Genilii databus genilii kadardr.

Data counter Register (DC) : Data bellei adreslemeye yarayan bir kaydedicidir. Her CPU da bulunmas gerekmez. Genilii adres-bus genilii kadardr. Program Counter (PC) : Program bellei adreslemeye yarayan ve her program bellek eriiminden 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 bu ok nemlidir. Adres-bus geniliindedir. Instruction Register (I;Emir Kaydedici) : Program bellekten, program counterin adresledii yerdeki emrin, kodunun zlp icras ilemleri srasnda kaydedildii register. Emir kodlar CPU nun iinde bulunan Kontrol nitesinde mikro program kodlarna zlr ve ne i iin kullanlaca anlalr. Program bellee ilk eriimde her zaman ilk kodun emir olduu varsaylr ayrca her bir emrin icras tamamlandktan sonra, program bellekteki bir sonraki kod yine CPU tarafndan emir kodu olarak alglanr. Yani CPU her emrin icrasndan sonra tekrar emir bekler. Index Register: Data bellei adreslemek iin kullanlr, adres-bus geniliindedir. Stack Pointer (SP): Stack (yn) bellei adreslemeye yarayan, adres-bus geniliinde bir kaydedicidir. Bellein (zellikle program bellein) kullanc tarafndan adreslenmesi ve kaydedicilerin deiik amalar iin kullanlmas srasnda, ayn zamanda CPU tarafndan da kullanlan kaydedicilerin ieriinin deimesinden dolay baz sakncalar ortaya kar, program bir nevi virslenmi olur. Byle durumlarda kaydedicilerin ierikleri gerektiinde tekrar buradan alnmak iin stack pointerde tutularak bu sakncalardan kanlabilir. Altprograml almalarda veya interruptl almalarda; alt programdan veya interrupt servis programlarndan nce ve bunlardan dnte kaydediciler stack bellee nce atlr ve dnte buradan geri arlarak ana programn icrasnn devamll salanm olur. Bu tip almalarda ana program kesilir ve alt veya interrupt servis program CPU tarafndan koulmaya balar, bu ilem bitince CPU nun ana programn neresinde ve hangi ilemde kaldn bilmesi veya CPU ya bu bilgilerin (A, DC,PC,SP....) bildirilmesi kesin gerekmektedir. Genel Amal Registerler: Akmlatre benzerler. Ara sonularn sk kullanlan bilgilerin tutulduu kaydedicilerdir. D2 Aadaki ekilde basit bit CPU nun programcya ak ve kapal olan birimleriyle beraber 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.

CPU nun i mimarisindeki Data ve Adres BUS genilikleri CPU dan dar olan Data ve Adres BUS genilikleriyle eit veya daha uzun olabilir. rnein 16 bitlik bir CPU ya ait i Data BUS 32 bit geniliinde olabilir.
DATA BUS ALU Durum Bayraklar (Status Flags) Kaydrc (Shifter) Tmleyici (Complementer) A DC PC I

Toplama ve Boole Lojii (Addition and Bole Logic)

KONTROL BRM Buffer Kaydedici

DATA BUS

*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 bu deer 64K olarak kabul edilir.
8 bit 6 BT Adres Kod zc C0 C1 C63

1111111111

3FFH

10 bit 2 =64 adet seim kombinasyonu ve 10 bitlik adres yolu ile 1024 adet bellek alan sonu olarak toplam 64x1024=64K lk bellek alan bu ekilde adreslenebilir ve kullanlabilir. 0000H
6

0000000000

000H

Stack (Yn) Bellek: Alt programl veya interrupt (kesme) ile alld zaman CPU nun ana programa dnn salamak ve ilemi kald durumdan tekrar devam ettirebilmek iin baz veri veya kaytlarn tutulduu bellek blgesidir. Alt program veya interrupt dan nce gerekli bilgiler (AX,BX,CS,DS.gibi) stack bellee atlr, alt program veya interruptl alma bitince daha sonrada tekrar bu bilgiler yndan alnarak ana programn almasna kalnan yerden devam etmesi salanr. POP ve PUSH

0001H

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

CPU Tarafndan Program Bellek Data Bellek Stack (Yn) Bellek

FFFFH

** 0A30H ve 0A31H adreslerindeki 1 bytelk verileri toplayarak sonucu 0A31H adresine yazan bir programn icras iin; 1) 2) 3) 4) 5) 6) Toplanacak ilk veri iin data bellek adresini belirle, Bu adresteki veri CPU ya transfer et (A akmlatrne yaz) Toplanacak ikinci veri iin data bellek adresini belirle, Bu adresteki veri ile 2. admda CPU ya alnan veriyi topla, Sonucun saklanaca bellek adresini belirle, Sonucu bu adrese yaz.

Bu ilem admlarn srasyla yapacak olan komutlarn program bellekte emir kodlar olarak mevcut 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 yer kaplayabilirler. Program bellek, data bellek, ..vs blgeleri aslnda ayn bellek yongas zerindedirler ve baz durumlarda i ie yer alabilecekleri bir yerleime de sahip olabilirler. Programlama esnasnda 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 bellek adresindeki veriyi CPU ya (Akmlatre) transfer

10

Eder ki bu da 2. adm oluturur. 3. adm ile 1. adm birbirinin aynsdr sadece adres deeri deitirilir. 80 emir kodu toplama ilemini yapar yani 4. adm. nceki sonraki emir kodlar tarafndan gerekletirildiinden 5. adm gereksizdir. 60 emir kodu A da tutulan sonucu data bellein belirlenen adresine yazar, bu esnada kontrol BUS iindeki W ucu CPU tarafndan aktif edilir. CPU program bellekten ald emir kodlar ile belirlenen tm bu ilemleri yaparken; kontrol biriminde zlen emir kodundan oluan mikro emirlere bal olarak A, DC, IP, PC kaytlarnn ieriini de gerekli ve srekli bir ekilde deitirir veya gnceller. **CPU Kaytlarnn bu rnekte kullanm:

9C 30 0A 40 9C 31 0A 80

Emir Kodu IMMEDIATE DATA Data bellekten Transfer Aya

Toplanacak 2. verinin adresini belirle 2. admda CPUya alnan veri ile 0A31 adresindeki veriyi topla sonucu CPU da tut, sonu A da kalr Toplam0A31 adresine yaz

60

Programn 0400H adresinden itibaren program bellekte mevcut olduu varsaylrsa ilk nce PC=0400H adresi ile yklenerek programn ilk koduna eriilmi olur. 7 A DC PC I 6 5 4 3 2 1 0 -------7A----------0A31 --0403H

------------0A30 0400H---04001H---04002H-9C----40----------9C

Yukar program icra edilirken kaytlarn ieriinin srasal bir biimde emir kodlarna uygun biimde deitii grlmektedir.

Adres/ PC 0400H 0401H

Emir kodu 9C 30

Program Bellek

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


10

11

0402H 0403H 0404H 0405H 0406H 0407H

0A 40 9C 31 0A 80

0408H

60

0409H 040AH ------------------

0A ALINIR (ADRESN YKSEK BYTI) DC=0A30H YAP 0A30H DATA BELLEK ADRESNDEN CPU YA (AKMLATRE) VER TRANSFER, PC=0404H OLUR 9C EMR KODU ALINIR 31H ALINIR (ADRESN DK BYTI) 0A ALINIR (ADRESN YKSEK BYTI) DC=0A31H AKMLATRDEK 07AH LE 0A31H ADRESNDEK 02FH VERLERN TOPLA (BU ARTMETK LEM ALU TARAFINDAN YAPILIR) VE SONUCU A YA YAZ. A=0A9H A NIN ERN DATA BELLEE YAZ. A NIN ER DEMEZ. A DAK SONUC DC NIN ERNDE EN SON 0A31H OLDUUNDAN BU ADRESE YAZILIR. lem bittiinden bundan sonra programn ya sonlandrlmas ya da dallandrlmas gerekmektedir nk son emirden sonra 0409H dan itibaren emir kodu yazlmamtr. JMP veya RESET ile bu ilem gerekletirilebilir.

Data Bellek

0A30H 0A31H

07AH 02FH

JMP ile PC istenilen program bellek adresiyle yklenerek alma ak deitirilebilir. rnein JMP 0400H ile PC=0400H olur yani tekrar baa dnlerek program bir kez daha koulmu olur ve dikkat edilirse eer sistemin enerjisi kesilmezse ayn program blounun sonsuza kadar yinelemeli almas sz konusudur. Bu durumda 0400H ile 0409H arasnda bir sonsuz dng oluturulmu olur ki ayn emir kodlar ayn verileri ayn bellek blgelerine saniyede binlerce kez yazarlar veya okurlar yani ayn ilemler tekrar edilmi olur. Bu ok fazla istenen ve shhatli olan bir durum deildir. Bu yntem yerine: 1) Sonlandrma: 0409H---JMP, 040AH---0409H ile programn sadece bir kere almas salanm olur. st ste veri yazma okuma ve ayn kodlarn tekrar tekrar almas bylece engellenmi olur. 0409H 040AH JMP 0409H

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

11

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 da saatle yaplan bir zamanlama sz konusudur. Bir CPU emri birden ok makine periyodundan oluur. Her makine periyodu ise birden ok saat 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 buna rnektir. 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 adres busdr. Read, Write kontrol hatlar olup bunlarn dnda daha baka kontrol hatlar da CPU larda olmaldr. Emir ve Data Alma (Okuma):
PC erii A0-A15 Adres Kararl Gei

CPU

VCC GND A0 A1 -------

D0 D1 ---D7 READ WRTE ---

A15

READ (okuma)

D0-D7

Emir kodu Emir Kodu Alma Periyodu

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

13

Read aktif olursa (alak seviye) adres busa yerleen adresle adreslenen program bellekteki bilgi okunur ve data busa yerletirilir. Bundan dolay CPU da Read ucunun bulunmas gerekmektedir. Read ucu alak aktif seviyede iken rnekleme yaplr. rnek says kontrol biriminin iindeki mikro programlarn (mikro emirlerin) says kadardr.

PC erii Emir Kodu Adresi Gei

DC erii Data Adresi

A0-A15

READ (okuma)

D0-D7

Emir kodu Emir Kodu Alma Periyodu Data Alma Periyodu

Data

Yukarda ise basit bir emir kodu alma ve data alma (okuma) ilemine olan ait zamanlama periyodlar grlmektedir. lemler sonucunda emir kodu emir kaydedicisine, data akmlatre yerletirilir. Data alma periyodu esnasnda; CPU nce PC nin ieriini adres busa yerletirir. Adresin nceden gnderilmesinde yarar vardr. Adres adres busa yerletikten sonraki belli bir noktada read aktif yaplr. Aktiflik sresi de yeterli olmaldr. Srenin sonuna doru read seviyesi 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 gerek duyulmaz 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 saat periyodundan olumakla birlikte verilen rneklerde kolaylk olsun diye bir saat periyodunda gsterilmitir.

Emir Alma ve Data Yazma:


13

14

PC erii Yazma Emir Kodu Adresi Gei

A0-A15

DC erii Yazlacak Data Adresi

READ (okuma)

WRITE (Yazma)

D0-D7

Emir kodu Emir Kodu Alma Periyodu

Data

Data Yazma Periyodu

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 sonra write aktif edilir yani DC nin adresledii data bellee veri yazlr. Bu ilem sras bilginin kararl olmas iin gereklidir. Write seviyesi sresince data yazlr. Yukarda zamanlamalar verilen ve basit olarak bahsedilen ilemler iin gnmz mikroilemcilerinde daha fazla sayda kontrol ucu ve yardmc iaretler devreye girerek emir okuma, data okuma ve data yazma ilemleri gerekletirilir.

14

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). Bir mikroilemcinin en temel grevleri; bellekten komut okuma, komutun kodunun zlmesi ve komutun ilevini yerine getirilmesidir. Bunlarn yan sra bulunduu sistemdeki cihazlarn kontrol edilmesi, sisteme aritmetik ve lojik ilem yapma olana salamak, giri/k birimleri arasnda veri transferinin srekli salanmas ve evre birimlerinin hizmet istek sinyallerine 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 zerinde durulacaktr. Mimari: Aada x86 ailesinin 16-bit ekirdek mimarisinin basit bir gsterimi verilmitir. Buna gre mikroilemci iki temel ayr alma birimine sahiptir; Yrtme birimi (Execution Unit-EU) ve Yol arabirimi (Bus Interface Unit-BIU). EU komutlar yorumlamakta ve yrtmektedir. BIU ise yol ilmlerini (ilem kodu okuma, operand okuma ve gri/k cihazlaryla 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 (Instruction queue) srasyla yerletirilen makine dilindeki komutlarn yorumlanmasn, kodunun zlmesi ve yrtlmesi iin gereken ve ilemleri kontrol eder. EU hafzadan bir operanda ihtiya duyarsa veya yazmak isterse bu ii BIU ya ynlendirir. Bu srada BIU iin gereken fiziksel hafza adresi hesaplama ilemlerini de salar.
15

16

Yol Arabirimi: BIU; btn d yol ilemlerini kontrol eden bir kontrol birimine, EU nun yrtecei komut byte larn tutan komut kuyruuna, fiziksel hafza adresleri retmek iin bir toplaycya, 4 segment saklaycsna (CS, DS, SS, ES), komut iaretisine (IP) sahiptir. Anlalaca gibi BIU hafza ve Giri/k ilemleri dahil btn d yol ilemlerinden sorumludur. BIU komut kuyruuna yerletirmek zere rnein 8086 mikroilemci iin 6 byte komut kodunu nden okuyabilir. Komut kodunun bu ekilde nden okunmas BIU ve EU birimlerinin paralel almasna imkan verir. nceden okunan komutlar icra edilirken yenilerinin bu esnada okunabilmesi ilemcinin performansn arttrr. Bu tarz alan mikroilemci mimarisine ihatl mimari (pipelined architecture) ad verilir. Aada bu zellii bulunmayan 8-bit 8085A mikroilemcisi ile 8086 mikroilemcisinin yol zamanlamas gsterilmektedir.

ekil b de birinci komutun icra edilirken ikinci komutun okunmas (Fetch2) ayn anda paralel yaplmaktadr. Ayn ey pei sra gelen komutlar iinde geerlidir ve bu sayede ilemcinin veri ileme hz arttrlmaktadr. Oysaki klasik mimariye sahip bir mikroilemcide kod zm yaplrken 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 hcresi adresleyebilmektedir. Lojik bellek genelde yazlm tarafndan programcya grlen hafzaya denir. 8086 ilemci 16-bit mimarisine sahip olmasna ramen lojik bellek genilii yine 8-bit tir. Ancak saklayc genilii (16-bit mimari) ve fiziksel bellek tasarm sayesinde 16bit yazma ve okuma yaplabilir. 8086 ilemci 00000H-FFFFFH arasnda 1M byte adres uzunluunda 8-bit yani 1 byte lojik bellee sahiptir. Mikroilemci ile adreslenebilen 16-bit (2 byte) bellek kelimesi (word) herhangi bir byte adresinden balar ve
16

17

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

Fiziksel bellek ise daha ok donanm tasarmcs tarafndan grlen gerek hafza yapsn tanmlar ve lojik hafzadan farkl olabilir. Yanda grlen fiziksel bellek yapsnn avantaj byte veya word verisinin dorudan adreslenebilmesinde yatar. 8086 ilemci bu sayede ve veri adresinin ift olmas salandnda 16-bit bir veriyi bir ilemde okuyup yazabilmektedir. 8-bit ilemci olan 8088 16-bit veri aktarm iin ancak 2 okuma veya yazmaya ihtiya 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 saklaycsna sahip deildir. Bu durumda zm 16 bit saklayclarn adres verilerinin aadaki ekilde gsterildii gibi kullanlmasyla elde edilir.

te bu yap segment ve ofset kavramlarn dourur. 8086 ilemcisinde bellek eriimi segment saklayclar ile salanr. Her segment saklayc 20-bit adresin 16-bit ksmn tutar. Bu 16-bit adresin dk deerli blmne 0H (00002) eklenir. Sonrada 16-bit bir ofset(indis) bu adresle toplanarak 20-bit gerek adres elde edilir. Bu ileme lojik adresin fiziksel adrese evrilmesi denir. segment: Bellein daha kolay adreslenebilmesi amacyla blnd dnlen bellek kesimleridir. Dier bir deyile her bir bellek hcresini kk bir kutucuk olarak dnrsek segment kavramn da bu kk kutucuklardan oluan byk kutucuklar olarak dnebiliriz. Yani Segment adresin setlenmesi ile bu byk kutucuklardan birisinin balang adresi setlenmi olur. ofset: Segment ierisinde bellein her bir hcresi olarak dnebilir. Segment adresin setlenmesinden sonra bu segment iindeki veya bu adresten sonra ulalmak istenen bellek hcrelerinin her biridir. Yani yukarda bahsi geen byk kutucuklarn iindeki her bir kk kutucuklardr.
17

18

rnek: Ulalmas amalanan bellek hcresi iin segment adres: c230H ve ofset adresi: 1200H ise gerek adres: segment adres x 10h + ofset adres , c230hx10h+1200h= c3500h olarak bulunur. Segment adresler ileride de grlecei gibi mikroilemcinin ilgili saklayclarnda tutulurlar, ofset ler ise deiik saklayclardan gelebilir. Kod segment genelde program ve veri alan olarak kullanlabildii gibi esasnda program kodlarnn bulunduu bellek alandr. CS saklaycs bu alann balang adresini iaret eder. 8086 tarafnda yrtlecek bir sonraki kodun adresi CSx10H+IP ile elde edilir. IP komut iaretisi olup kod segmentin ofset adresini ierir. DS saklaycs veri alannn balang adresini iaret eder. Verinin Ofseti veya ofseti ieren dier saklayclar DSx10H deerine eklenerek verinin gerek adresi elde edilir. Her segment 16-bit ofset adresten dolay 64K byte lk bir bellek blounu ierir.

Segment li bellek yaps sayesinde kod, veri ve gerekli dier bellek alanlar farkl hafza blgelerinde alabilmektedir. rnein DS saklaycsna farkl bir adresi iaret eden adres yazlarak 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 yap sayesinde sadece CS deitirilerek deiik bellek alanlarndaki programlar altrlabilir veya program kodlar bellein istenilen yerine yazlarak ve CS nin bu alan gstermesi salanarak altrlabilir. 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 olarak anlalmasn gerektirir. Bu blmde bu yapdan ve bellein segment kaydediciler ve offset adresler kullanlarak nasl adreslendii aklanacaktr. INTEL ailesi bir 8086 mikroilemcinin (Gnmz PC lerinde yaygn olarak kullanla gelen ilemcilerin 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 dier gurup olarak da APU nun (aritmetik ilem birimi veya ALU aritmetik ve lojik birimi) yapt
18

19

ilemler hakknda eitli bilgilerin veya koullarn gsterildii Flag (bayrak) Kaydediciyi sayabiliriz. 32 bitlik kaydediciler EAX, 16 bitlik kaydediciler AX, 8 bitlik kaydediciler AH veya AL biiminde gsterilmektedir. Burada AX rnek tekil etmesi bakmndan bir genel amal kaydedicidir. AH ile AX in yksek byte ve AL ile de AX in alak byte gsterilmektedir.

Genel Amal Kaydediciler: Genel amal kaydediciler programcnn isteine bal olarak her hangi 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 tutulmasnda kullanlr. EAX, AX, AH, AL formlarnda kullanlabilir. BX (Base): Bellein her hangi bir lokasyonunda bulunan bir datann base (offset) adresinin tutulmasnda kullanlr. EBX, BX, BH, BL formlarnda kullanlabilir. CX (Count): Belirli emirlerin icras iin sayma saysnn tutulduu yerdir. rnein kaydrma ve dndrme ilemleri iin gereken kaydrma says CL de veya LOOP emri ile icra edilen dngnn says CX, veya ECX kaydedicisinde tutulur. ECX,CX,CH,CL formlarnda kullanlabilir. DX (Data): Genel amal kullanmnn yannda; ayn zamanda 16 veya 32-bit arpma ileminden sonra arpmn en anlaml ksmnn tutulmasnda, bir blme ileminden nce
19

20

blnenin en anlaml ksmnn tutulmasnda ve en nemlisi de I/O ilemlerinde deiken I/O port numarasnn tutulmasnda kullanlr. EDX,DX,DH,DL formlarnda kullanlabilir. D5 Pointer ve Index Kaydediciler: Bu tip kaydedicilerin genel amal bir yapya sahip olmalarnn yannda daha ok sklkta bir ok emir iin, mevcut segment irerisinde olmak zere ilenen 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 icras esnasnda veya bir altprogramn arld CALL emrinin icrasnda veya bir altprogramdan ana programa 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 String komutlarnda kaynak (Source) verinin dolayl olarak adreslenmesinde kullanlr. ESI,SI formlarnda kullanlabilir. DI (Destination Index): Genel amal bir pointer kaydedici olmakla birlikte daha ok String komutlarnda hedef (Destination) verinin dolayl olarak adreslenmesinde kullanlr. EDI,DI formlarnda kullanlabilir. IP (Instruction Pointer): Daima, mikroilemci tarafndan icra edilecek olan bir sonraki emrin adreslenmesinde kullanlr. Bir sonraki emrin gerek fiziksel adresi CSx10h kod segment adresine IP ofset adresinin eklenmesi ile bulunur yani CSx10h+IPdir. EIP, IP formlarnda kullanlabilir. Veriler bu be kaydediciden drd ile mevcut segment iinde ofsetleri belirlemek amacyla 16-bit formunda daha sk adreslenebilirler ancak IP kullanarak asla adreslenmezler veya adreslenemezler. 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 aritmetik veya lojik emrin icrasndan sonra deiir, bazlar ise mikroilemci zelliklerinin kontrol edilmesinde kullanlr. 8086 flags kaydedici 16-bit geniliinde olup yukar doru uyumludur. Bu anlamda her yeni x86 mikroilemci bir ncekini aynen ihtiva eder. Aada nce 8086 mikroilemciye ait bayrak kaydedici FLAGS ve sonra da 80486 mikroilemciye ait 32-bit EFLAGs (Extended FLAG register) bayrak kaydedici ve ilgili bitleri gsterilmektedir.

20

21

31

30

29

28

27

26

25

24

23

22

21

20

19

18 17 16 15 14 13 12 11 AC VM RF NT IOP IOP O 1 0

10 D

9 I

8 T

7 S

6 Z

4 A

2 P

0 C

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 ilem durumlar 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 iin lojik 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 (en sadai 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 mikroilemci tarafndan kullanlmaz. Z (Zero): Aritmetik veya lojik ilemlerden sonra sonucun sfr olmas halinde lojik 1, dier durumlarda 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 komuttan sonra en anlaml bit S bit ine yerletirilir. I (Interrupt): Mikroilemcinin INTR (Interrupt request, kesme gereksinim) giri bacann almasn kontrol eder. I=1 ise INTR baca yetkilendirilir yani dardan CPU ya kesme istei bildirilebilir. I=0 ise INTR bacana dardan kesme istei bildirilse bile mikroilemci bunu dikkate 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 kaydediciler otomatik olarak azaltlrlar, D=0 iin arttrlrlar. Bir dizi boyunca tekrar edilen ilemler iin artmann veya azalmann ynn kontrol ederler. STD (Set Direction) ile lojik 1, CDT (Clear Direction) ile lojik 0 yaplr. O (Overflow): aretli saylarn aritmetik ilemleri srasnda oluan sonu hedef kaydedicinin veya bellein alabilecei kapasiteyi aarsa lojik 1 olur. rnein 8-bit iaretli kaydedicilerle yaplan; 7fH (+127) ile 01H (+1) says toplandnda sonu 80H (-128) olacaktr. Bu durumda iaretli toplama iin tama olmu demektir ve O biti lojik 1 olur. aretsiz saylar iin bu bayra dikkate alnmaz. Segment Kaydediciler: Segment (kesim) kaydediciler mikroilemci iindeki dier kaydedici yardm 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 balang adresini tanmlar.
21

22

DS (Data Segment): Data Segment, program tarafndan kullanlan verilerin bulunduu bellek blgesidir. DS verilerin bulunduu bellek kesiminin balang adresini tanmlar. Bu adrese ilgili verinin ofset adresinin veya ofset adresi ieren dier bir kaydedicinin ieriinin eklenmesi 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. Yn kesiminde o anki kullanlabilir bellek giri noktas (zellikle yazma: PUSH veya okuma: POP komutlar iin) adresi SP kaydedicisi tarafndan belirlenir. BP (Base Pointer) kaydedicisi de ayn 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, bu yeni deer veya daha nce yazlm olan deer kullanlarak bellein ilgili segmenti seilmi olur. Aada her segment veya kaydedici iin kullanlabilecek offset kaydediciler de gsterilmektedir. Bunlara da bellein offset adresi yazlarak bu ilem tamamlanm olur.
Segment CS SS DS ES Offset
EIP,IP ESP,EBP veya SP,BP EAX,EBX,ECX,EDX,EDI,ESI veya bunlarn 16-bitlik formlar,8-bit,16-bit veya 32-bit bir say EDI,DI

Sonu olarak bellein her blgesi iin gerek fiziksel adres SEGMENTx10h+OFSET ifadesiyle hesaplanabilir.
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-bit tamsaylar; ksa (short) ve uzun (long) gerek saylar (floatin point numbers-kayan noktal saylar) ASCII KOD TABLOSU: Aada kullanlan standart 7 bitlik karakter tablosu verilmi olup gnmz kiisel bilgisayarlarnda geniletilmi (7FH-FFH a kadar olan kodlarla birlikte) ascii tablosu kullanlr
SA

22

23

BASAMAK

X0 0X 1X 2X 3X 4X 5X 6X 7X

X1

X2

X3

X4

X5

X6

X7

X8

X9

XA

XB

XC

XD

XE

XF

BCD (Binary Coded Decimal): Bellekte paketlenmi ve paketlenmemi halde tutulurlar. Pakelenmi BCD, iki BCD hanenin tek bir byte iine yazlmasyla oluur. Paketlenmemi BCD ise her hane tek bir byte iine yazlmasyla oluur. Say 23 237 Paketlenmi 00100011 00000010 00110111 Paketlenmemi 00000010 00000011 00000010 00000011 00000111

BYTE: Byte veriler bellekte iaretsiz veya iaretli olmak zere iki formatta tutulurlar. Aada her iki durum iin bit deerleri belirtilmitir. aretsiz Byte Veri 27 128 26 64 25 32 24 16 23 8 22 4 21 2 20 1

-27 -128

Grld gibi aralarndaki tek fark en anlaml bitin (en sadaki bit) yani iaret bitinin arlndan kaynaklanmaktadr. rnein 80H says iaretsiz olarak 128 deerine sahipken, iaretli olarak -128 deerine sahip olmaktadr. 81H says iaretsiz olarak 129 deerine sahipken, iaretli olarak -127 deerine sahip olmaktadr. Grlebilecei gibi iaretli negatif saylarn en anlaml bit deerinin -128 olmas aslnda bu saynn iaretsiz pozitifinin 2 li tmleyeninden elde edilmesinden kaynaklanr. Yani negatif saylar 2 li tmleyen halinde kullanlrlar. WORD: Byte veri iin sylenenler word veri iinde geerlidir. Bellekte dk byte yksek byte dan nce yer alr. rnein 1000H adresin de yer alan 1234H word says iin 1000H adresinde 34H ve 1001H adresinde 12H yerleir.
23

SOL BASAMAK

0 @ P ` p

! 1 A Q a q

" 2 B R b r

# 3 C S c s

$ 4 D T d t

% 5 E U e u

& 6 F V f v

' 7 G W g w

( 8 H X h x

) 9 I Y i y

* : J Z j z

+ ; K [ k {

, < L \ l |

= M ] m }

. > N ^ n ~

/ ? O _ o

aretli Byte Veri 26 64 25 32 24 16 23 8 22 4 21 2 20 1

24

REAL NUMBERS (Gerek Saylar): x86 mimarisinde gerek saylar veya kayan noktal saylar (floating point numbers) iki para halinde ifade edilir: bir mantissa (normalizeli taban) ve bir exponent (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 zere short real bir kayan noktal saynn gsterimine yer verilmitir. Bu tanm 33-bit gerektirmesine ramen gsterim 32-bit tir. Bunun nedeni mantissann gizli 1-bit iermesidir dolaysyla 23-bit ile ifade edilebilmektedir nk bu bit normalize edilen gerek saynn soldaki ilk bitidir. Say normalize edildiinde deeri 2 den kk ve 1 den byk olacak ekilde tekrar dzenlenir. rnein +12 says ikili (binary) olarak 1100B ile gsterilir. Normalize edilmi hali 1.1x2+3 olacaktr.
31 S 24 23 16 15 8 7 0

Excess-127 exponent

23-bit mantissa

Exponent ise 4-byte short real say iin artk-127 (excess-127), 8-byte long real say iin artk1023 (excess-1023) eklinde tutulur. Dolaysyla 2+3 ss 127+3= 130 (82H) olarak short real say iin ve 1023+3=1026 (402H) long real say iin ifade edilir. Aada deiik saylara ilikin 4-byte short real saynn kayan noktal formatta gsterim rnekleri yer almaktadr.
Decimal (10lu) +12 -12 +100 -1.75 0.25 0.0 Binary (2li) 1100 1100 1100100 1.11 0.01 0.0 Normalized Sign (iaret) 1.1x2+3 0 -1.1x2+3 1 1.1001x26 0 0 -1.11x2 1 1.0x2-2 0 0.0 0 Artk s (excess 127) 10000010 10000010 10000101 01111111 01111101 00000000 Mantissa 1000000 00000000 00000000 1000000 00000000 00000000 1001000 00000000 00000000 1100000 00000000 00000000 0000000 00000000 00000000 0000000 00000000 00000000

8-byte den oluan long real saylar ise ayn yntemle ancak bu sefer 1-bit iaret, 11-bit excess-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 bir kavramdr. 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 adresleme modlarnn aklanmasnda kullanlacaktr.
24

25

MOV komutu kaydedici veya saklayclar arasnda, saklayclarla bellek arasnda 8, 16, 32-bit veri atarm yapabilen ve ok sk kullanlan bir komuttur.

Yukardaki komutta kaynak olan BX iindeki 2-byte (word) veri hedef olan AX ierisine transfer edilir. Bu komutta kaynak hibir zaman deimez. Veri Adresleme Modlar Saklayc Adresleme (Register Addressing): Yandaki tabloda baz deiik saklayc adresleme kullanm ekilleri gsterilmektedir. Komutlarda saklayclar ayn genilie sahip olmaldrlar kark kullanma izin verilmez. Segment saklayclar arasnda aktarmna da izin verilmez. CS saklaycs mov komutu deitirilemez. NEDEN????????? adres

ile

vedi Adresleme (mmediate Addressing): Verinin program bellekte hexadecimal opcode iinde yer ald moddur. Yani veri bellekte ilem kodunu takip eden byte veya byte larda yer alr. Yandaki tabloda baz deiik ivedi adresleme kullanm ekilleri gsterilmektedir.

D6 Dorudan Adresleme (Direct Addressing): Dorudan veri adresleme iki ekilde yaplr. 1)dorudan bir hafza hcresi ile AL veya AX arasnda gerekleen dorudan adreslemeli veri 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 edilen ofset 1234H ise komut mov al, [1234H] komutuna eit olacaktr. Assembly programlama da daha ok adreslerin bu ekli yerine ofset adresleri temsil eden bu tip sembol adresler
25

26

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

Aadaki tabloda ise AX, AL ile hafza arasnda yaplan veri aktarmndaki dorudan adreslemeye rnekler verilmektedir. ok sk kullanlan bu komutlar 3-byte uzunluundadrlar. Hafza ile dier saklayclar arasnda veri transferi yapan dier komutlar 4byte 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.

26

27

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

imdiye kadar ki aklamalardan da anlalaca gibi [..] operatre daima dolayl adresleme iin kullanlr. Ayrca derleyici tarafndan saysal adrese dntrlen sembolik adres (rnek mov al, DATA) ile mevcut allan segment iinde gsterilen ofset adrese OFFSET derleyici 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 ak olarak belirtilmesi gerekir. Bunun iin BYTE PTR, WORD PTR veya DWORD PTR derleyici bildirisi kullanlr. MOV AX, [DI] komutunda hedef 16-bit AX olduundan DS de DI nin ierii ile ofseti adreslenen veri de 16-bit olacaktr. MOV [DI], 10H komutunda ise 10H verisinin ne kadar genilikte bir hafza alanna yazlaca belli deildir. Bunun iin, rnein MOV BYTE PTR [DI], 10H ile DI ile 1-byte hafzann adreslendii belirlenmi olur.

TEKRAR:

MOV BX, OFFSET TABLO MOV CX, 50 IN AL, INPORT MOV [BX], AL

;TABLO nun ofsetini BX e kopyala ;Dng iin saya deerini ykle ;Giri portunu oku ;Veriyi [BX] e kopyala
27

28

INC BX LOOP TEKRAR

;aretiyi 1 arttr ;CX=0 oluncaya kadar dngy tekrar et

Burada TEKRAR: ifadesi ile LOOP dngs iin bir geriye dallanma etiketi (Label) tanmlanm olup 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 (IP ye bu adres yazlarak Program bellek adreslenmi olur) adresin belirlenmesine neden olur. LOOP <Etiket> ile programn almas yukarda bahsedilen etiket ile belirlenen adresten tekrar salanr yani bir dng kurulmu olur. LOOP komutu dngnn her icrasnda CX ieriini 1 azaltr ve kontrol eder. Eer CX=0 ise geri dallanma olmaz program LOOP <Etiket> komutundan sonra gelen komuttan devam eder. Dngye girilmeden nce TABLO ofset adresi ile yklenen BX saklaycsnn ierii, her dngde 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 yola klarak taban saklayclardan BX veya BP den birisi ile bir indis saklaycs (DI veya SI) kullanlarak yaplan adreslemedir. Taban saklayc ou zaman bir hafza dizisinin balang adresini ve indis saklayc da dizideki verinin greceli pozisyonunu tutar. Aadaki tablo eitli 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 al MOV 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 adreslemede taban adresi saklaycs yerine bir deiim ve indis saklaycs kullanlr.
28

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, 30 MOV TABLO[DI], AL Bu kullanmda TABLO[DI] = [OFSET TABLO+DI] adresini retmektedir. Taban Greceli-art-ndis (Base Relative-plus-Indis): Genellikle iki boyutlu hafza dizilerinin adreslenmesinde taban saklayc+indis saklayc+deiim adresleri eklenerek kulanlr.

Aadaki assembly program ve sonrasndaki ekil taban greceli-art-indis adreslemenin almasn ak ekilde gstermektedir. Hafzada DOSYA sembolik adresi ile bir dosyada saklanan ve bir ok kayttan oluan veri blou ierisinden istenilen kayttan veri okunup baka bir kayta kopyalanmas: MOV BX, OFFSET KAYITA MOV DI, 10 MOV AL, DOSYA[BX+DI] MOV BX, OFFSET KAYITF MOV DI, 20 MOV DOSYA[BX+DI], AL ;KAYIT A balang, ofset adresini, taban al ;DOSYA DAN KAYIT A YI OKU ; KAYIT F balang, ofset adresini, taban al ;A NIN YEN YER

29

30

leklenmi ndisli Adresleme (Scaled Inds Addressing): 80386 ve 80486 ilemcilerde kulanlan ve iki 32-bit saklayc gerektiren bir veri adresleme eklidir. Aadaki kullanm ekillerini 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 GOTO komutlarnn kullanmna benzerdir. Programda dallanlacak program bellek adresi yani dallanma adresi ilem koduyla birlikte program bellekte yer alr. Program hafza adresi CS:IP saklayc ifti ile belirlendiinden dolay dallanma bir segmenden dier segmente (intersegment) ve JMP komutuyla yaplacaksa 2-byte sonraki segment adresi iin ve 2-byte bu segmentdeki ofset adresi iin olmak zere 5-byte hafza adresine gerek 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 adreslemeyle program bellein istenilen fiziksel adresine eriilebilir. Gerek (real) modda bellein ilk 1Mb blmne CS:IP yklemeleriyle eriilebileceinden dorudan program bellek adresleme far jump olarak da anlr.

30

31

Anlalaca zere CS=2000H ve IP=0000H deerlerini alacaktr. JMP ile yaplacak dallanma yeri ayn segment iinde farkl bir ofset adrese ise sadece bu ofset adrese gerek vardr dolaysyla ilem kodu 3-byte uzunluundadr. Sadece IP bu ofsetle yklenir. Dorudan hafza adresleme kullanan bir dier komutta CALL komutudur. Assembly programlarda genellikle dorudan hafza adresi yerine dallanlacak hafza adresini temsil eden etiketler kullanlr. Etiket kullanldnda derleyici uygun adresleme eklini seerek 3 veya 5-byte uzunluunda komut retir. Greceli Program Hafza Adresleme: Mikroilemcide u an bir komut icra edilirken IP bir sonraki komut adresini iaret eder. te IP nin ierdii bu adres deerine yaplacak ekleme veya 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 toplandktan sonra 2004H olur ve program ak bu adresten itibaren devam eder.

Greceli CALL ve JMP komutlarnda ilem kodundan sonra gelen yer deiim 1-byte veya 2byte dir. 1-byte (short jump) ile +127 ve -128 byte ileri geri dallanma 2-byte (near jump) yer deiimi +32767 ve -32758 ileri geri dallanma salanabilir. Yer deiim 2-byte dan bykse derleyici 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=0006H olacaktr 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 hafza adresleme 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. Aadaki tabloda bunlara ait rnekler verilmitir.

31

32

JMP [DI+2] mevcut kod segmentte ierisinde, DSx10H+DI+2 ile adreslenen bellekte tutulan adrese dallan Her bir rnekte 16-bit ofset adres esas alnarak dallanma yaplr. ALT0 DW ALT1 DW ALT2 DW ALT3 ; Her biri 2-byte olan 4 farkl altprogram adresini ieren TABLO deikeni tanmlanyor. Buna dallanma tablosu (Jump Table) ad verilir. MOV BX, 4 JMP TABLO [BX] ;ALT2 ofseti ;ALT2 ye dallan TABLO DW

YIIN HAFIZA ADRESLEME (STACK MEMORY ADDRESSNG): Yn tm mikroilemcilerde byk bir neme sahiptir. Verileri geici olarak tutar, alt programlardan dn adreslerini saklar. Yn 8086 da son-giren-ilk-kar (Last-in-First-out LIFO) yapsna sahiptir. PUSH komutlaryla veri ynn stne yerletirilir. POP komutlaryla veri yndan ekilir. Ayrca CALL komutu icra edilirken alt programn dn adresini ynda saklarken, RET komutu icra edilirken yndan bir adresin okunmas gerekleir. Aada 8086 ile kullanlabilecek PUSH ve POP komut rnekleri verilmitir.

POPF ile yndan bayrak saklaycsna 2-byte okuma yaplarak 2-byte lk verinin ynda igal ettikleri adresler boaltlm olur. Yn hafza SS:SP saklayc ifti ile gsterilir. Aadaki ekilde ilk komut PUSH BX yrtlmeden nce SP=0100H ve SS=3000H dr. Bu 30100H fiziksel bellek adresine karlk gelir, SSx10H+SP. Komut yrtlrken nce SP bir azaltlr ve BX in yksek byte (BH) 12H SP ile iaretli 00FFH (fiziksel 300FFH) adresine kopyalanr. Sonra SP bir daha azaltlarak 00FEH
32

33

olur. Bu sefer BX in dk byte (BL) 34H SP ile iaretlenen 00FEH (fiziksel 300FEH) adresine kopyalanr. Bylece PUSH komutu yrtldnde SP?SP-2 olur. SP her zaman yn hafzann 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 kopyalanr ve sonra SP bir arttrlarak SP=00FFH olur. SP (00FFH) ile iaret edilen yn hafzadaki deer 12H DH ye kopyalanr. Bylece ynda dk adreste (300FEH) tutulan veri DX in DL sine ve yksek adreste (300FFH) tutulan veri DX in DH sine kopyalanr. Bylelikle SP=SP+2 olmu olur.

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

34

Adres Ykleme Komutlar Bir saklaycya veya bir saklayc ile bir segment saklaycsna bir adres yklemede kullanlmaktadr. Aadaki Tablo bu komutlarn 3 deiik eklini gstermektedir. LEA (Load Effective Address) LEA komutu, bir saklaycya operand ile belirtilen adresi ykler. Tabloda birinci rnekte, AX saklaycs, operand SUBADR ierii ile deil (yani bu adresteki veri ile deil) SUBADR adresiyle yklenmektedir. Bu emir MOV AX,OFFSET SUBADR komutu ile edeerdir. Adres ykleme komutlarnn deiik kullanmlar. Assembly Dili LEA AX, ADR LDS DI, LIST E LES BX, VECTOR 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 hafzadan mikroilemciye iki tane 16-bit kelime, yani toplam 4-byte veri transferi olur. LDS ve LES komutlar ile, bir program iinde farkl bir DS ve ES alanlarna iaret edilirken, ofset saklayclara da yeni ofset yklenir. ekil LDS BX, [SI] komutu ile SI ile iaretli hafza alanndan bir 32-bit say BX ve DS saklayclarna kopyalanmasn gstermektedir. Yaplan lem AX ADR nin ofset adresiyle yklenir DI ve DS LISTE de tutulan adres ile yklenir BX ve ES VECTOR de tutulan adres ile yklenir

Dizi (String) Komutlar Dizi (string) veri transfer ilemleri iin LODS, STOS ve MOVS komutlar kullanlr. Bu komutlar mikroilemci ile hafza arasnda, bir blok, tek bir byte veya kelime (word) transferinde kullanlr. Daha nce de bahsedildii gibi yn (direction) bayra (D) dizi ilemlerinde DI ve SI saklayclarnn otomatik artm/azaltm ilevi iin kullanlr. Yn Bayra (D) Yn bayra, dizi ilemleri srasnda, DI ve SI saklayc iin otomatik-arttrma (D = O) veya otomatik-azaltma (D = 1) alma modunu seer. D bayra CLD komutu ile 0' lanr ve STD komutu ile l' lenir. Yani CLD otomatik-arttrmay ve STD otomatik-azaltmay seer. Bir dizi
34

35

komutu ile yaplan veri transferinden sonra, D bayra ile seilen alma moduna gre, eer veri 1 byte ise DI ve/veya SI 1 arttrlr veya azaltlr. Benzeri ekilde, transfer edilen veri 2 byte ise, bu kez DI ve/veya SI 2 arttrlr veya azaltlr. String Komutlar iin Kaynak ve Hedef Saklayclar (DS:SI ve ES:DI) Dizi komutlarnda DS, SI ve ES, DI iftlerinin her ikisi de kullanlabilir. Normalde SI, DS iin ve DI, 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 ve LODSW komutlar 1-byte veya kelime transferine neden olur. rnein, LODSB komutu yrtlrken, 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 de DI ile iaretli hafza hcresine saklamaktadr. Tablo STOS komutunun baz kullanm rneklerini gstermektedir. LODS' te olduu gibi, STOS' dan sonra B veya W kullanlarak 1-byte veya kelime transferi yapld belirtilir. LODS komutunun baz deiik kullanm rnekleri. Yaplan lem AL= [SI], SI= SI 1 AX=[SI], SI = SI2 AL= [SI], SI= SI 1 (Eer BUF byte ise) AX = [SI], SI = SI 2 (Eer DATA kelime (word) ise) STOS komutunun baz deiik kullanm rnekleri. Yaplan lem [DI]=AL, DI=DIl [DI] = AX, DI = DI2 [DI] = AL, DI = DI 1 (Eer BUF byte ise) [DI] = AX, DI = DI2 (Eer DATA kelime ise)

AssemblyDiIi LODSB LODSW LODS BUF LODS DATA

AssemblyDili STOSB STOSW STOS BUF STOS DATA REP ile STOS Komutu

REP (repeat) neki (prefx) herhangi bir dizi komutuna eklenebilir. Bu sayede bir dizi ileminin, CX sayma deeri sfr oluncaya kadar tekrarlanmas salanabilir. Aada verilen rnek program parasnda, BUFFER adresli yerden balayan 10-bytelk alan sfr ile temizlenmektedir. Bu ilem pe pee 10 tane STOS komutuyla veya REP nekli bir tane STOS komutuyla yaplabilir. nce LES komutuyla ES ve DI saklayclar yklenmekte daha sonra, CX sayac yklenmekte ve D bayra sfrlanarak, her STOS komutu yrtldkten sonra DI' nn otomatik-arttrmas salanmaktadr. LES DI, BUFFER MOV CX, 10 ; BUFFER deki ofset ve segment adreslerini ykle ; sayac ykle otomatik
35

36

CLD MOV AX, 0 REP STOSB

; arttrmay se hafza ;temizleme iin AX=0 ;BUFFER alann temizle

LES komutuyla yklenen adresler BUFFER da tutulmaktadr. Bu yzden aadaki tanmlamada olduu gibi 4-byte veri iermelidir. BUFFER DW 0100H,0400H ;0100H ofset, 0400H segment iin Ayn ilem REP STOSW komutunu kullanarak CX sayac 5 ile yklenerek de yaplabilir. nk 5 tane 0000H kelimesi 10-byte hafzay temizler. Aada bu ilememi yapan program paras verilmitir. 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 veya kelime aktarm yaplabilir. Bu komut MOV komutu ile yaplamayan hafzadan-hafzaya veri transferi ilemini yapar. Bir MOVS komutu, veri segment' te (DS) bulunan ve SI saklaycs ile adreslenen hafza hcresini, ES' de bulunan ve DI ile adreslenen hafza alanna aktarr. MOVS komutunun baz deiik kullanm rnekleri. AssemblyDili Yaplan lem MOVSB [DI] = [SI], DI = DI 1, SI = SI 1 MOVSW [DI] = [SI], DI = DI2, SI = SI2 MOVS DATA1, DATA2 [DI] = [SI], DI = DI 1, SI = SI 1 MOVS WORD1, WORD2 [DI] = [SI], DI = DI 2, SI = SI 2 Aada verilen rnek program parasnda, BUFFER2 alanndan 100-byte veri BUFFER1 alanna aktarlmaktadr. Yine MOVS kullanlmadan nce, LES ve LDS komutlar ile hafza iaretileri DI ve SI yklenerek, BUFFER1 ve BUFFER2 alanlarna iaret etmeleri salanr daha sonra MOVS komutu yrtlrken SI ve DI' de bulunan ofset adreslerin otomatik-arttrmas CLD komutuyla seilir ve CX sayac 100 ilk deeriyle yklenir. REP komutuyla kullanlan MOVS komutu ardk 100 adet veri transferini gerekletirir. LES DI, BUFFER1 LDS SI, BUFFER2 CLD MOV CX, 100 REP MOVSB ;BUFFER1 adresini ykle ; BUFFER2 adresini ykle

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

36

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 sabit adres 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-03FFH arasndadr ancak gnmzde bu port adres 03FFH dan byk olabilmektedir. Aada OUT 19H, AX komutu iin 8086 mikroilemcinin data, adres ve kontrol ularnda oluan veri ve adres yaps gsterilmektedir.
Port Data AX ierii Data BUS (D0-D15)

Port Adres 0019H Adres BUS (A0-A15)

Port Kontrol

IOWC (I/O Write Control)

Burada ilgili kontrol bus ucunun sadece giri/k cihazlarn aktif etmek iin (bellek veya dier 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 IN AX,IPORT IN AL,DX IN AX, DX OUT OPORT, AL OUT OPORT, AX OUT DX,AL OUT DX,AX XCHG

IPORT' tan 8-bit veri AL' ye okunur IPQRT' un 16-bit veri AX e okunur DX ile iaretli port' tan 8-bit veri AL' ye okunur DX ile iaretli port' tan 16-bit veri AX' e okunur AL' nin ierii OPORT' a gnderilir AX' in ierii OPORT' a gnderilir AL' nin ierii DX ile iaretli port' a gnderilir AX 'in ierii DX ile iaretli port' a gnderilir

Herhangi bir saklaycnn ieriini dier bir saklayc veya bir hafza hcresi ile deitirmektedir. XCHG komutu, segment saklayclarnn ieriini veya hafzadan hafzaya veri 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 igal eder.

37

38

AssemblyDiIi XCHG sak, sak XCHG sak, hafza XLAT

XCHG komutunun deiik ekilleri. Yaplan ilem Saklayc ieriklerini deitir Saklayc ile hafza ieriklerini deitir

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) tekniinde kullanlr. XLAT komutu, nce AL'nin ieriini BX saklaycsna ekleyerek DS iin bir hafza adresi oluturur. Daha sonra bu adreste sakl veriyi AL saklaycsna geri ykler. rnein, bir 7-segment LED gsterge bakma tablosunun DISPLAY adresinde saklandn varsayalm. XLAT komutu, AL saklaycsnda bulunacak O ile 9 arasnda deiik BCD (Binary Coded Decimal) saylarn 7 -segment kod karln bulmada kullanlr. MOV BX, OFFSET DISPLAY XLAT ;DISPLAY ADRESN YKLE ;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 rnekleri yer almaktadr. Toplama komutunun deiik kullanm rnekleri. AssemblyDiIi ADD AL, CL ADD DX, SI ADD BL,20H ADD CX, 4000H ADD [BX],CL ADD CX, [SI+2] ADD AL, BUF ADD AL, BUF[DI] ADD [BX+DI], DL Yaplan 1em AL=AL+CL DX= DX+ SI BL= BL+ 20H CX= CX + 4000H CL, DS de BX ile adreslenen veri ile toplanr sonu yine bu veri alanna yazlr CX, DS de SI+2 ile adreslenen veri ile toplanr sonu CX'e yazlr AL, DS' de bulunan BUF hcresi ile toplanr sonu AL' ye yazlr AL, DS' de bulunan ofset-BUF ve DI toplami ile adreslenen veri ile toplanr sonu AL' ye yazlr DS' de bulunan BX ve ofset DI' nin toplam ile adreslenen veri DL ile toplanr ve sonu yine bu veri alanna yazlr

38

39

vedi toplama (immediate addition) adreslemesine bir rnek verilmitir. Bu adreslemede bir operand saklaycdan dier operand hafzadan gelen sabit bir saydr. SI, DI, BP veya BX saklayclar ile yaplan adreslemeyle hafzadan saklaycya toplama (memoryregister addition) gerekletirilir. Bir taban ve ofset deerinin toplanmasyla oluan adresle iaretlenen 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

MOV SI, 0 ADD AL, ARRAY[SI] ADD AL, ARRAY[SI+l] ADD AL, ARRAY[SI+2l

;TOPLAMI SIFIRLA ;Dizinin ilk eleman ;ilk eleman

ADC Komutu (Eldeli Toplama): ADC eldeli toplama komutunda operand ile beraber elde bayra da (C) toplamaya dahil edilir. Bu komut 8086-80286'da 16-bit' ten ve 80386-Pentium'da ise 32-bit' ten daha geni saylar toplamada kullanlr.

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

39

40

karma: SUB, SBB ve DEC Komutlar SUB Komutu karma komutunun deiik kullanm rnekleri. Yaplan lem AL= AL-CL DX= DX-SI BL = BL- 20H CX= CX- 4000H DS de BX ile adreslenen veriden CL kartlr sonu yine bu veri alanna yazlr CX' den DS de SI+2 ile adreslenen veri hcre kartlr sonu CX' e yazlr AL' den DS' de bulunan BUF verisi kartlr sonu AL' ye yazlr AL'den DS'te bulunan BUF ve ofset DI' nin toplam ile adreslenen veri kartlr sonu AL' ye yazlr DS' de bulunan BX ve ofset DI' nin toplam ile adreslenen veriden DL kartlr ve sonu yine bu veri alanna yazlr

AssemblyDili SUB AL, CL SUB DX, SI SUB BL, 20H SUB CX, 4000H SUB [BX],CL SUB CX, [SI+2] SUB AL, BUF SUB AL, BUF[DI] SUB [BX+DI], DL

SBB Komutu (dnl kartma)


SBB dnl kartma 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 karmada

kullanlr. SBB komutunun deiik kullanm rnekleri. Yaplan lem AL=AL-CL-C AX=AX-BX-C DS' de bulunan BX ile adreslenen 1-byte veriden AL ve C kartlr ve sonu ayn veri alanna yazlr AX' den SS' de bulunan ve BP+2 ile adreslenen 16-bit veri ve C kartlr sonu AX' e yazlr

AssemblyDiIi SBB AL, CL SBB AX, BX SBB [BX],AL SBB AX, [BP+2] DEC Komutu

Segment saklayclar dnda herhangi bir saklayc veya bir hafza hcresi ieriini 1 azaltr. Azaltma komutunun deiik kullanm rnekleri. Yaplan lem AL=AL-1 SP=SP-I DS' de bulunan ve BX ile adreslenen 1-byte hafza ierii azaltlr DS' de bulunan ve SI ile adreslenen 16-bit hafza ierii azaltlr
40

AssemblyDili DEC AL DEC SP DEC BYTE PTR [BX] DEC WORD PTR[SI]

41

Karlatrma Karlatrma komutu CMP (Compare) ile sadece bayrak bit' lerini deitiren bir karma ilemi gerekletirilir. Karlatrma ilemine giren operand' larda bir deime olmaz, sadece bayraklar 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 bir dallanma komutu gelir. Karlatrma komutu hafzadan-hafzaya ve segment saklayc karlatrmas dnda daha nce verilen tm adresleme modlarn kullanr. Karlatrma komutunun deiik kullanm rnekleri. Yaplan lem AL-CL ilemi yaplr. DX-SI ilemi yaplr. BL-20 ilemi yaplr. CX-4000H ilemi yaplr. DS de BX ile adreslenen veriden CL kartlr. CX' den DS de SI+2 ile adreslenen veri kartlr. AL' den DS' de bulunan BUf hcresi kartlr. AL' den DS' de bulunan BUF ve ofset DI' nin toplam ile adreslenen veri kartlr. DS' de bulunan BX ve ofset DI' nin toplam ile adreslenen veriden DL kartlr.

AsumblyDili CMP AL,CL CMP DX,SI CMP BL,20H CMP CX. 4000H CMP [BX],CL CMP CX, [SI+2] CMP AL,BUF CMP AL, BUF[DI] CMP [BX+DI], DL arpma ve Blme

ilk 8-bit mikroilemciler donanm arpma ve blme birimine sahip deildi. Bu birim 16bit mikroilemcilere eklenen ilk nemli donanm birimi oldu. Ancak bu temel birim sadece tamsay (integer) arpma ve blme destei salamaktadr. Kayan nokta ilemleri ya yazlm alt 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 Pentium ilemcilerinde kayan nokta aritmetik ilemleri, artk tm devre zerinde gerekletirildi. arpma (MUL ve IMUL) arpma ilemi 8-bit veya 16-bit iaretsiz (MUL) veya iaretli (IMUL) tamsaylar zerinde yaplr. lem sonucu (arpm) operand'lar 8-bit ise, 16-bit; 16-bit ise 32-bit olur. arpma komutlarnda, ivedi adresleme modunun dndaki adreslerne modlar kullanlabilir. arpma ve blme komutlarnda ilk operand her zaman AL (8-bit ilemde) veya AX (16bit ilemde) 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 sonucu AX saklaycsnda bulunur.
41

42

aretli arpmada operand' lar donanm tarafndan iaretli (2'nin tmleyeni) olarak yorumlanr ve arpm yine 2'nin tmleyeni eklinde olur. Bu tr arpma ileminde IMUL komutu kullanlr. Saylarn yorumlanmas ve ilemleri programcya baldr. 16-Bit arpma arpanlardan biri her zaman AX saklaycsnda bulunur. kinci arpan komut ile belirtilir. Aada grld gibi 32-bit arpm sonucu DX ve AX saklayclarnda bulunur.

arpma komutunun deiik kullanm rnekleri. AsstmblyDili Yaplan lem AL' de bulunan iaretsiz tamsay DL ile arplr. MUL DL arpm AX' de bulunur. AL' de bulunan iaretli tamsay CH ile arplr. IMUL CH arpm AX' de bulunur. DS' de bulunan BX ile adreslenen veri AL ile arplr. MUL BYTE PTR[BX] arpm AX' de bulunur. DS' de OPR adresinde bulunan iaretli tamsay AL IMUL BYTE PTR OPR ile arplr. arpm AXde bulunur. AX' deki iaretli tamsay CX ile arplr. arpm IMUL CX DX:AX' te bulunur. DS' de bulunan ve SI ile adreslenen 16-bit veri AX MUL WORD PTR[SI] 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 ile belirtir.
42

43

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

Aada AL saklaycsndaki 12H says CL saklaycsndaki 2 saysna blnmektedir. Blme ileminden nce kalan saysnn saklandn AH saklaycs temizlenmektedir. MOV AL, 12H MOV CL, 2 MOV AH, 0 DIV CL 16-Bit Blme 16-bit blme ileminde blnen her zaman DX:AX saklayc iftinde bulunur. Blen sayy komut ile belirtir. Blnecek say 16-bit ise bu sayy 32-bit'e evirmek iin CWD (Convert Word to Double word) komutu kullanlr. Bu komut AX saklaycsnda bulunan iaretli 16-bit sayy DX:AX saklayc iftine 32-bit olarak evirir. Bu komut genellikle 16-bit blme ileminden nce kullanlr.

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

44

CWD IDIV CX

BCD ve ASCII Aritmetik 8086/8088 mikroilemcide bu komutlar sayesinde ikili kodlanm ondalk (Binary Coded Decimal - BCD) ve ASCII formatnda saklanan saylar 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 kullanmadan nce saylar ayarlama iin kullanlr. Saylar toplama ve karmada 1-byte olarak 2 hane paketlenmi BCD formatnda AL' de saklanr.Eer 1- byte ierii 25H ise ve bu bir BCD sayy belirtiyorsa bu say BDC kodlu 25 saysdr. Yani bu byte 2 ve 5 BCD hanelerini iermektedir. arpma ve blmede ise saylar 1-byte 1 hane olacak ekilde paketlenmemi BCD saylar olarak 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, sonucu DX saklaycsnda saklamaktadr. lk DAA komutunun kullanmndan nce, 99 ve 34 saylar toplanarak BCD olmayan CD says retilmitir. DAA komutu bu ilemi C bayranda 1 ve AL' de 33 yaparak dzeltmektedir. Daha sonra 12 ve 30 elde bayrayla beraber toplanmakta ve 43 bulunmaktadr. Bu saynn haneleri BCD olduundan, ikinci DAA komutundan sonra bu sayda bir deiiklik olmaz. Sonu olarak, DX saklaycsnda 4333H veya 4333 BCD kodu bulunur.
44

45

MOV MOV MOV ADD DAA MOV MOV ADC DAA MOV

BX, CX, AL, AL, DL, AL, AL, DH, AL

1234H 3099H BL CL AL BH CH

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 komut karma 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 1865 BCD says bulunur. MOV BX, MOV CX, MOV AL, CL SUB AL, BL DAS MOV DL, AL MOV AL, CH SBB AL, DAS MOV DH, AL AAM ki tane tek haneli paketlenmemi BCD saynn arpma ileminden sonra kullanlr. Aadaki rnekte AL saklaycsnda bulunan 5 ile CL deki 6 saylar arplmaktadr. arpma ileminden sonra AX saklaycsnda 1EH (30) bulunur. Bu BCD olarak doru bir gsterim deildir. AAM komutundan sonra AX saklaycs 0300H veya 2haneli paketlenmemi 30 BCD sonucuna evrilir. MOV AL, 5 MQV CL, 6 MUL CL AAM AAD Bu komut ncekilerden farkl olarak blme ileminden nce kullanlmaktadr. AAD komutu AX saklaycsnda 2-haneli paketlenmemi bir BCD saynn var olduunu varsayar (AH en deerli haneyi, AL ise dier haneyi tutar). Bu 2-haneli BCD say, tek-haneli bir BCD say ile
45

1234H 3099H

BH

46

blnmeden nce AAD komutuyla ikili sayya ayarlanmaldr. Bu sayede yaplan blme ilemi sonucunda, AL saklaycsnda tek-haneli sonu ve AH' te kalan retilir. AAD komutu paketlenmemi BCD saylar 00 ile 99 arasnda ikili saylara evirir. Aada paketlenmemi BCD 72 saysnn 9 ile blnme ilemini gerekletirmektedir. AAD komutuyla AX saklaycsnda bulunan 0702H says, yine AX' de 0048H saysna evrilir. Bu ekilde BCD say ikili sayya evrilir. Bylece, ikili blme komutu DIV ile doru blme ilemi yaplarak 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 yaplacak ilemlerde kullanlr. AAA (Adjust for ASCII Addition) AAS (Adjust for ASCII Subtraction) Bu komutlar her zaman AX. saklaycsn ayarlama ileminden nce kaynak ve sonra hedef olarak 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 sonucu retmelidir. 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 1 ykle, AH' i temizle ADD 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 ilemler bayrak bit' lerini etkilerler: her zaman elde ve tama bit' leri temizlenir ve dier bayraklar sonucun 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 veri kelimesinde istenmeyen bit' ler temizlenebilir.
46

47

Aada 16-bit bir ASCII saynn AND komutuyla yani ASCII saydaki her bir veri hanesinin en sol 4 bit' i temizlenerek (maskeleme) BCD koda evrilmesi gsterilmektedir. MQV CX, 3531H AND CX, 0F0FH ;2 haneli ASCII sayy ykle ;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 BCD sayya evrilmektedir. OR AX,330H ilemiyle AX deki say 2-haneli ASCII-kodlu sayya evrilir. OR komutundan nce AX saklaycs 0305H iermektedir. OR komutundan sonra AX=3335H olmaktadr. MOV AND MUL AAM OR AL,5 Veriyi ykle BL, 7 BL AX = 5*7 Paketlenmemi 2-haneli BCD ayar AX=0305H A X 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 XOR AL, AL ; AX saklaycsnda bulunan bit' lerin en-sandaki 6 bit deitirilmeden en-solundaki 10 bit' nin tersi alnmaktadr. ; Bu komutla AL temizlenmektedir bu ilem MOV ile yaplsayd daha uzun srecekti nk fazladan bir hafza okuma ilemi gerektirmektedir

MOV AL, 0

TEST Komutu
47

48

TEST aslnda bir AND ilemi gerekletirir ancak ilem sonucunda hedef veya kaynak operandlar deimemektedir sadece TEST sonucuna gre bayrak saklaycsnn durumunu 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 deil ise lojik 0' dr (Z = O, sonu sfr deil). CMP komutunda olduu gibi TEST komutundan sonra JZ (Jump Zero) veya JNZ (Jump Not Zero) gibi bir dallanma komutlar kullanlr. Aada verilen rnek program bu kullanm gstermektedir. TEST AL, 1 ;en sadaki bit i test et JNZ RIGHT ;eer 1 ise dallan TEST AL, 128 ;en soldaki bit i test et JNZ LEFT ;eer 1 ise dallan

NOT ve NEG Komutlar NOT ilem ile Lojik ters-alma veya verinin 1' li tmleyeni ve NEG ilemiyle aritmetik iaret tersleme 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 ilem NOT CL CL = CL' NEG CL CL= CL' + 1 (2'nin tmleyeni) NEG AK AX=AX' + 1 (2'nin tmleyeni) DS'te bulunan TEMP ile adreslenen verinin bit'leri NOT TEMP terslenir. TEMP ile adreslenen verinin boyu TEMP' in tanmlanmasna baldr. NOT BYrE PTR[BX] DS'te bulunan BX ile adreslenen l-byte verinin bit'leri terslenir. Kaydrma ve Dndrme Kaydrma (Shift) ve dndrme (Rotate) komutlar, AND, OR, XOR ve NOT komutlarnda olduu gibi ikili saylar zerinde ikili bit seviyesinde ilem yapmaktadr. Kaydrma Komutlar
48

49

Kaydrma komutlar 2' nin katlar ile arpma (sola kaydrma) ve blme (saa kaydrma) ilemlerinde kullanlr. SAR komutu ile aritmetik saa kaydrma ilemi (eer say pozitif ise, sola '0' kaydrlr negatif ise, en sola '1' kaydrlr) gerekletirilir yani iaret bit'i kendi zerinde dnmektedir. En sadaki bit elde bayrana (C) girer. Grld gibi SAR komutu iaretli sayy 2' ye blmektedir. Aritmetik kaydrmada kaydrma adedi komuta operand olarak girilen CL ierii ile belirlenebilir. SHR komutu ise lojik saa kaydrma ilemi gerekletirir yani iaretsiz sayy 2 ye bler.

Kaydrma komutlarnn baz kullanm rnekleri. AssernblyDili SHL CX SHR AX SAL BUFFER, CL SAR SI Yaplan lem Lojik olarak CX'i sola kaydr Lojik olarak AX'i sa; kaydr Aritmetik olarak DS' de bulunan BUFFER' sola CL'de bulunan say kadar kaydr Aritmetik olarak SI' y saa kaydr

Dndrme Komutlar Dndrme komutlar bir saklayc veya hafza adresindeki veriyi bir ucundan dierine veya elde bayra zerinden dndrmektedir. Dndrme ileminde dndrme adedi komuta operand olarak girilen CL ierii ile belirlenebilir. 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.
49

50

RCR WORD PTR[BP]

SS' de bulunan ve BP ile adreslenen 16-bit kelime saa 1 bit dner.

PROGRAM KONTROL KOMUTLARI Program icrasn ynlendirmek ve program aknn deimesini kontrol etmek maksadyla JMP (dallanma), CALL (altprogram arma), RET dn, kesme (INTERRUPT) ve ilemci kontrol komutlar gibi Program kontrol komutlar kullanlabilir. Dallanma ile yaplan programlarn ak kontrol genellikle bir CMP veya TEST komutuyla bir test ileminden sonra koula bal dallanma komutuyla gerekletirilir. Dallanma Komutlar JMP komutu hafzann bir blmnden dier bir blmne program akn ynlendiren temel 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
50

51

Bellekte herhangi bir yere deiiklik yaplmadan tanabildiinden Greceli (relative) dallanmalar olarak da bahsi geen ksa dallanma 2-byte komut uzunluuna sahip olup ilem kodundan sonraki ikinci byte iaretli adres bilgisidir ve bu sayede kendisini takip eden 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 herhangi bir 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 uzak dallanma ise segmentler aras dallanma (intersegment jump) olarak adlandrlr dolaysyla uzak dallanma komutlar mikroilemcinin hafza adres alanndaki herhangi bir adrese dallanmay salar. Programc dallanmalarda JMP komutundan sonra bir adres etiketi (Iabel) kullanr. Kullanlan assembler dallanmann uzunluuna gre ilem kodu ve adres retir. Bu yzden 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 belirlemede kullanlabilir bu yzden dallanma tablosu kullanarak dallanlan programlar iin ok uygundur. Bu tr dallanma, dolayl dallanmadr ve saklaycnn iindeki veri dallanma adresi olarak kullanlr. Saklaycnn ierdii adresi IP olarak alnr ve program bu adresten itibaren devam eder. Aada, TABLO adresinden balayan bir dallanma tablosunda bulunan 4 farkl altprogram adresine erien bir rnek verilmektedir. Altprogram adresleri 16-bit olduu iin, bu adresler, TABLO balang adresinden itibaren TABLO+0, TABLO+2, TABLO+4 ve TABLO +6 adreslerinde yer almaktadr. Program banda SI' da 0,1,2 veya 3 olduu varsaylmakta ve iki kat alnmaktadr. Daha sonra TABLO taban adresiyle bu adres toplanarak dallanlacak altprogram adresi bulunur ve JMP AX ile bu adrese dallanlr.

ADD SI, SI ADD SI, QFFSET TABLO MOV AX, CS: [SI] JMP AX TABLO DW SUBO DW SUBI DW SUB2 DW SUB3

; SI' nin 2 kat ;altprogram adresleri iin taban adres ;adresi AX' e al ; altprograma dallan

;4 ALTPROGRAM ADRES TABLOSU

ndisli Adresleme Kullanan Dolayl Dallanma


51

52

Bu tip dallanmada indisli adresleme kullanarak bir dallanma tablosuna eriebilir. Dallanma tablosu yakn (near) dolayl dallanmada ofset adresleri veya uzak (far) dolayl dallanmada segment ve ofset adresleri ierir. Yukardaki programn indisli adresleme kullanan ekli aada verilmitir. ; Dallanma tablosu rnei ADD SI, SI ; SI'nin 2 kat ADD SI, OFFSET TABLO ;altprogram adresi JMP CS: [SI] ;altprograma dallan TABLO: DW SUBO DW SUBI DW SUB2 DW SUB3 ;4 ALTPROGRAM ADRES TABLOSU

Yukarda verilen programda, dallanma tablosuna eriim, normal hafzaya eriim gibidir. Burada kullanlan JMP CS:[SI] formundaki komut CS hafzada bulunan ve SI ile adreslenen program bellek adresine iaret eder. Programn icras bu hafza adresinde sakl olduu varsaylan adresle iaret edilen adrese dallanr. Saklayc ve indisli adreslemeli dallanma komutunun her ikisi de yakn dallanmadr. Yani, bu dallanmalarda 16bit ofset (IP) kullanlr ve dallanma segment iidir. Eer segmentler aras dallanma yaplmak isteniyor ise FAR PTR eki kullanlr. rnein, JMP FAR PTR [SI] komutu ile mikroilemci SI ile iaretli hafza blgesinde 32-bit adres (IP ve CS) olduunu varsayar. Duruma Bal Dallanmalar 8086 mikroilemcide koullu (duruma bal) dallanmalar ksa dallanmalardr ve daima bir sonraki komuttan sonra + 127 ile -128 byte arasndadr. Genellikle koullu dallanmalardan nce koulla ilgili olarak ya TEST yada CMP komutu ile bayrak bitlerinin duruma gre deer almas salanr.

52

53

Koullu dallanmalar iaret (S), sfr (Z), elde (C), elk (P) ve tama (O) bayrak bit' lerini test eder. Test edilen durum doru ise program ak dallanma komutuyla belirtilen adresten devam eder, yanl ise dallanma olmaz ve bir sonraki sradaki komut yrtlr. JG, JGE, JE, JNE, JL ve JLE komutlar iaretli saylarn karlatrlmasnda kullanlr. JA, JAE, JB, JBE, JE ve JNE komutlar iaretsiz saylarn karlatrlmasnda kullanlr. JCXZ komutu sadece CX saklaycsnn ieriini ele alr, bayraklar test etmez. Bu komutta CX = O ise dallanma gerekleir, aksi durumda sradaki komut yrtlr. LOOP Komutu LOOP komutunda CX saklaycsnn ierii bir azaltlr ve CX = 0 deilse komut ile belirtilen program satr adresine dallanlr. CX sfr olduunda bir sonraki komut yrtlr.

Duruma Bal LOOP Komutlar LOOPE (LOOP while eqal):Bir eitlik durumu (Z=1) varken ve CX0 ise, etiketle belirtilen yere dallanr. CX=0 sfr olduunda veya bayrak bit' leri ile bir eitsizlik durumu belirtildiinde bir sonraki komuttun icrasna geilir. LOOPNE (LOOP while not equal): Bir eitlik durumu (Z 1) yokken ve CX0 ise, etiketle belirtilen yere dallanr. CX=0 sfr olduunda veya bayrak bit' leri ile bir eitlik durumu belirtildiinde bir sonraki komuttun icrasna geilir. RNEK ASSEMBLY PROGRAMLARI *AX ieriini 10 ile arpar; SHL AX,1 (2*AX) MOV BX,AX SHL AX,2 (4*2*AX) ADD AX,BX (2*AX+8*AX=10*AX)
53

*AX=BX+CX+DX ADD BX,CX ADD BX,DX MOV AX,DX

*TEST komutu TEST AL,1 JNZ RIGHT TEST AL,128 JNZ LEFT

54

*ilk elemannda ayn dizideki byte veri saysnn tutulduu bir data dizisindeki (DT[ ] dizisi) saylarn 0Ah deerinden byk ve kk olanlarnn saysn veren program. MOV SI,OFFSET DT ;(Dizinin balangi adresini al) XOR BX,BX XOR CX,CX MOV CL,BYTE PTR [SI] ;(Dongu sayisi dizinin ilk elemani) MOV DX,CX INC SI REPS: CMP BYTE PTR [SI],0Ah ;( Sayiyi karsilastir) JA REPS1 JB REPS2 REPS1: INC AX INC SI DEC CX CMP CX,0 JNE REPS JMP STOP REPS2: INC BX INC SI DEC CX CMP CX,0 JNE REPS STOP: HLT DT db 10, 11, 21, 3, 41, 51, 44, 46, 12, 13, 27 *Aada ekrann ilk koordinatna A karakterini basan assembly programn altrp inceleyin. Mov dx,0b8000h Mov ds,dx Mov bx,0 Mov byte ptr [bx],041h * kili tabanda ok bytel arpma ilemi zel arpma emri olmayan bir mikroilemcide 8 bitlik iki saynn kat-kalem yntemi ile arplmas aadaki rnekle gsterilmitir. Sonu kaydedicisinin, arplan say kaydedicileri uzunluunun iki kat olmas gerektiine dikkat edin. Burada arpan saynn bitlerinin ald deere bal olarak ksmi veya ara toplam admlarna gelen saynn; her adm iin sola kaydna (saysal olarak 2 ile arpldn) ve sadece arpan bitinin 1 olmas durumunda arplan saynn kaydrlm haline eit olduuna, 0 olduunda ise 00h saysnn geldiine dikkat ederek bu ilemi yapan assembly programnn nasl olaca hakknda fikir yrtn. kili tabanda arpma ilemine ilikin baka bir algoritma aada verilmitir.
54

55

1) arpan ve arplan saylar kaydet. 2) arpm kaydedicisini sfrla. 3) arpan saynn en anlamsz bitinden balamak zere bitlerini tek tek kontrol et. a)Eer kontrol edilen bit sfr ise arpm kaydedicisini bir bit saa kaydr. b)Eer kontrol edilen bit bir ise arpm kaydedicisini arplan say ile topla ve bir bit saa kaydr. 4) Tm bitlerin kontrol bittiinde arpm sonucunun ierii arpm sonucudur.

A 3 x C 4 = 7 C C C 1010 0011x1100 0100 =0111110011001100 arplan arpan = sonu arplan A3 (163) 10100011 x 11000100 00000000 00000000 10100011 00000000 00000000 00000000 10100011 +10100011 0111110011001100

arpan C4 (196)

ara sonu ve sonu 16 bitten oluur

XOR AX,AX ;sola kayan carpilan icin XOR BX,BX ;BX ara toplam ve sonuc XOR CX,007h ;kaydirma sayisi MOV AX,000A3H ;A3H carpilan sayi MOV SI,00200h ;carpan sayi Bellek adresi MOV WORD PTR [SI],000C4H ;C4H carpani bellege yaz SHR BYTE PTR [SI],1 ; ilk kaydrma JC ON JMP BASLA ON: CLC ADC BX,AX
55

56

BASLA: SHR BYTE PTR [SI],1 JC CBIR SHL AX,1 DEC CX JCXZ DUR JMP BASLA CBIR: SHL AX,1 CLC ADC BX,AX DEC CX JCXZ DUR JMP BASLA DUR: HLT *Aadaki program INT 15h / AH = 86h - BIOS BEKLEME FONKSYONU ile yaklak 5 sn lik (5 milyom mikro saniye) gecikme salar: mov cx, 4Ch mov dx, 4B40h mov ah, 86h int 15h ; 004C4B40h = 5,000,000 mikro saniye

ALTPROGRAMLAR Altprogramlar yapsal programlama teknii asndan yazlm mimarisinde nemli bir ncelie sahiptirler. Belirli ve tekrar yaplmas gereken grevler altprogramlar halinde tanmlanarak bir programda bir ok kere kullanlabilirler. ProgramcI bylece hem ayn kodu tekrar tekrar yazma zahmetinden kurtulmu olur hem de hafza alanndan tasarruf eder. Bir anaprogramdan altprogram arma CALL komutu yaplr. Altprogramdan anaprograma geri dn ise altprogramn son komutu olan RET komutu ile salanr. Altprogramlarla almann dikkat edilecek yan altprogram ile ana program arasndaki arma ve geri dn ilemlerinin fazladan bir zaman kayb meydana getirmesi ve parametre aktarmlarnda ok daha dikkatli olunmas gerekliliidir. Yn (stack) hafza; anaprogramdan altprogram CALL komutu ile arlrken CALL komutundan sonraki komutun adresini saklamada kullanlr. Altprogramda ise RET komutu ile yndan okunan bu dn adresinden itibaren anaprogramn devam etmesi salanr. Assembler ortamnda altprogram PROC ynlendiricisi (directive) ile balar ve ENDP ynlendiricisi ile biter. Bylelikle bir altprogram tanmlanm olur. PROC ynlendiricisinden sonra altprogramn tipi NEAR (segment ii) veya FAR (segment'ler aras) ynlendiricisi ile bildirilir.

56

57

Yukardaki iki altprogram arasndaki fark assembler tarafndan RET komutu iin retilen kodun NEAR RET komutu iin C3H ve FAR RET komutu iin CBH olmasdr. NEAR tanmlanan altprogramdaki RET komutu yn hafzadan bir 16-bit say ekerek bunu altprogramdan anaprograma dnmek iin IP saklaycsna yerletirir. FAR tanmlanan altprogramdaki RET komutu ise yn hafzadan bir 32-bit say ekerek bunu altprogramdan anaprograma dnmek iin IP ve CS saklaycsna yerletirir. Eer bir altprogram bir ok program tarafndan global olarak kullanlacak ise bu altprogram FAR olarak tanmlanmaldr.

CALL Komutu Aslnda bir dallanma komutu olan CALL (arma) komutunun JMP komutundan fark CALL komutu yrtlrken mikroilemci tarafndan otomatik olarak dn adresinin ynda saklanmas ve altprogramdaki RET komutuyla bu dn adresinin yndan ekilerek anaprogramda CALL komutundan sonraki satra dnlebilmesidir. Bu sayede program ak bir altprograma aktarlabilir ve tekrar geri dnlebilir. Yakn CALL: 8086-80286 mikroilemcilerde yakn CALL komutu toplam 3-byte uzunlua sahiptir: ilk byte ilem kodu, ikinci ve nc byte' lar ise 32K deiim adresidir. Yakn CALL komutu bu haliyle yakn JMP komutuna benzemektedir. Ksa CALL komutu bulunmamaktadr. 80386 ve st mikroilemciler korumal modda altklarnda 32-bit deiim kullanarak 2G byte' lk bir alan salarlar. Uzak CALL: Uzak CALL komutu 1-byte ilem kodu ve ilem kodundan sonra dallanlacak altprogramn 2 er byte lk IP ve CS adresleri olmak zere toplam 5-byte uzunluundadr. FAR CALL komutu yrtlrken dallanmadan nce yna o anki IP ve CS yerletirilir. Bu sayede hafzann herhangi bir yerine yerletirilmi bir altprogram arlabilir. Saklayc Operand' l CALL: Bu tip dallanmada bir saklayc operand olarak kullanlarak (rnein CALL BX komutunda olduu gibi) nce o anki IP yna atlr daha sonra saklaycnn (BX) ierii o anki kod segment' te bulunan bir altprogramn arlmas iin IP adresi (kod segment ofset adresi) olarak alnr. Dolayl Hafza Adresi Kullanan CALL Bu tip dallanmalar farkl altprogramlarn belirli bir parametreye gre seilip arlmasnda
57

58

kullanlabilir. Aadaki programda altprogram adresleri TABLO adresinden itibaren 2-byte aralklarla saklanmaktadr bu yzden tabloya eriirken DI saklaycsndaki indisin iki kat alnr. CS:[BX+DI] ifadesi ile kod segmentte [BX+ DI] ile adreslenen tablo alanna eriilir ve buradan alnacak ofset adres ile DI ile indislenen altprogram arlm olur.

Uzak adresler arlmak isteniyorsa FAR PTR kullanlmaldr. CALL FAR PTR [SI] ile DS alannda SI ile iaretli alandan 32-bit bir adres okunur ve bu adres FAR olarak tanml bir altprogramn adresi olarak deerlendirilir. XOR AX,AX ; XOR CX,CX XOR DX,DX MOV S,0200H MOV BYTE PTR[SI],008H CMP BYTE PTR[SI],0 JZ SIFIR MOV CL,BYTE PTR[SI] MOV AL,BYTE PTR[SI] DEC CX CALL FCT JMP SON: SIFIR: MOV AX,1 SON: HLT FCT PROC NEAR JCXZ DON MUL CX DEC CX CALL FCT DON: RET ENDP

58

59

RET Komutu Altprogramn son komutu olan RET dn komutu ile anaprograma (CALL komutundan sonraki komuta) salkl bir dn gerekletirilir. RET ile yakn dn iin yn hafzadan 16-bit bir say ekilir ve IP saklaycsna erletirilir, uzak dn iin 32-bit bir say ekilir IP ve CS saklayclarna yerletirilir. Dn program adresleri iin sadece yn hafza kullanldndan dolay alt programlarla alrken push ve pop komutlarnn kullanmna ok dikkat etmek gerekmektedir. Yn hafzann RET komutundan nce dzgn olarak braklmas yani ynn en stnde dn adresinin olmas gerekmektedir. Aadaki TEST altprogramnda yna 4-byte daha veri eklenmi ve pop komutlaryla tekrar bu veriler okunmadndan en stte olmas gereken dn adresi 4-byte ierde kalmtr. Bu yzden RET 4 yani RET komutunun operandl kullanm ile SP=SP+4 yaplarak altprogramn banda PUSH AX ve PUSH BX komutlaryla yn hafzada ierde kalan ve bu altprogram aran CALL komutundan sonraki dn adresine eriim salanr. TEST PROC PUSH PUSH RET ENDP NEAR AX BX 4

TEST

*** 0200h,0201h,0202h,0203h adreslerinde yer alan scaklk deiimi srekli artan ise sogutma iin 378h portundan 01fh ve sreli azalan ise 378h portundan stmak iin 02fh d komut verisini gnderen bir assembly programn 8086 emir takmn kullanarak yaznz. mov cx,003h mov bx,0200h mov byte ptr[bx+5],0003h mov dx,0378h basla: mov ah,byte ptr [bx+1] cmp byte ptr [bx],ah jb sogut inc byte ptr[bx+5] jmp lp sogut: dec byte ptr[bx+5] lp: inc bx loop basla mov bx,0200h cmp byte ptr[bx+5],6
59

60

jne off mov al,02fh ;isit out dx,al ;sogut jmp son off: mov al,01fh out dx,al son: hlt

KESME (INTERRUPT) Dier ilemlerin yannda klavyeden kullancnn giri de yapt bir anaprogram dnelim. Mikroilemcinin imdiye kadar anlatlan dallanma ve altprogram yazlm teknikleriyle klavyeden yaplan karakter girilerini okurken bu ilemin bitmesini beklemekten baka bir ilem yapmas mmkn deildir. Oysa anaprogram normal almasn srdrrken sadece klavye ile ilgili bir olay olduunda yaplan girii okumas ve iine devam etmesi (Ekrana bir yaz yazlmas veya yazcya yazrma..vs) daha mantkldr. Mikroilemcilerdeki Kesme (interrupt) kavram burada karmza kmaktadr.
KESME: Klavyeden Okuma KESME: Klavyeden Okuma KESME: Ekrana Yazdrma KESME: Yazcya Yazdrma 60

61

Anaprogram

Anaprogram

Anaprogram

Anaprogram

Kesmeler tipik olarak bir donanmn mikroilemcinin INTR (Interrupt Request) ucundan interrupt isteini bildirmesiyle donanmla veya INT XX komutuyla program iinde yazlmla balatlan veya tetiklenen, aslnda bir CALL altprogram arma ilemidir. Her iki durumda da herhangi bir anaprogram iindeyken kesme hizmet alt program (Interrupt Service Routine - ISR) arlr. Kesme Vektrleri Kesme vektr, her biri kesme vektr numarasyla tanmlanan ve ulalan ve mikroilemci gerek modda alrken hafzann ilk 1024 byte' lk alannda (003FFH00000H) sakl olan her biri 4-byte lk adreslerden oluur. Bu adresler kesme vektr numarasyla (rnein INT 10H) arlan kesme hizmet altprogramnn bellek adresleridir. Her bir kesme vektr bir kesme hizmet programnn adresini oluturan bir IP ve CS ierir. lk 2 byte IP ve son 2 byte CS adresidir. Dolaysyla 256 tane farkl kesme vektr bulunur. Her kesme vektr bu kesme numaras ile arlan bir kesme hizmet programnn bellek adresini tutar. Intel ilk 32 kesme vektrn (0-31) 8086-80486 ve gelecek rnler iin ayrmaktadr. Geri kalan kesme vektrleri (32-255) kullanc iindir. Ayrlan vektrlerden bazlar (blme hatas, Tama gibi) program yrtme srasnda oluan hatalar iindir. Bazlar yardmc ilemci iin ayrlmtr. Dierleri sistemdeki dier durumlar ve korumal modda almada oluan hatalar iindir. Korumal modda kesme vektr tablosu yerine her kesme iin 8-byte ieren kesme tanmlayc (descriptor) tablosu yer alr. Aadaki tabloda aklamalaryla beraber kesme vektrlerini ve gerek modda her vektre kar gelen adresleri gstermektedir.

61

Anaprogram

62

Kesme Komutlar 8086-80486 farkl kesme komutuna sahiptir: INT, INTO ve INT 3. Gerek modda bu komutlardan her biri vektr tablosundan bir vektr okur ve sonra bu vektrle adreslenen kesme hizmet programn arr. Korumal modda bu komutlardan her biri kesme tanmlayc tablosundan bir kesme tanmlaycs okur. Bu okunan tanmlayc kesme hizmet programn belirtir. Kesme arma uzak CALL komutuna benzer nk dn adresi (IP ve CS) yna yerletirilir.

INT Programcnn kullanabilecei 256 tane farkl yazlm kesme komutu (INT) bulunmaktadr. Her INT komutu 2-byte uzunluunda olup deeri 0 ile 255 (00H- FFH) arasnda deien bir nmerik operand' a sahiptir. lk byte ilem kodu ikinci byte vektr tipi numarasdr. Sadece yazlm kesmesi INT 3 farkllk gsterir ve bu komut l-byte uzunluundadr. INT komutu ile yaplan ilem FAR CALL komutu ile yaplana benzemektedir. INT komutu 2 byte olmasna karn FAR CALL 5 byte uzunluundadr. CALL yerine INT komutunun kullanlmas INT komutunun ok kullanld programlarda, nemli bir hafza tasarrufu salar. Kesme vektrnn adresini hesaplarken, kesme tipi numaras 4 ile arplr. rnein, INT 10H komutu gerek modda adresi hafzann 40H hcresinde sakl olan bir kesme hizmet programn arr.
62

63

Korumal modda ise bu say 4 yerine 8 ile arplr. nk her kesme tanmlaycs 8-byte uzunluundadr. Bir yazlm kesmesi yrtldnde: 1) Bayrak saklaycs yna atlr. 2) T ve I bayraklar temizlenir. 3) CS yna atlr ve yeni CS iin vektrden yeni bir deer okunur. IP yna atlr ve yeni IP iin vektrden yeni bir deer okunur. 4) Yeni CS:IP ile adreslenen yere dallanlr. INT komutu yrtldnde harici donanm kesme giri ucu INTR' i (Interrup Request) kontrol eden kesme bayra (I) temizlenir. I = O olduunda mikroilemci INTR ucunu pasifler (disabled) yani bu utan gelecek kesmelere cevap vermez. I bayra tekrar 1 olduunda bu kesme giri ucu aktif duruma gelir. Yazlm kesmeleri (DOS ve BIOS), genellikle sistem programlarn armada kullanlr. Sistem programlar, btn sistem ve uygulama programlar tarafndan kullanlabilen programlardr. rnein, IBM PC'de yazlm kesmeleri, yazclar, video birimlerini ve disk srcleri gibi donanm birimlerini kontrol etmede kullanlr. ***Aadaki rnek program 10h kesme vektr numaral yazlm kesmesinin 0EH fonksiyonunu kullanarak AL saklaycsndaki veri ile belirlenen ASCII karakteri ekrana yazarak sonraki yazmalar iin imle pozisyonunu ayarlar**** ORG 100h MOV AH, 0Eh MOV AL, 'H' INT 10h MOV AL, 'e' INT 10h MOV AL, 'l' INT 10h MOV AL, 'l' INT 10h MOV AL, 'o' INT 10h MOV AL, '!' INT 10h RET ***** ;64K snrl program bellek alan iin. ;0Eh alt fonksiyonu iin ; ASCII code: 72 ; print it! ; ASCII code: 101 ; print it! ; ASCII code: 108 ; print it! ; ASCII code: 108 ; print it! ; ASCII code: 111 ; print it! ; ASCII code: 33 ; print it! ; returns to operating system.
63

64

IRET/IRETD IRET komutu gerek moda ve IRETD komutu ise korumal modda kullanlr. Kesme dn komutu IRET yalnz yazlm veya donanm kesme hizmet programlarnda kullanlr. Basit dn RET komutundan farkl olarak IRET komutu yndan IP ve CS olarak alnacak 2 tane l6-bit veri ektikten sonra bayrak saklaycsna bir 16-bit veriyi yndan okur. IRET komutu yrtldnde I ve T eski deerlerine dner. 80286-80486 mikroilemcilerinde korumal modda arlm bir kesme hizmet programndan dn iin IRETD komutu kullanlr. IRET komutundan farkl olarak, yn hafzadan 32-bit IP (EIP) ekilir. INT3 zel bir yazlm kesmesi olan INT 3 programlarda durma noktas (break point) oluturmada kullanlr ve uzunluu l-byte' tr. Genellikle program hatalarn bulurken program akn krmada veya kesmede kullanlr. INTO Tama durumunda oluan bu kesme tama bayran (O) test eden duruma bal bir yazlm kesmesidir. Eer O = O ise INTO komutu bir ileme neden olmaz, fakat O = 1 ise ve INTO komutu yrtlm ise vektr tip numaras 4 olan bir kesme oluur. INTO komutu iaretli ikili saylar toplayan veya karan programlarda kullanlr. Bu ilemlerde her zaman bir tama durumu sz konusudur. JO veya INTO komutu bir tama durumunu bulmak iin kullanlabilir.

Kesme Hizmet Program Bir kesme hizmet altprogramnn tanmlanmas daha nce verilen bir altprogram yazma ilemi gibidir. Tek fark bir altprogramda kullanlan RET komutunun yerine kesme hizmet programnda IRET komutunun kullanlmas ve bu kesme hizmet altprogramnn adresinin programn banda ilk ilemler yaplrken kesme tablosuna yerletirilmesidir. INTS PROC FAR . . . IRET
64

65

INTS ENDP *** org 100h start: ; Video modunu ayarla mod 3:- 16 color 80x25 mov ah, 0 mov al, 3 int 10h ;0000 segmentdeki vectr tablosuna eriim iin ES yi sfrla0000": mov ax, 0 mov es, ax ; 90h numaral kesme vektr adresini hesapla mov al, 90h ; ax= 90h * 4 mov bl, 4h mul bl mov bx, ax ; kesme hizmet program test1 iin ofset adresi kesme vector ofset adres alanna yaz mov si, offset [test1] mov es:[bx], si add bx, 2 ; segment adresi kesme vector ofset adres alanna yaz mov ax, cs mov es:[bx], ax int 90h ;yeni kesmeyi ar ;bir tua baslana kadar bekle mov ah, 0 int 16h int 20h ; program sonlandr

; kesme 90h hizmet program kodlar buradan itibaren balamaktadr test1: pusha ; tm kaydedicileri yna at ; CS=DS olmasna dikkat et push cs pop ds ; set segment register to video memory: mov ax, 0b800h mov es, ax ;msg nin her karakterini yksek byte renk dk byte ASCII eklinde word olarak ekrana yaz lea si, msg ;msg nin ofset adresini SI ye ykle. mov di, 0 ; ekrann 0 satr 0 stun noktasndan balamak iin print: cmp [si], 0 ;msg sonuna gelindi mi? if "0" then stop.
65

66

je stop mov bl, [si] ;msg den ASCII karakteri oku mov bh, 0f1h ; renk ayarla: beyaz geri plan mavi karakter mov es:[di], bx ; ekran bellee yaz add di, 2 ; sonraki ekran pozsyonuna git inc si ; sonraki karater jmp print stop: popa ;tm kaydedicileri yndan al iret ; kesmeden ana programa dn (srasyla bayraklar geri ykle dn IP ve CS yi geri ykle) msg db "test of custom interrupt!", 0 veya aadaki gibi tanmlanan kesme hizmet altprogram da kullanlabilir Test1 PROC FAR test1: pusha push cs pop ds ; set segment register to video memory: mov mov ax, 0b800h es, ax ; print message, each character is written as ; a word, high byte is color and low byte is ; ascii code: ; load offset of msg to si. ; point to start of the screen. ; if "0" then stop. ; read ascii code from msg. ; set colors: white background, blue text. ; write to vidio memory. ; go to next position on screen. ; next char.

; store all registers. ; make sure data segment is code segment:

lea si, msg mov di, 0 print: cmp [si], 0 je stop mov bl, [si] mov bh, 0f1h mov es:[di], bx add di, 2 inc si jmp print stop: popa iret Test1 ENDP Kesme Kontrol

; re-store all registers. ; return from interrupt.

INTR donanm kesmesini kontrol eden iki komut bulunmaktadr. STI (Set Interrupt flag) komutu I bayran 1' lemekte ve bu da INTR giriini aktif duruma getirmektedir.
66

67

CLI (Clear Interrupt flag) komutu I bayran 0' lamakta ve bu da INTR giriini pasif duruma getirmektedir. Bir yazlm kesme hizmet programnn iinde ilk adm olarak genellikle donanm kesmeleri STI komutu kullanlarak aktif yaplr. Donanmla Kesme I bayra yetkilendirilmise ve mikroilemcinin INTR ucundan bir alak seviye kesme istei gelmise mikroilemcinin INTA ucu alak aktif olarak (mikroilemci kesmeye cevap verebilecek durumda ise) cihaza istein grldn bildirir. Bu durumda kesme istei yapan cihaz mikroilemcinin veri yoluna (Data Bus: D0-D7) 1-byte kesme vektr numarasn gndermelidir. Mikroilemci veri yolundaki bu kesme numarasyla, kesme vektr tablosuna erierek ilgili alt program arr. LEMC KONTROL VE DER KOMUTLAR Elde Bayran Kontrol Elde bayra uzun kelime toplama ve karma ilemlerinde kullanlr. Ayrca, bir altprogramdan dnerken bir hata durumu veya baka bir durumu 1 veya 0 ile aran programa bildirmede boolean bayrak olarak ta kullanlr. Elde bayran (C) kontrol etmeye ynelik 3 tane komut bulunmaktadr: Elde bayran l' le STC (Set Carry) Elde bayran 0 la CLC (Clear Carry) Elde bayrann tersini al CMC (Complement Carry). WAIT WAIT komutu 80286-80386'da BUSY donanm ucunu, 808618088'de ise TEST ucunu gzler. Bu ucun ad 80286 ilemcisinden itibaren TEST 'ten BUSY 'ye deitirilmitir. WAIT komutu yrtldnde bu u O ise bir ey olmaz ve bir sonraki komut yrtlr. Eer bu u 1 ve WAIT komutu yrtlm ise mikroilemci bu ucun lojik O seviyesine dnmesini bekler.

67

68

IBM PC' de, mikroilemcinin BUSY ucu, genellikle 8087-80387 gibi bir nmerik yardmc ilemcinin BUSY ucuna balanr. Bu balant ve WAIT komutu yardmc ilemci grevini bitirene kadar 8086-80386 ilemcisinin beklemesini salar. HLT HLT komutu program yrtmesini durdurur. Bir durma ileminden kmak iin 3 yol vardr: bir kesme ile, bir donanm kesmesi ile veya bir DMA ilemi srasnda. Bu komut normalde bir kesmeyi beklemek amacyla kullanlr. Harici donanm kesmeleri ile yazlm sistemini senkronize etmede faydaldr. NOP Mikroilemci NOP (No Operation) komutuna rastlad zaman, bir ilem yapmayp sadece ok ksa bir zaman harcar. Bu zaman, bu komutun hafzadan okunma (fetch) sresidir. NOP komutu ayrca yazlm gecikmeleri salamak amacyla da sk olarak kullanlr.

LOCK n Eki LOCK n eki bir komuta ilave edildii zaman LOCK donanm ucu lojik O olur. Bu u genellikle harici yol ilemlerini dzenleyici tm devreleri ve dier sistem birimlerini pasif duruma getirir. LOCK n eki bir veya sral birden fazla komutun nnde olduunda, bu komut veya komutlar kilitli durumda olur.

Bu komutlarn yrtlmesi srasnda; LOCK ucu lojik O seviyesinde kalr. LOCK: MOV AL, BUFFER[BX] komutu kilitli bir komuta rnektir. ESC ESC (Escape) komutu 8087-80387 nmerik ilemcisine mikroilemciden bilgi aktarmada kullanlr. ESC komutu yrtldnde mikroilemci istenirse bir hafza adresi salar, aksi durumda bir NOP ilemi yapar.

68

69

MKROLEMCLERDE TEMEL GR/IKI (I/O) Mikroilemciler ve mikroilemci temelli sistemler en genel ifadeyle gnmzde bir ok sorunun stesinden gelinmesinde en faydal yardmc birer sistemlerdir ancak bu ifade mikroilemcinin evresiyle bir ekilde iletiim kurma veya haberleme zellii varsa anlamldr. Mikroilemciden darya veya dardan mikroilemciye veri transferi yani haberleme ilemi temel olarak:

Haberlem e Ortam

Gnderici
0 1

1 0 1 0 1 1

Alc

Gnderilen Bitler

Gnderilecek Bitler

Alnan Bitler

Seri Haberleme
Haberleme Ortam D0 D1 D2 D3 Gnderici D 4 D5 D6 D7 MSB LSB
1 1 0 1 0 1 1 0

Ac

Adres Yolu Kontrol Yolu

Paralel Haberleme

1) Bellek Temelli Giri/k ile SSTEM VERYOLU (DATABUS) zerinden PARALEL ve SER haberleme 2) Yaltlm Giri/k ile PARALEL ve SER haberleme metotlar ilegerekletirilir. nsan ile makine (mikroilemcili bir sistem) veya makine ile makine arasnda oluabilecek veri al verii gnmzde bu temel metotlara dayanmaktadr. Bellek Temelli Giri/k (Memory Mapped I/O):

69

70

Daha nce de bahsedildii gibi sistem veriyolu zerinden yaplan ilemlerde en bata MOV komutu olmak zere mikroilemci tarafndan icra edilen tm komutlarn veriyollar zerindeki etkisi (Adres, veri ve kontrol hatlar) ile ayn zamanda bellee yazma veya okuma yaparken harici cihaz veya unsurlarla veri iletiimi salanabilir. Bu tip giri k ilemlerinin sadece mevcut sistem bellei zerinden yaplrken d cihazlarla sistem veri yolu vastasyla direk haberleme yapacandan dolaysyla bellein ayn zamanda baka unsurlar tarafndan da kullanlmasndan dolay pek pratik olmayaca ortadadr. Yaltlm Giri/k (Isolated I/O): Yaltlm giri k Intel mikroilemcilerde IN/OUT veya edeer komutlarla bellee deil de dorudan giri k cihazlarna eriim iin gelitirilmitir. IN/OUT ile veri transferi konusunda bahsedildii gibi bu tip ilemlerde cihazlara zel olarak ayrlm port adresleri zerinden eriim salanmaktadr. Eriimin bellek zerinden yaplmamas ise mikroilemcinin ilgili IOWC ve IORC ular tarafndan belirlenmektedir. Bu sayede yaplan giri k ilemleri bellekten yaltlm olmaktadr. IBM TEMELL KSEL BLGSAYARLARDA PARALEL VE SER GR/IKI 8255 Programlanabilir evre Arabirimi (Programmable Peripheral Interface) ile PARALEL Giri/k: Paralel giri k ilemleri iin yaygn olarak kullanlan 8255 arabirim eleman 3 ayr moda programlanabilen 12 adet giri/k ucuna (her biri 8-bit olan 3 adet port: PORTA, PORTB ve PORTC) sahip 24 pinli bir entegredir.

8255 in programlanmas iin komut saklaycsnn ve on iin giri/k yaplacak portlardan birinin seilmesi adres veri yoluna bal olan A1-A0 ular ile yaplr. A1 0 0 1 1 A0 0 1 0 1 Fonksiyon PORTA PORTB PORTC Komut Saklayc

8255 in Komut saklaycsnn seilmesi OUT komutu ile ilgili port adresinin Adres veri yoluna kartlmas ile portlarn giri/k olarak programlanmas ve hangi alma modunun seilecei de yine OUT komutu ile bu port adresine yazlacak verinin veri yoluna kartlmas ile gerekletirilir.

70

71

7 1

Komut Byte A 5 4 3 2

Grup B PORTC (C3-C0) 1=Giri 0=k PORTB (B7-B0) 1=Giri 0=k Mod 0=mod 0 1=mod 1 Grup A PORTC (C7-C4) 1=Giri 0=k PORTA (A7-A0) 1=Giri 0=k Mod 00=mod 0 01=mod 1 1x=mod 2

7 nolu bit=0 ise komut byte B seilmi olur ve sadece 8255 mod 1 veya mod 2 ayarland durumda PORTC nin ilgili bitlerini set (1) veya reset (0) yapmada kullanlr. Komut Byte B 5 4 3 2 x x
Bit Set/Reset 1=Set 0=Reset Bit Se

7 0

6 x

Komut byte A grup A ve grup B iin programlamada kullanlr. Grup B port ular hem giri hem de k olarak programlanabilir, mod 0 ve mod 1 alma modlarnda alabilirler. Mod 0: Grup B iin basit giri ve mandallanm programlanabildii temel giri/k alma modudur.
71

(Latched)

olarak

72

Mod 1: Grup B iin strobed alma modudur. Veri al verii PORTB den yaplrken PortCden elskma (Handshaking) sinyali alnr. Grup A port ular da hem giri hem de k olarak programlanabilir ayrca mod 0, mod 1 ve mod 2 alma modlarnda alabilirler. Mod 2: Grup A port ular iin ift ynl (bi-direction) alma modudur.

********* Mikroilemciye bal 0300H adresinde bir 8255 PPI olduu varsaylarak aadaki program inceleyelim. PORTA EQU PORTB EQU CREG 300H ;PORTA ADRES 301H ;PORTB ADRES EQU 303H ;KOMUT SAKLAYICISI ADRES ;KOMUT SAKLAYICISI ADRESLE ;KOMUT BYTE A: GRUP A N MOD 0, PORTA GR,PORTC (C7C4) IKI; GRUP B N MOD 0, PORT B IKI, PORTC (C3-C0) IKI ;8255 PROGRAMLA

MOV DX, CREG MOV AL,10010000B

OUT . . . MOV IN . . . MOV MOV OUT ****

DX,AL

DX,PORTA AL,DX

;PORTA ADRESLE ;PORTA DAN OKU

DX,PORTB AL,01H DX,AL

;PORTB ADRESLE ;YAZILACAK VER ;PORTB YE YAZ

PC DE PARALEL PORT LE GR IKI Her bir paralel port 3 tane port adresine sahiptir bunlar veri, durum ve kontrol portlardr.

72

73

Veri portunun adresi paralel portun taban adresidir. rnein paralel port adresi 378h ile verilmise veri portuna 378h, durum portuna 379h (378H+1) ve kontrol portuna 37Ah (378H+2) adresleriyle eriilebilir. ok basit bir veri giri k iin Paralel portta 2 den 9 a kadar numaral ular srasyla D0, D1, D2, D3, D4, D5, D6, D7 veri portuna bal ulardr. 18 den 25 e kadar numaral ular ise ortak u olarak kullanlabilmektedir.

MOV MOV OUT

AL, 0FFH DX, 378H DX, AL

;AX = B6H ;DX = 378H adresindeki PC paralel veri portu seildi ;porttan FFH says gnderildi

Yukardaki program parasnda ledler ok ksa bir sre ile yanacak (OUT DX, AL sresince) sonra tekrar snecektir. MOV IN DX, 378H AL,DX ;DX = 378H adresindeki PC paralel veri portu seildi ;komut icras esnasnda porttaki 8-bit veri AL ye okunur

******* start: mov ax,0 ;3 byte inc ax ;1 byte lea bx,start ; 3 byte mov byte ptr[bx],40h ; 3 byte mov byte ptr[bx+1],40h ;4 byte mov byte ptr[bx+2],40h ;4 byte mov [bx+3],014ebh ;5 byte jmp start ;2 byte son: inc ax hlt ************ ;1 byte

73

74

8086 EMR TAKIMI: Data Transfer Emirleri: 74

75

IN

: Bir Giri/k cihazndan akmlatre data girii yapar. IN AL,p8 (8-bitlik bir numara ile verilen porttan ALye bir byte data girii yapar) IN AL,DX (Port numaras DX ile indexlenen porttan ALye bir byte data girii yapar. Genelde port numaras 8 bitten bykse Dx kullanlarak ilgili port indexlenir) LAHF : Bayraklar (FLAGS) AH kaydedicisine ykler. MOV : Datalarn tanmas ilemini gerekletirir. MOV AL,BL (BL ieriini ALye kopyalar) MOV byte ptr[BP],DL (DL kaydedicisinden bir byte, stack bellekte BP ile adreslenen bellek blgesine kopyalanr.) OUT : Akmlatrden Giri/k cihazna data gnderir. OUT p8,AL (8-bitlik bir numara ile verilen porta ALden bir byte data girii yapar) OUT DX,AL (Port numaras DX ile indexlenen porta ALden bir byte data girii yapar. Genelde port numaras 8 bitten bykse Dx kullanlarak ilgili port indexlenir) POP : Stacktan datay alr. Pop AX POP DS : Staca data gnderir. PUSH AX PUSH CS : AH ieriini bayrak kaydedicisine tar.

PUSH

SAHF

Aritmetik lem Emirleri: ADD : Bir kaydedici ve bellek veya kaydedici arasnda toplama ilemi yapar. ADD AX,BX (AX =AX+BX) ADD CX,DI (CX=CX+DI) ADD BX,35AFH (BX=BX+35AFH) ADD EDX,1234H (EDX=EDX+0001234H) ADD [BX+DI],DL (DSx10H+BX+DI adresine buradaki data ile DL toplanarak yazlr) Toplama ileminden sonra bayraklarn ierii ( Z=0 sonu sfr deilse,C=0 elde yoksa,S=0sonu pozitifse,O=0 tama yoksa) kendiliinden deiir. ADC : Toplama ilemini eldeli yani elde bayrak biti ile yapar. ADC AX,BX (AX =AX+BX+C) CBW : Byte datay word dataya dntrr. CMP : Datay karlatrr ve bayrakbitlerini deitirir. CMP CL,BL (CLden BLyi kartr CL ve BL nin ierii deimeyip sadece bayraklar deiir.) DEC : Bir azaltma ilemini gerekletirir. INC : Bir arttrma ilemini gerekletirir. INC BL (BL=BL+1) INC SP (SP=SP+1) INC BYTE PTR [BX] (Data segmentte BX ile adreslenen bellek blgesindeki datann byte ierii arttrlr.) INC Data1 (Data1=Data1+1 sabitin ierii arttrlyor) NEG : Datann iaretini deitirir. SBB : dnl karma ilemi yapar. SUB : Bir kaydedici ve bellek veya kaydedici arasnda karma ilemi yapar. SUB CL,BL (CL=CL-BL) Toplama emrindeki yaplar ve bayraklarn setlenmesi burada da geerlidir. ( Z=0 sonu sfr deilse,C=1 dn,S=1sonu negatifse,O=0 tama yoksa) Bit Maniplasyon Emirleri: AND : Lojik and (ve) ilemini gerekletirir. AND AL,BL (AL=AL AND BL) AND CL,33H (CL=CL AND 33H) AND AX,[DI] (AX=AX AND [DI] ile adreslenen bellek blgesindeki deer) BT : Bit test emri. NOT : 1li komplement emri. OR : Lojik or (veya) ilemini gerekletirir. 75

76

OR AH,BL (AH=AH OR BL) OR DH,0A3H (DH=DH OR 0A3H) OR AX,[DI] (AX=AX OR [DI] ile adreslenen bellek blgesindeki deer) SHL : Lojik sola kaydrma emri. SHL AX,1 (AX ierii sola doru bir bit kaydrlr.) SHL BX,12 (BX ierii sola doru 12 bit kaydrlr.) En solda ki bit C elde bayrana giri yapar, en sadaki bite lojik 0 girilir. SHR : Lojik saa kaydrma emri. Yukardakinden tek fark kaydrmann saa olmasdr. RCL : Elde bayra stnden sola dndr RCL BL,6 (BL ierii sola doru 6 bit dner) En soldaki bit C elde bayra zerinden en sadaki bit hanesine geri dner. ROL : Sola dndr. ROL BL,6 (BL ierii sola doru 6 bit dner) En soldaki bit hem C elde bayrana hem de en sadaki bit hanesine geri dner. RCR : Elde bayra stnden saa dndr RCL deki gibi ilem yapar. ROR : Saa dndr. ROL daki gibi ilem yapar. TEST : Sadece bayraklarn deitii lojik and ilemi. TEST DL,DH (DL ve DH ierikleri deimeden DL ve DH and lenir sadece bayraklar deiir.) TEST AH,4 (AH ile 4 and lenir ve sadece bayraklar deiir.) TEST emrinden sonra genelde bir JZ veya JNZ emri takip eder. XOR : lojik xor il.

Program Transfer Emirleri: CALL : Bir altprogram arr. CALL display (display adyla yazlan altprograma dallan) INT : Interrupt IRET : Interruptdan dn emri. JA : Data bykse dallan.(C=0 ve Z=0 ise) JAE : Data byk veya eitse dallan.(C=0 ise) JB : Data kkse dallan.(C=1 ise) JBE : Data kk veya eitse dallan(C=1 veya Z=1 ise). JC : Elde bayra (c=1) setlenmise dallan.(C=1 ise) JE/JZ : Eitse dallan/Sfrsa dallan.(Z=1 ise) JG : Data saydan bykse dallan.(Z=0 ve S=0 ise) JGE : Data bykse veya eitse dallan.(S=0 ise) JL : Data saydan kkse dallan.(S<>0 ise) JLE : Data saydan kkse veya eitse dallan.(Z=1 veya S<>0 ise) JMP : Programn baka bir ksmna dallan. JMP next (next: ile etiketlenen program bellek blgesine git) JNC : Elde bayra (c=0) setlenmemise dallan.(C=0 ise) JNE/JNC : Eitse deilse dallan/Sfr deilse dallan.(Z=0 ise) JNO : Tama yoksa dallan.(O=0 ise) JO : Tama varsa dallan.(O=1 ise) LOOP : CX kaydedicisindeki say kadar dngy altr. JCXZ : CX=0 ise dallan. RET : Bir alt programdan geri dn emri.

lemci Kontrol Emirleri: CLC : Elde bayran sfrla. CLD : Otomatik arttrma modunu se. CLI : Interrupt pinini yetkisiz yap. CMC : Elde bayrann komplementini al. ESC : Co-processor iin emir. 76

77

NOP STC STD STI VERR VERW WAIT

: Bu komutun icras esnasnda ilemci hibir ilem yapmaz. : Elde bayran setle. : Otomatik azaltma modunu se. : Interrupt pinini yetkili yap. : Okuma iin eriimi teyit et. : Yazma iin eriimi teyit et. : TEST_pin=0 olana kadar ilemciyi askda tutar.

77

You might also like