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
© Copyright 2024 Paperzz