5. Ders - Alper BAYRAK - Abant İzzet Baysal Üniversitesi

Mikroi¸slemciler-IMCU Adresleme Modları
Mikroi¸slemciler-I
MCU Adresleme Modları
Alper Bayrak
˙
¨
Abant Izzet Baysal Universitesi
Bolu
2014
Mikroi¸slemciler-IMCU Adresleme Modları
Sunuma Genel Bakı¸s
Sunuma Genel Bakı¸s I
1 MCU Adresleme Modları
Do˘grudan Adresleme
Dolaylı Adresleme
Kaydedici Adresleme
¨
Kaydedici Ozel
Adresleme
Veri Tanımlı Adresleme
˙Indisli Adresleme
Mutlak Adresleme
G¨oreceli Adresleme
Bit Adresleme
2 MCU Komut K¨
umesi
Veri Aktarım Komutları
Aritmetik ˙I¸slem Komutları
Mantıksal ˙I¸slem Komutları
Mikroi¸slemciler-IMCU Adresleme Modları
Sunuma Genel Bakı¸s
Sunuma Genel Bakı¸s II
Program Kontrol Komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
MCU Adresleme Modları
Daha ¨once anlatıldı˘
gı gibi adresleme modları belle˘gin veya
kaydedicilerin nasıl kullanılaca˘
gını belirtir.
Hızlı i¸sleyen, bellekte az yer kaplayan programlar yazabilmek
i¸cin mimari yapının yanı sıra mikrodenetleyicinin komut
k¨
umesini ve adresleme modlarını iyi bilmek gerekmektedir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
MCU Adresleme Modları
8051 mikrodenetleyicisinde kullanılan adresleme modları
¸sunlardır.
Do˘
grudan adresleme
Dolaylı adresleme
Kaydedici adresleme
Kaydedici ¨
ozel adresleme
Veri tanımlı adresleme
˙Indisli adresleme
Mutlak adresleme
G¨
oreceli adresleme
Bit adresleme
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
MCU Adresleme Modları
A¸sa˘gıda Intel mikrodenetleyicisinin referans kaynaklarında (Data
sheet) kullanılan sembollerin a¸cıklanması verilmi¸stir.
Rx: R0’dan R7 ye kadar se¸cilen bank i¸cindeki 8 adet kaydediciyi g¨
osterir.
@Ri: R0 ve R1 kaydedicileri ile dahili RAM belle˘
gin dolaylı olarak adreslenece˘
gini
belirtir.
Direct: 8 bit dahili RAM bellek adresini ifade eder. 00H - 7FH arası adresler ile
80H - FFH adresleri arasıda yer alan ¨
ozel fonksiyon kaydedicileri (P0...P3, PSW,
TH0, TL0, PSW, vb.) bu tanımın i¸cine girmektedir.
#data: 8-bitlik do˘
grudan veriyi (sabit bir sayı) ifade eder.
#data 16: 16-bitlik do˘
grudan veriyi (sabit bir sayı) ifade eder.
Adrl6: 16-bitlik mutlak adresi ifade eder.
Adr11: 11 -bitlik mutlak adresi ifade eder.
Rel: i¸saretli ikili t¨
umleyen formunda bir sayıyı (offset) ifade eder. T¨
um SJMP ve
¸sanlı dallanma komutlarında g¨
oreceli adreslemeyi ifade etmek i¸cin kullanılır. Bit:
Dahili RAM bellekteki veya bit adreslenebilen SFR i¸cindeki bir biti ifade eder.
#xx: Odalık sistemde xx sayısını
#xxH: Onaltılık sistemde xx sayısını
xx: Ondalık sistemde xx adresini
xxH: Onaltılık sistemde xx adresini g¨
osterir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Do˘
grudan Adresleme
Do˘grudan Adresleme
Bu adresleme modu ile sadece dahili RAM belle˘gin 00H-7FH
adresleri arasındaki kısmı ile, 80H-FFH adresleri arasında (SFR
kaydedicileri) yer alan kısmına eri¸silebilir.
Bu adresleme modunda yazılan bir assembly komutu bellekte
bir, iki veya u
¨¸c bayt yer kaplar.
Komut yapısı ¸su ¸sekildedir.
KOMUT A/Rx, direct ;Bellekten (adresten) kaydedicilere
KOMUT direct, A/Rx ;Kaydedicilerden belle˘
ge
KOMUT direct, direct ;Bellekten belle˘
ge
KOMUT direct, #data ;Veriyi belle˘
ge
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Do˘
grudan Adresleme
Do˘grudan Adresleme
¨
Ornek:
Makine kodu
E530
853040
858A80
756464
Program
MOV A, 30H
MOV 40H, 30H
MOV P0,TL0
MOV 64H, #64H
A¸cıklama
30H adresindeki veriyi A’ya
30H adresindeki veriyi 40H adresine
TL0 kaydedici i¸ceri˘
gini P0 portuna
64 onaltılık sayısını 64H adresine
Yukarıda verilen d¨
ort komut da do˘
grudan adresleme modunu
kullanmaktadır.
˙ komut dahili RAM belle˘
Ilk
gin 30H no.lu adresindeki veriyi ak¨
um¨
ulat¨
ore
atar. Bellekte bir bayt komut kodu i¸cin (E5) ve bir bayt da adres verisi
i¸cin (30) olmak u
¨zere toplam iki bayt yer i¸sgal eder.
˙
Ikinci
komut 30H adresindeki veriyi 40H adresine atar.
˙ bayt adres verisi i¸cin (3040) ve bir bayt komut kodu i¸cin (85) olmak
Iki
u
¨zere bellekte u
¨c¸ bayt yer kaplar.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Do˘
grudan Adresleme
Do˘grudan Adresleme
¨
Ornek
Makine kodu
E530
853040
858A80
756464
Program
MOV A, 30H
MOV 40H, 30H
MOV P0,TL0
MOV 64H, #64H
A¸cıklama
30H adresindeki veriyi A’ya
30H adresindeki veriyi 40H adresine
TL0 kaydedici i¸ceri˘
gini P0 portuna
64 onaltılık sayısını 64H adresine
¨ cu
U¸
¨nc¨
u komut TL0 o
¨zel fonksiyon kaydedicisindeki de˘
geri P0 o
¨zel
fonksiyon kaydedicisine y¨
ukler. P0 ve TH0 aslında dahili RAM belle˘
gin
80H ve 8AH adreslerini g¨
ostermektedir. Bu y¨
uzden birer adres olarak
d¨
u¸su
¨n¨
ulebilir. Dolayısı ile bu komut da bir adresten ba¸ska bir adrese veri
transferi yaparken, bellekte u
¨¸c bayt yer kaplar.
D¨
ord¨
unc¨
u komut 64 onaltılık sayısını RAM bellekte 64H no’lu adrese
y¨
ukler ve bellekte u
¨c¸ bayt yer kaplar.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Dolaylı Adresleme
Dolaylı Adresleme
Bu adresleme t¨
ur¨
unde R0, R1 kaydedicilerden biri veya DPTR
kullanılır.
Bu kaydediciler bir adres tutarlar. Bu kaydedicilerin g¨osterdi˘gi
adresteki veri ile di˘
ger operand i¸sleme girer.
Bu adresleme modunda yazılan komutlar bellekte bir veya iki
bayt yer kaplamaktadır.
@ sembol¨
u dolaylı adreslemeyi g¨
osterir.
Dolaylı adreslemede DPTR ile beraber sadece MOVX ve
MOVC komutları kullanılmaktadır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Dolaylı Adresleme
Dolaylı Adresleme
Komut yapısı ¸su ¸sekildedir.
KOMUT @DPTR, A ;A’yı harici belle˘
ge
KOMUT A, @DPTR ;Harici bellekten A’ya
KOMUT @Ri, A/direct/#data ; Veriyi. Belle˘gi veya AVI
Ri’nin g¨osterdi˘gi dahili belle˘
ge
KOMUT A/direct,@Ri ;Ri’nin g¨
osterdi˘
gi dahili belle˘gi A veya
belle˘ge
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Dolaylı Adresleme
Dolaylı Adresleme
¨
Ornek
Makine kodu
Program
F0
MOVX @DPTR,A
A¸cıklama
A’yı, DPTR’nin g¨osterdi˘gi
harici belle˘
ge y¨
ukle
Bu komut c¸alı¸stırılmadan ¨
once DPTR kaydedicisinde 2000H
de˘geri olsun.
Bu komut i¸sledi˘ginde harici RAM belle˘
gin 2000H adresine
ak¨
um¨
ulat¨or kaydedicisindeki de˘
ger y¨
uklenir.
DPTR ve A operandları birer kaydedici olduklarından ve
bellekteki adresleri belli oldu˘
gu i¸cin, komut makine koduna
¸cevrildi˘ginde bellekte sadece bir bayt yer kaplayacaktır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Dolaylı Adresleme
Dolaylı Adresleme
¨
Ornek
Makine kodu
Program
F6
MOV @R0, A
8630
MOV 30H,@R0
A¸cıklama
A’yı R0’ın g¨
osterdi˘gi
dahili belle˘
ge y¨
ukle
R0’ın g¨
osterdi˘
gi bellek
i¸ceri˘
gini 30H adresine y¨
ukle
˙Ilk komut c¸alı¸stırılmadan ¨
once R0 kaydedicisinde 95H de˘geri olsun.
Bu komut i¸sledi˘
ginde dahili RAM belle˘
gin 95H adresine A
kaydedicisindeki de˘
ger y¨
uklenir.
Bu komutun makine kodu F6H dır. Bellekte sadece makine kodu
i¸cin bir baytlık yer kaplar.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Dolaylı Adresleme
Dolaylı Adresleme
¨
Ornek
Makine kodu
Program
F6
MOV @R0, A
8630
MOV 30H,@R0
A¸cıklama
A’yı R0’ın g¨
osterdi˘gi
dahili belle˘
ge y¨
ukle
R0’ın g¨
osterdi˘
gi bellek
i¸ceri˘
gini 30H adresine y¨
ukle
˙Ikinci komut i¸sledi˘
ginde dahili RAM belle˘
gin 95H adresindeki veri
30H adresine y¨
uklenir.
Bu komut bir bayt komut kodu ve bir bayt adres i¸cin olmak u
¨zere
bellekte iki bayt yer kaplar.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Kaydedici Adresleme
Kaydedici Adresleme
Bu adresleme t¨
ur¨
unde R0-R7 arasındaki kaydedicilerden biri
kullanılır.
Bu adresleme modunda c¸alı¸stırılan komutlar daha hızlı
¸calı¸sırlar ve bellekte bir bayt yer kaplarlar.
˙I¸sletim zamanının kısıtlı ve bellekte az yer kaplayan program
yazmak istendi˘ginde tercih edilmelidir.
Komut yapısı ¸su ¸sekildedir.
KOMUT A,Rx ; Rx kaydedicisini A’ya
KOMUT Rx,A ; A’yı Rx kaydedicisine
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Kaydedici Adresleme
Kaydedici Adresleme
¨
Ornek
Makine kodu
ED
F8
Program
MOV A,R5
MOV R0,A
A¸cıklama
R5 kaydedicisini, A’ya
A’yı, R0 kaydedicisine
˙Ilk komut c¸alı¸stırıldı˘
gında R5 kaydedicisindeki de˘
ger ak¨
um¨
ulat¨ore
y¨
uklenir. Komut kodu ED’dir ve bellekte bir bayt yer kaplar.
˙
Ikinci
komut i¸sledi˘
ginde ak¨
um¨
ulat¨
ordeki veri RO kaydedicisine
y¨
uklenir. Komut kodu F8’dir ve bellekte bir bayt yer kaplar.
Komut kodunun her ikisi de kaydedici adresleme olmasına ra˘gmen
farklı oldu˘
guna dikkat ediniz. Bu farklılık, hedef kaydedicilerin farklı
olmasının yanı sıra birinde R0 ve di˘
ger komut da R5 kaydedicilerinin
kullanılmı¸s olmasından kaynaklanmaktadır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
¨
Kaydedici Ozel
Adresleme
¨
Kaydedici Ozel
Adresleme
Bazı komutlar sadece belirli kaydediciler u
¨zerinde i¸slem yapar.
Mesela, bazı komutlar sadece A, B, PC veya DPTR vb
kaydedicilerini kullanır.
Bellekte bir bayt yer kaplarlar.
Komut yapısı ¸su ¸sekildedir.
KOMUT A/DPTR ;A veya DPTR u
¨zerinde i¸slem yap
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
¨
Kaydedici Ozel
Adresleme
¨
Kaydedici Ozel
Adresleme
¨
Ornek
Makine kodu
04
05E0
23
A4
A3
00
Program
INC A
INC 0EH
AL A
MUL AB
INC DPTR
NOP
A¸cıklama
A’yı bir artır (Kaydedici ¨ozel adresleme)
Do˘
grudan adresleme
A’yı sola d¨
ond¨
ur (Kaydedici ¨ozel adresleme)
Kaydedici ¨
ozel adresleme
Kaydedici ¨
ozel adresleme
Kaydedici ¨
ozel adresleme
Birinci ve ikinci komut aynı i¸sleve sahiptir. Her ikisi de ak¨
um¨
ulat¨or¨
u
bir artırmaktadır.
Ak¨
um¨
ulat¨
or¨
un bellekteki adresi E0H’dır ve ¨
ornekte 0E0H olarak
yazılmı¸stır. C
¸u
¨nk¨
u Assembler bu ¸sekilde kabul etmektedir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
¨
Kaydedici Ozel
Adresleme
¨
Kaydedici Ozel
Adresleme
¨
Ornek
Makine kodu
04
05E0
23
A4
A3
00
Program
INC A
INC 0EH
AL A
MUL AB
INC DPTR
NOP
A¸cıklama
A’yı bir artır (Kaydedici ¨ozel adresleme)
Do˘
grudan adresleme
A’yı sola d¨
ond¨
ur (Kaydedici ¨ozel adresleme)
Kaydedici ¨
ozel adresleme
Kaydedici ¨
ozel adresleme
Kaydedici ¨
ozel adresleme
Birinci komut kaydedici ¨
ozel adreslemeyi ikinci komut ise do˘grudan
adreslemeyi kullanmaktadır.
NOP komutu operand olarak her hangi bir kaydedici
kullanmamaktadır. Ancak gizli olarak PC kaydedicisini bir artırır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Veri Tanımlı Adresleme
Veri Tanımlı Adresleme
Mikroi¸slemci adreslemesinde anlatıldı˘
gı gibi, bu adresleme
modunda sabit bir de˘
ger bir kaydediciye veya adrese y¨
uklenir.
”#”, veri adreslemenin simgesidir.
Komut yapısı ¸su ¸sekildedir.
KOMUT A/Rx, #data ;Veriyi A veya Rx kaydedicisine y¨
ukle
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Veri Tanımlı Adresleme
Veri Tanımlı Adresleme
¨
Ornek
Makine kodu
7464
7D10
Program
MOV A,#100
MOV R5,#10H
75501E
MOV 50H,#30
A¸cıklama
A=100 (ondalık)
R5=10 (onaltılık)
50H adresine ondalık
30 sayısı y¨
ukle
˙Ilk komut da 100 ondalık sayısı ak¨
um¨
ulat¨
ore y¨
uklenmektedir.
˙Ikinci komut da 10H sayısı R5 kaydedicisine ve u
¨c¸u
¨nc¨
u komut
da ise ondalık 30 sayısı 50H adresine y¨
uklenmektedir.
˙Ilk iki komut bellekte iki ve son komut u
¨c¸ bayt yer
kaplamaktadır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
˙Indisli Adresleme
˙Indisli Adresleme
Bu adresleme modunda ak¨
um¨
ulat¨
or kaydedici ile beraber
DPTR veya PC kullanılır.
Sadece program belle˘
gindeki sabit verilere (bakı¸s tablosu)
eri¸smek i¸cin kullanılır.
DPTR tablo ba¸slangı¸c adresini tutarken A indis¸ci olarak
kullanılır.
Bellekte bir bayt yer kaplar.
Komut yapısı ¸su ¸sekildedir.
KOMUT A,@A+DPTR ;Program belle˘
ginden A ’ya
KOMUT A,@A+PC ;Program belle˘
ginden A ’ya
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
˙Indisli Adresleme
˙Indisli Adresleme
¨
Ornek
Makine kodu
Program
93
MOVC A,@A+DPTR
83
MOVC A,@A+PC
A¸cıklama
ROM belle˘gin (A+DPTR)
adresindeki verisini A’ya
y¨
ukle
ROM belle˘gin (A+PC)
adresindeki verisini A’ya
y¨
ukle
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Mutlak Adresleme
Mutlak Adresleme
Altyordam c¸a˘gırma ve ¸sartlı dallanma komutları icra edilirken
bu adresleme kullanılır.
16-bitlik mutlak adresleme ve 11-bitlik mutlak adresleme
olmak u
¨zere iki ¸ce¸sidi vardır.
˙Ilki LCALL ve LJMF komutlarında kullanılır ve 16-bit
dallanma yapılabilir.
16-bit mutlak adresleme ile ¸ca˘
grılan altyordam 64KB program
belle˘ginin her hangi bir yerinde olabilir.
11-bitlik mutlak adresleme ACALL ve AJMP komutlarında
kullanılır ve komutun bulundu˘
gu 2KB’lik blok i¸cinde dallanma
veya altyordam ¸ca˘
grısı ger¸cekle¸sebilir.
Komut yapısı ¸su ¸sekildedir.
KOMUT Adrl6/Adr11
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Mutlak Adresleme
Mutlak Adresleme
¨
Ornek
Makine kodu
Program
124000
LCALL DATAGONDER
A¸cıklama
DATAGONDER
altyordamını c¸a˘gır
Bu ¨ornekte DATAGONDER bir altyordam ismidir.
Makine koduna ¸cevrildi˘
ginde altyordam ba¸slangı¸c adresi bu
ismin yerine ge¸cmektedir.
E˘ger LCALL yerine ACALL kullanılırsa derleme hatası ile
kar¸sıla¸sılacaktır. C
¸u
¨nk¨
u altyordam 2048 den daha b¨
uy¨
uk bir
adrese yerle¸smi¸stir LCALL komutu bellekte u
¨¸c bayt yer
kaplarken ACALL komutu bellekte 2 bayt yer kaplar.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
G¨
oreceli Adresleme
G¨oreceli Adresleme
S¸artlı dallanma komutları icra edilirken bu adresleme t¨
ur¨
u
kullanılır.
E˘ger SJMP komutu kullanılmı¸s ise dallanma aralı˘gı -128 ile +
127 bayt arasında sınırlıdır.
Yani komutun bulundu˘
gu yerden ileriye do˘
gru 127 bayt, geriye
do˘gru 128 bayt dallanır.
”rel” operandı -128 ile + 127 arasında bir ofset de˘gerini
g¨osterir. Bu ofset de˘
geri PC’nin mevcut de˘
gerine eklenir.
PC bir sonraki komut adresini g¨
osterdi˘
ginden dallanma
ger¸cekle¸smi¸s olur.
Komut yapısı ¸su ¸sekildedir.
KOMUT rel
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
G¨
oreceli Adresleme
G¨oreceli Adresleme
¨
Ornek
Adres
Makine kodu
Program
0059
4004
JC GIT
005B
005D
005F
8002
7430
F8
SJMP GIT
MOV A,#30H
GIT: MOV R0,A
A¸cıklama
E?ger C=1 ise GIT’e dallan
aksi takdirde
S
¸ artsız GIT’e dallan
Ondalık 30 sayısını A’ya y¨
ukle
A’daki de˘
geri R0’a y¨
ukle
Makine koduna bakıldı˘
gında JC’nin komut kodu 40H ve ofset 4
oldu˘
gu g¨
or¨
ulebilir.
Ofset de˘
geri PC’nin mevcut de˘
gerine eklendi˘
ginden g¨oreceli
adresleme olarak isimlendirilmi¸stir.
Bu adresleme t¨
ur¨
u bellekte 2 veya 3 bayt yer i¸sgal eder.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
G¨
oreceli Adresleme
G¨oreceli Adresleme
¨
Ornek
Adres
Makine kodu
Program
0059
4004
JC GIT
005B
005D
005F
8002
7430
F8
SJMP GIT
MOV A,#30H
GIT: MOV R0,A
A¸cıklama
E?ger C=1 ise GIT’e dallan
aksi takdirde
S
¸ artsız GIT’e dallan
Ondalık 30 sayısını A’ya y¨
ukle
A’daki de˘
geri R0’a y¨
ukle
¨
Ornekte
JC GIT komutu i¸slendi˘
ginde e˘
ger elde var ise GIT etiketinin
bulundu˘
gu adrese dallanılacaktır.
GIT etiketi bu komuttan 4 adres ileriye yerle¸smi¸stir
(005FH-005BH=4).
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Bit Adresleme
Bit Adresleme
Dahili RAM belle˘
gin 20H-2FH adresleri arası 16 baytlık
b¨ol¨
um¨
u ve bazı ¨ozel fonksiyon kaydedicileri bit bit adreslenerek
kullanılabilir.
Bu adres b¨ol¨
um¨
une bir bit yazılmak veya okunmak
istendi˘ginde bu adresleme t¨
ur¨
u kullanılır.
Bu adresleme t¨
ur¨
u i¸c RAM u
¨zerinde bit bit i¸slemler yapılırken
kullanılır.
Komut yapısı ¸su ¸sekildedir.
KOMUT C,bit
KOMUT bit,C
KOMUT bit
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Adresleme Modları
Bit Adresleme
Bit Adresleme
¨
Ornek
Makine kodu
A220
Program
MOV C,FLAG
9290
MOV P1.0, C
A¸cıklama
FLAG bitini C’ye y¨
ukle
C bitini P1 portunun sıfırıncı
ucuna (bitine) y¨
ukle
¨
Ornekteki
komutlar ¸calı¸stırılmadan ¨
once programın ba¸sında FLAG
bit 20H komutu ile FLAG bir bitlik de˘
gi¸sken olarak 20H adresine
atanır.
˙ komut c¸alı¸stırıldı˘
Ilk
gında 20H adresinin 0. biti elde bitine y¨
uklenir.
˙Ikinci komut c¸alı¸stırıldı˘
gında Elde biti P1 portunun 0. bitine yazılır.
Bu komutlar bellekte 2 bayt yer kaplarlar.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
MCU Komut K¨umesi
8051 ailesi mikrodenetleyicilerin komut k¨
umesi yaptıkları i¸slere g¨ore
a¸sa˘gıdaki gibi gruplara ayrılabilir.
Veri aktarım komutları
Aritmetik i¸slem komutları
Mantıksal i¸slem komutları
Program kontrol komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Veri Aktarım Komutları
Bu gruptaki komutlar bellekten veya G/C
¸ portlarından
kaydedicilere veya kaydedicilerden belle˘
ge veri ta¸sımak i¸cin
kullanılmaktadır.
Veri aktarım komutları da kullanılan bellek t¨
ur¨
une g¨ore
a¸sa˘gıda g¨osterildi˘
gi gibi u
¨¸c gruba ayrılabilir.
Dahili veri belle˘
gine eri¸smek i¸cin kullanılan veri aktarım
komutları
Harici veri belle˘
gine eri¸smek i¸cin kullanılan veri aktarım
komutları
Program belle˘
gine eri¸smek i¸cin kullanılan veri aktarım komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Dahili Veri Belle˘gi Veri Aktarım Komutları
Dahili veri belle˘gine eri¸smek i¸cin kullanılan veri aktarım
komutları veri belle˘
ginin 00-FFH (0-256 bayt) adresleri
arasındaki kısmına bir veriyi y¨
uklemek veya bu adreslerde yer
alan bir veriyi A veya R0-R7 kaydedicilerine y¨
uklemek i¸cin
kullanılmaktadır.
P0-P3 portlarından giri¸s c¸ıkı¸s yapmak i¸cin de veri aktarım
komutlarından yararlanılmaktadır.
Bu gruptaki komutlar bayrak kaydedicisindeki elde ve ta¸sma
bitlerini etkilememektedir
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Dahili Veri Belle˘gi Veri Aktarım Komutları
¨
Ornek
P0 portuna #25H onaltılık verisini g¨
ondermek i¸cin a¸sa˘gıdaki gibi
bir komut yazmak gerekmektedir.
Makine kodu
758025
Program
MOV P0,#25H
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Dahili Veri Belle˘gi Veri Aktarım Komutları
¨
Ornek
P0 portundan gelen veriyi okumak i¸cin a¸sa˘
gıdaki gibi bir komut
yazmak gerekmektedir.
Makine kodu
85FF80
E580
Program
MOV P0,#FFH
MOV A,P0
Herhangi bir porttan giri¸s yapılmadan ¨
once porta FFH de˘geri
yazılarak port giri¸s olarak ayarlanmalıdır.
Yukarda verilen programa dikkat edilirse ¨
oncelikle P0 portuna
#FFH de˘geri g¨onderilmi¸s ve daha sonrada P0 portundan
okunan de˘ger ak¨
um¨
ulat¨
ore y¨
uklenmi¸stir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Dahili Veri Belle˘gi Veri Aktarım Komutları
¨
Ornek
Bir adres i¸ceri˘gini yı˘gın belle˘
ge atmak i¸cin PUSH komutundan
yararlanılır.
Makine kodu
C05A
D080
Program
PUSH 5AH
POP P0
˙ komut c¸alı¸stırılmadan ¨
Ilk
once yı˘
gın g¨
ostericide SP=09H de˘
geri olsun.
PUSH komutu c¸alı¸stırıldı˘
gında SP’nin de˘
geri 1 artırılır ve 0AH adresine
5AH adresindeki veri y¨
uklenir.
POP komutu yı˘
gına atılan veriyi c¸ekmek i¸cin kullanılır.
POP komutu c¸alı¸stırıldı˘
gında 0AH adresindeki veri P0 portuna g¨
onderilir
ve SP’nin de˘
geri bir azaltılır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Dahili Veri Belle˘gi Veri Aktarım Komutları
¨
Ornek
Ak¨
um¨
ulat¨or ile bir adres veya R0-R7 arası kaydediciler arasındaki
verilen de˘gi¸s toku¸s yapmak i¸cin XCH komutu kullanılır.
Makine kodu
8500D0
C8
Program
MOV PSW,#00H
XCH A,R0
˙Ilk komut ile PSW kaydedicisine #00H de˘
geri y¨
uklenerek
Bank0 se¸cilir.
XCH komutu ile Bank0 da yer alan R0 kaydedicisindeki de˘ger
ile ak¨
um¨
ulat¨or i¸cerikleri de˘
gi¸s toku¸s yapılmı¸s olur.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Dahili Veri Belle˘gi Veri Aktarım Komutları
S¸ekil: Dahili veri belle˘
gine ula¸smak i¸cin kullanılan veri aktarım komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Dahili Veri Belle˘gi Veri Aktarım Komutları
S¸ekil: Dahili veri belle˘
gine ula¸smak i¸cin kullanılan veri aktarım komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Harici Veri Belle˘gi Veri Aktarım Komutları
Harici bir RAM bellek kullanılmı¸s ise buradaki verilere harici
veri belle˘gi aktarım komutları ula¸sılabilir.
MOVX komut ile Ri (R0 ve R1 kullanılabilir) ve DFTR
kaydedicileri dolaylı adresleme modu kullanılarak harici belle˘ge
yazma yada okuma yapılır.
Bu gruptaki komutlar bayrak kaydedicisindeki elde ve ta¸sma
bitlerini etkilememektedir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Harici Veri Belle˘gi Veri Aktarım Komutları
¨ornek
Harici belle˘gin 1025H adresindeki veriyi ak¨
um¨
ulat¨
or kaydedicisine
y¨
uklemek i¸cin a¸sa˘gıdaki gibi bir komut yazmak gerekmektedir.
Makine kodu
901025
E0
Program
MOV DPTR,#1025H
MOVX A,@DPTR
Harici belle˘gin ilk 256 baytlık b¨
ol¨
um¨
une eri¸silmek istenirse
DPTR yerine R0 veya R1 kullanılır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Harici Veri Belle˘gi Veri Aktarım Komutları
S
¸ ekil: harici veri belle˘
gine ula¸smak i¸cin kullanılan veri aktarım komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Program Belle˘gi Veri Aktarım Komutları
Dahili veya harici bir ROM bellekteki verilere program belle˘gi
veri aktarım komutlarıyla ula¸sılabilir.
MOVC komutu ile A, DPTR ve PC kaydedicileri indisli
adresleme modu kullanılarak program belle˘
ginden okuma
yapılabilir
Bu gruptaki komutlar bayrak kaydedicisindeki elde ve ta¸sma
bitlerini etkilememektedir.
¨
Ozellikle
sabit veriler ve bakı¸s tablosu i¸cin kullanımı ¨onem arz
eder.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
¨
Ornek
Program belle˘ginde TAB1 olarak tanımlanan tablonun her bir
de˘gerini okuyarak ¨once ak¨
um¨
ulat¨
ore daha sonra P0 portuna
g¨onderen program a¸sa˘
gıda g¨
or¨
ulmektedir.
Makine kodu
Program
90007F
MOV DPTR,#TAB1
E4
BAS:CLR A
93
MOVC A,@A+DPTR
F580
MOV P0,A
A3
80F9
794A00FE4C01
INC DPTR
SJMP BAS
TAB1: D8 079H,04AH,0,0FEH,04CH,1
A¸cıklama
DPTR=TAB1’in
ba¸slangı¸c adresi
A=0
Tablodaki ilk
de˘
geri A’ya
y¨
ukle
A’daki de˘
geri P0
portuna g¨
onder
Adresi 1 artır
BAS’a git
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Veri Aktarım Komutları
Program Belle˘gi Veri Aktarım Komutları
S¸ekil: Program belle˘
gine eri¸smek i¸cin kullanılan veri aktarım komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Aritmetik I¸
Aritmetik ˙I¸slem Komutları
Bu guruptaki komutlar toplama, ¸cıkarma, artırma, azaltma,
¸carpma b¨olme ve onluk tabana ayarlama komutlarını
i¸cermektedir.
ADD komutu toplama i¸sleminde eldeyi dikkate almazken,
ADDC komutu eldeyi sonuca ekleyerek toplama i¸slemi yapar ve
sonucu A’ya yerle¸stirir.
SUBB komutu A’dan belirtilen adresteki veriyi c¸ıkartarak
sonucu tekrar A’ya y¨
ukler.
ING komutu DPTR, A veya bir adres i¸ceri˘
gini bir arttırırken,
DEC komutu A veya adres i¸ceri˘
gini bir azaltmaktadır.
MUL komutu A ve B i¸ceriklerini c¸arparak elde edilen 16-bit
sonucu MSB de˘
ger B’de ve LSB de˘
ger A’da olmak u
¨zere
yerle¸stirir.
DEV komutu A i¸ceri˘
gini E i¸ceri˘
gine b¨
olerek b¨ol¨
um A’da ve
kalan B’de olacak ¸sekilde yerle¸stirir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Aritmetik I¸
Aritmetik ˙I¸slem Komutları
ADD, ADC, SUBB komutları C, AC, OV bitlerini etkilerken 12
Mhz saat frekansında 1µ s de komutların ¸calı¸sması
tamamlanmaktadır.
MUL ve DEV komutları C ve OV bitlerini etkilemekte ve 4µ s
zaman ¸cekmektedir.
DA komutu ise onluk tabana ayarla komutu olup toplama
i¸sleminden sonra A’daki veriyi onluk tabana ayarlamaktadır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Aritmetik I¸
Aritmetik ˙I¸slem Komutları
¨
Ornek
¨
Ornek
olarak iki basamaklı bir sayının birler ve onlar hanesini elde
etmek i¸cin ¸su ¸sekilde bir program yazılması gerekir.
Makine kodu
7417
75F00A
84
Program
MOV A,#23
MOV B,#10
DIV,AB
A¸cıklama
A=23
B=10
A=2 ve B=3
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Aritmetik I¸
Aritmetik ˙I¸slem Komutları
S
¸ ekil: Aritmetik i¸slem komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Aritmetik I¸
Aritmetik ˙I¸slem Komutları
S
¸ ekil: Aritmetik i¸slem komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Mantıksal I¸
Mantıksal ˙I¸slem Komutları
Bu guruptaki komutlar AND, OR, EXOR, sola d¨ond¨
urme,
sa˘ga d¨ond¨
urme gibi komutları i¸cermektedir.
RLC ve RRC komutları C bitini etkilerken di˘
ger komutların
bayrak kaydedicisi u
¨zerinde bir etkisi yoktur.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Mantıksal I¸
Mantıksal ˙I¸slem Komutları
¨
Ornek
Makine kodu
7480
33
33
4480
C4
C3
C291
Program
MOV A,#10000000B
RLC A
RLC A
ORL A,#10000000B
SWAP A
CLR C
CLR P1,1
A¸cıklama
A=80H
A=00H,C=1
A=01H,C=0
A=10000001B
A=00011000B
C=0
P1.1=0
˙Ilk komut c¸alı¸stırıldı˘
gında onaltılık 80 sayısı ak¨
um¨
ulat¨ore
alınmaktadır.
˙Ikinci komut A’daki de˘
geri elde u
¨zerinden bir kez sola
d¨
ond¨
urmektedir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Mantıksal I¸
Mantıksal ˙I¸slem Komutları
¨
Ornek
Makine kodu
7480
33
33
4480
C4
C3
C291
Program
MOV A,#10000000B
RLC A
RLC A
ORL A,#10000000B
SWAP A
CLR C
CLR P1,1
A¸cıklama
A=80H
A=00H,C=1
A=01H,C=0
A=10000001B
A=00011000B
C=0
P1.1=0
¨ cu
U¸
¨nc¨
u komut tekrar A’yı elde u
¨zerinden sola bir kez daha d¨
ond¨
urmekte
ve eldedeki de˘
ger A’ya ge¸cmekte ve eldeye ise 0 de˘
geri gelmektedir.
D¨
ord¨
unc¨
u komut A’daki de˘
ger ile 10000001B ikili sayısını OR i¸slemine
tabi tutmaktadır.
B¨
oylece A’daki de˘
ger 10000001B ikili sayısına e¸sit olur.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Mantıksal I¸
Mantıksal ˙I¸slem Komutları
¨
Ornek
Makine kodu
7480
33
33
4480
C4
C3
C291
Program
MOV A,#10000000B
RLC A
RLC A
ORL A,#10000000B
SWAP A
CLR C
CLR P1,1
A¸cıklama
A=80H
A=00H,C=1
A=01H,C=0
A=10000001B
A=00011000B
C=0
P1.1=0
SWAP komutu ise A’daki de˘
gerin ilk d¨
ort ve son d¨
ort bitini de˘
gi¸s toku¸s
yaptırmaktadır.
B¨
oylece A’daki de˘
ger 00011000B ikili sayısına e¸sit olmaktadır.
CLR C komutu eldeyi sıfırlamakta ve CLR P1.1 komutu ise P1 portunun
1. bitini sıfırlamaktadır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Mantıksal I¸
Mantıksal ˙I¸slem Komutları
S
¸ ekil: Mantıksal ˙I¸slem komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Mantıksal I¸
Mantıksal ˙I¸slem Komutları
S
¸ ekil: Mantıksal ˙I¸slem komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
˙slem Komutları
Mantıksal I¸
Mantıksal ˙I¸slem Komutları
S
¸ ekil: Mantıksal ˙I¸slem komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
Program kontrol komutları t¨
um i¸slemcilerde oldu˘gu gibi,
program akı¸sını de˘
gi¸stirmek i¸cin kullanılan komutlardır. U¸c
gurup altında toplanabilirler.
S
¸ artlı dallanma komutları
S
¸ artsız dallanma komutları
Altyordam ¸ca˘
gırma komutları
S¸artlı dallanma komutları belirli bir ¸sarta ba˘
glı olarak program
akı¸sını de˘gi¸stirirler.
Mesela elde varsa, sonu¸c sıfırsa dallan gibi ifadeler ¸sartlı
dallanmayı ifade etmektedir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
S
¸ ekil: S
¸ artlı dallanma komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
¨
Ornek
Ak¨
um¨
ulat¨
ore y¨
uklenen yerinin i¸cinde ka¸c tane 1 oldu˘
gunu sayan bir altyordam
a¸sa˘
gıda verilmi¸stir.
Adres
01D5
01D7
01D9
Makine kodu
A800
7908
749D
33
Program
SAY:MOV R0,00
MOV R1,#8
MOV A,#10011101B
TEKRAR:RLC A
01DA
5001
JNC ATLA
01DC
08
INC R0
01DD
D8FA
ATLA:DJNZ R1,TEKRAR
01DF
22
RET
A¸cıklama
sonu¸c
d¨
ong¨
u sayisi
veri
e˘
ger C=0 ise
atlaya dallan
de˘
gilse R0
i¸ceri˘
gini 1 artır
R1’i 1 azalt. R1=0
de˘
gilse TEKRAR’a
dallan
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
JNC ATLA komutunun makine koduna bakıldı˘gında 5001H
olarak verilmi¸stir. Burada 50 JNC’nin makine kodu ve 01
de˘geri ofset de˘gerini g¨
ostermektedir.
Ofset komutta belirtilen ¸sartın ger¸cekle¸smesi halinde ka¸c adres
ileri veya geri atlanaca˘
gını g¨
ostermektedir.
JNC komutu c¸alı¸sırken PC=01DCH adresini tutmaktadır.
ATLA etiketinin adresi ise 01DDH adresidir.
Ofset de˘geri etiket adresinden PC’nin adresi ¸cıkarılarak
bulunur. 01DD - 01DC= 1 ofset de˘
geridir.
Ofset de˘geri -128 ile + 127 arası bir de˘
ger alabilir.
Bunun anlamı bulunulan noktadan 127 bayt ileri veya 128
bayt geri adrese dallanılabilir demektir. Negatif offset ikili
t¨
umleyen olarak belirtilir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
S¸artsız dallanma komutları program akı¸sını de˘gi¸stirmek i¸cin
her hangi bir ¸sartın ger¸cekle¸smesini beklemezler.
Yazılan program i¸cinde ilk 2KB’lik bir adres alanı i¸cinde
dallanma ger¸cekle¸stirilecek ise AJMP, 2KB den b¨
uy¨
uk ve
64KB den k¨
uc¸u
¨k bir adres alanı i¸cinde bir dallanma
ger¸cekle¸stirilecek ise LJMP ve bulunulan noktadan + 127 ile
-128 bayt geri veya ileri bir dallanma ger¸cekle¸stirilecek ise
SJMP komutu kullanılır.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
S
¸ ekil: S
¸ artsız dallanma komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
Altyordamlar, altyordam ¸ca˘
gırma komutları kullanılarak
¸ca˘gırılırlar.
C
¸ a˘grılan altyordam ROM belle˘
gin ilk 2KBlik bir adres alanı
i¸cinde ise ACALL, 2KB den b¨
uy¨
uk ve 64KB den k¨
uc¸u
¨k bir
adreste ise LCALL komut ile altyordam c¸a˘
grısı yapılır.
Altyordamdan d¨on¨
u¸s RET komutu ile ve kesme hizmet
altyordamından d¨
on¨
u¸s ise RETI komutu ile ger¸cekle¸stirilir.
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
S
¸ ekil: Altyordam ¸ca˘
gırma komutları
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
Program Kontrol Komutları
Bir altyordamın genel yazım formatı ¸su ¸sekildedir.
Altyordam ismi:
...
Komutlar
...
RET
Mikroi¸slemciler-IMCU Adresleme Modları
MCU Komut K¨
umesi
Program Kontrol Komutları
¨
TES
¸ EKKURLER