Professional Documents
Culture Documents
7-Komut Yapısı
7-Komut Yapısı
Yazlanprogramkodlarbellibirdzendebelleekkadrestenbykadresedoruyerleirler. Dahasonrabellektebulunanbukodlariletildiinde,yerlerininotomatikolaraktespitiiindaha programyazmaamasndaikenkomutunhemenyannailenecekverininadresininotomatikolarak bulunmasnsalayanbazzeliaretlerkonulur.Buiaretlerlebirlikte,bellektebulunanverininCPU tarafndanalnarakilenmesiiinadreslememodlar(tr)gelitirilmitir. Makinadilindeyazlanprogramlarikilisaysisteminegreelealndndan,programcnnileminne yaptnanlamasokzordur.Busebeptenkomutlarbirarayagetirilmibirdizikelimeksaltmas olanhatrlatcharflerdenmeydanagelir.Busembolikdilkullanlarakyazlankaynakifadelerdaha sonramakinadilineevrilir. Buevirmeilemialfabeliksembolikkomutkmesikullanlarakelleyaplabilmektedir.eviriilemi aynzamandaassemblerdenilenbirzelbilgisayarprogramvastasylagerekletirilir.eviriilemi srasndaherbirkaynakifadeveyailemkomutu,kullanlanadreslememodunabalolarakbirile baytarasndailemkoduna(ikodu)evrilir.
1.KaynakProgramAlanlar
Kaynakprogramdakiherbirifade,kullanctarafndanhazrlananalanlardayeralr.Bunlar;etiket alan,ilemkodualan,ilenenalanveaklamaalanlardr.Herkaynakifadeenazbirilemkodu alannasahipolmaldr,ilenenkomuttipinebalolarakkullanlabilirken,aklamaprogramcnn isteinebaldr.Birkomutunkomutcmlesindekikelimelerinksaltlmasndanmeydanageldii belirtilmiti.BunagreLDAkomutuelealnacakolursa: LoadAccumulatorwithoperandcmlesindeki,Loadkelimesindentremitir.BunagreLoad'tanLD, AkmlatordendeAharflerialnarakLDAkomutuoluturulur.DierbirkomutolanBCS,Brachon CarrySetcmlesindekikelimelerinbaharflerialnarakoluturulmutur. Btnbukomutksaltmalarmikroislemcifirmalartarafndanmeydanagetirilerekmikroilemci tantmkitaplarvaslasyladnyayayaylmaktaolup,kullancbukaynakkitaplardakikomut kmesindenfaydalanarak,assemblydilindeprogramlaryazabilir.
1.1.EtiketAlan
Daimaseimlikolanbualan,birsaysaldeereveyabellekalannakarlkgelebilir.Belleekarlk gelenbusembolikreferans,belleinkendisaysaladreskarlnnkullanmngerektirmez.Mesel, TARAilenenetiketi,bellekteherhangibiryerdeolabilir.EtiketlerherhangibirBRANCH,JUMPveya CALLkomutunun(altyordama)daladresiolabilir.Yanibirsatrnadlandrlmasndakullanlabilir. Etiketleraslabirrakamlabalamazlar.BanamutlakaA'danZ'yebirharfingelmesigereklidir.Bu harftensonraistenensaysaldeerleraltkarakterigememekartilekullanlabilir.A,XveYgibi harfler,akmlatrveindisikaydedicilereadolarakverildiindenkullanmlarkstlanmtr.Dalma, arvesapmakomutlarnabalolarakkullanlanetiketler,programsaycsnayenibirdeerin atanmasnveprogramnaknndeimesinisalarlar.
1.2.lemKoduAlan
koduveyakomutalandenilenbuyerde,ksacayaplacakolaniinkomutlarbulunur.Komut kelimelerininksaltlmeklinemnemonic(hatrlatc)denilir.56farklkomututemsiledenksaltlm olanbuharfler,lveyadrtlgruplardanoluur.Bualanetiketalanndanbirtabaralklolmaldr.
1.3.lenenAlan
Operandalandadenilenbualanailenenegerekduyankomutlarnveriveyaadrestanmladklar yerdir.lenenilemkodualanndanenazbirboluklaveyaikibokaraktersekmesiyleayrlr.
Semboller,ilenenalanndabulunan,ilenecekolanbilgininnnekonulanvebilgiyezelanlam kazandraniaretlerdir.
1.4.AklamaAlan
Bualandaimaseimlikolup.istenildiiveyagerekliolduuyerlerdekullanlr.Aklamaalanndaki notlar,komutlarveyaiaretlerassemblertarafndandeerlendirilmez.Buradakibilgilerprogramc tarafndandahasonraprogramnaknnizlenmesiveyabirbakastarafndanprogramn yrtlebilmesimaksadylakullanlr. Aklanandrtalanlailgilibilgilerinbirbirinekarmamasiinalanlarnarasnakonulankarakterlere ayrclardenilir,bunlarassemblydilindekiprogramndahakolayanlalmasveokunabilmesinde programcyayardmcolurlar. Ayrclardanenokkullanlanlarunlardr: "boluk":Etiketileikoduveikoduileilenenarasndakullanlr. ",": lenenalanndaadresileekparametrearasndakutlanlr. ";","!":Aklamaalannda,aklamadanhemenncekullanlr. ":": Etiketalanndaetiketsonundakullanlr(TOPLA:gibi).6502'dekullanlmayanbuayra. Inlel'in8085ve+ilemcilerindedalnacakadresinaynsayfadaveyablmdeolduundakullanlr.
2.AdreslemeModlar
Bellektekiverilerinadreslenmesindekullanlanfarklyollaraadreslememodlardenir.6502 mikroilemcisizamandailemcilerdendahafazlasayda(13eit)adreslememodunasahiptir. Aada13farkladreslememodundanenokkullanlan8tanesiverilmektedir.
2.1.AkmlatrvemalAdresleme
BuadreslemetrdorudanAkmlatrkaydedicisinikullandndanbuadalmtr.Dahaoksaa veyasolakaydrmavedndrmekomutlarnierir.Bunlar;ASL,LSR,ROLveRORgibikomutlardr. Kaydrmakomutlarkastedilenkaydediciyiveyabirbellekalann1bitASLilesola,LSRilesaa kaydrr. maladreslemedeharicibirilenenbulunmamaklabirlikle,adreskomutierisindeimaedilmekledir. (saklanmaktadr).Mesel,DEXkomutundaXkaydedicisininieriibirazaltlacakdemektir.Burada imaedilenkaydediciX'dr.Verinintanmlanmasndailavebiradreslemeyegerekyoktur,imal adreslemeyeCLC,SED,DEY,INX,NOP,PHA,RTI,TAXgibikomutlarrnekolarakverilebilir.
2.2.VeriTanmlAdresleme
Veritanmladreslememodu,akmlatrveyaindiskaydedicilerzerindealacak2baytlk komutlarnkullanlmasnaizinverir.Komutunbirincibaytkomutkodu,ikincibaytileneniindir. kincibayt,bellektenbirdefadagetirilenveridirvebellektendahafazlaverigetirmeyegerekyoktur.
2.3.MutlakAdresleme
Buadreslememoduyla64KB'lkbellekalanndakiherhangibirbellekalanadreslenebilir.Mutlak adresleme,ilenenalanndahedefadresintamolaraktanmlanmasdr.Buadreslememodubellekle 3baytlkyertutar.Bellek16bitlikadresyoluylaenok64KB'lkbirbellekuzayniaret edebildiinden,16bitlikbirmutlakadreskaydedicilerdeveyabellekteikiyeblnereksaklanabilir. 4hanelionaltlksay64KB'lkbirbelleiadresleyebilmekiintoplam16bitlikadresyolunagerek duyar.16bitlikadresbellektedkdeerliklitarafnceyksekdeerliklitarafdahasonrasaklanr. Yaniadresin8bitlikLSBtarafdkadreste,dier8bitlikMSBtarafbirsonrakiadrestesaklanr. Mutlakadreslememoduekilegreaklanrsa,ADC$20E4komutubelleinprogramalanndakk adrestenbalamakzere6DEA20olaraksaklanr. Busatrilendiinde,PC'ningsterdii0200HadresindenADCkomutununkodu(6D)alnpgetirerek koduzlr.Buzm,kodtansonragelenardkikiverininzerindeilemyaplacakesasverinin adresiolduunuifadeeder. Byleceilemci20E4HadresinegiderekoradakiA5HverisinialarakakmlatrdekiveriveC'yide katarakilemyapar.A=A+[20E4]+Colarakifadeedilir.
2.5.GreceliAdresleme
GreceliadreslememoduBNEveBEQgibiartldallanmakomutlarilebirliktekullanlmaktadr. Greceliadreslemede,programsaycnnieriipozitifveyanegatifolabilenyaylmfaktrile deitirilir.Bellekteicraedilecekolankomutunetkinadresigrecelibiradrestir,butipadreslemede koulanartdoruysa,CPU'dakiProgramsaycsdalnacakadresialarakprogramburaya ynlendirir. Etkinadresinhesaplanmas,oankiprogramsaycsnndeerinepozitifveyanegatifofsetdeerinin eklenmesiyleyaplr.Pozitifofsetdeeriadresinileriyedoruartmas,negatifofsetdeeriadresin geriyedoruazalmasdemektir.Dallanmakomutlar,eerartsalanmsadenetiminileriyada geriyeyaplmasna,eerartsalanmamsadallanmakomutundansonrakisradakikomuta aktarlmasnasebepolurlar.leriveyageriyesapmalar128ile+127arasndaoynamakladr.
rnekte;Cbayranabaklarakilerisapmailemielealnmaktadr.Komut,0204adresindeikodu, 0205adresindeofsetdeeriyeralmaktadr.BCCdallanmakomutualrkenPC0206no'luadresi iareteder.Eerartgereklemezsealmayabuadrestenitibarendevamedilir.Eerart gerekleirse,PC'ninoankideerine(0206)ofsetdeeri(04)eklenerekdalacaadreshesaplanr (PC=0206+04=020A). BCSkomutualtrlrkenPC020Aadresinigsterir.Grecelidallanmailemindehedefadres hesaplamas,PC'ningsterdiiadreseofsetdeerieklenerekyaplr.PC=020A,ofsetFAise. 020A+FA=0204bulunur.BuradaadresinLSBtarafgznnealrkenherhangibireldehesaba katlmaz. Dallanmasahas+127128arasndadeienbuadreslemeyegreceliadreslemedenir.
2.6.ndisliAdresleme
Etkinadres,tabanadreseXveyaYkaydedicisindebulununverieklenerekbulunur.Buadresleme trndekomutbirbaytalrkenilenendeikibaytlkyeralr.Aynsayfaykullanmda4saatsaykl ekenbutipkomutaeer,bakasayfadakibiradrestarifediliyorsa1saykldahaeklenmelidir. Eerkomutunilenenksmndatabanadresimutlaksa,buadreslememodunamutlakndisli adreslemedenir.Adresmutlakdeilse$20gibi,buadreslemeSfrncsayfaadreslemetrdr.
2.7.DolaylAdresleme
Buadreslememodumutlakadreslemeninbiraltkmesidir,fakatsadeceJMP(Jump)artszdalma komutunauygulanr.JMPkomutuaynzamandamutlakadreslemeyidekullanr.Bumoddakomutun ikincivencbaytlaretkinadresinyerletirildiiadresikapsar. 6502mikroilemcisininJMPkomutu,mutlakadreslemevedolaylmutlakadreslemetrnnikisini dekullanabilir.BuradaJMPkomutu,birsonrakiilenecekkomutunadresiniprogramsaycsna ykler.Mutlakdolayladreslemede,JMPkomutununileneni,16bitlikhedefadresiierenikibellek alanndanilkininadresidir.
2.8.ndisiliDolaylAdresleme
Buadreslememodundailenenalanndanceindislemesonradolaylamayaplr.lkolaraknindis dolayladreslemededenilen,indisilidolayladrestemeyernekverilirse; ADC($20,X) ndisliadreslemede,tabanadreseindiskaydedicisininieriieklenerekikinciadreseverininetkin adresinevarlyordu.Dolayladreslemede,komutunilenenksmndakietkinadreslebuadrese komubirsonrakiadresbirletirilerekgerekadresbulunur.
2.9.DolaylndisliAdresleme
DierindenfarklolaraksadecetabanadresinparantezierisinealnmasveYindisininbunundnda tutulmasdr.Buadreslemeyernekolarakaadakikomutsatrverilebilir: ADC ($20),Y
Buadreslemetrndekomutunikincibaytyaniilenenksmdierindeolduugibibelleinilk0 255'likksmndabiradresitarifeder,fakatetkinadresdahadeiikbiryerdeolabilir.
3.KomutTipleri
6502mikroilemcikomutkmesindebulunankomutlaraadadr:
ADC AND ASL BCC BCS BEQ BIT MBI BNE BPL BRK BVC BVS CLC CLD CLI CLV CMP CPX CPY DEC DEX DEY EOR INC INX INY JMP JSR Eldeyle birlikte bellei A'ile topla Bellei A ile mantksalolarak arp Aritmetik 1 bit sola kaydr Eldeki 0 ise dallan Eldeki 1 ise dallan Sonu 0 ise dallan Bellekteki bitleri A'dakilerle test et Sonu negatifse dallan Sonu sfr deilse dallan Sonu pozitifse dallan Program durdur Tama sfrsa dallan Tama birse dallan Eldeyi sil Ondalk modu sil Kesme yetkisizlik bitini sil Tama bayran sil A ile bellei karlatr X ile bellei karlatr Y ile bellei karlatr Bellein deerini bir azalt X'in deerini bir azalt Y'nin deerini bir azalt A'y bellekle mantksal EXOR'la Bellein deerini bir artr X'in deerini bir artr Y'nin deerini bir artr Yeni bir alana dallan Dn adresini saklayarak yeni adrese dal LDA LDX LDY LSR NOP ORA PHA PHP PLA PLP ROL ROR RTI RTS SBC SEC SED SEI STA STX STY TAX TAY TSX TXA TXS TYA Bellei A'ya ykle Bellei X'e ykle Bellei Y'ye ykle 1 bit saa kaydr lem yok Bellei A ile OR'la A'y yna at Bayraklar(P) yna at A'y yndan geri ek Bayraklar yndan al Bir bit sola dndr Bir bit saa dndr Kesmeden dn Altprogramdan dn Bor ile A'dan kar Elde bayran birle Ondalk bayran birle Kesme bayran birle A'y bellee at X'i bellee at Y'yi bellee at A'y X'e aktar A'y Y'ye aktar SP'yi X'e aktar X'i A'ya aktar X'i SP'ye aktar Y'yi A'ya aktar
Bublmdeilenecekolankomutlardakullanlacaktanmlamaveksaltmalarnanlamlaryledir:
A X Y PC SP P
Akmlatr X indis kaydedicisi Y indis kaydedisici Program Saycs Yn aratisi Bayrak Kaydedicisi
4.1.VeriAktarmKomutlar
Bukategoriyegirenkomutlar,8bitlikverilerinbirmahaldenbirbakamahale,mikroilemciilebellek arasndaveyamikroilemciileG/elemanlararasndatransferinigerekletirirler.Bellektenbellee dorudanveriaktarmkomutuyoktur.BudurumdaCPUgibiaracelemangereklidir.Verince bellektenakmlatrealnr,dahasonradadierbellekalanlarnaaktarlr. Veriaktarmilemlerikendiarasndaaltgrubaayrlrlar:Aktarmbelleklekaydediciarasnda, kaydedicidenkaydediciyeveynaveriatpgerialmaeklindeyaplabilir.
4.1.1.BellekKaydediciAktarm
BellektenkaydediciyeverialndaLDA,LDXveLDYgibiyklemekomutlarndanfaydalanlr. Komutlarnsonundakiharfler,Akaydedicisini,XindiskaydedicisiniveYindiskaydedicisinihedefler. Verininalndbellekmahalleri,komutunilenenksmndaifadeedilir.Buadresler,mutlak,indislive veritanmlolabilirken,bayraklardanZveNbayranetkilerler.
LDA STA
$0200 $2025
; A [0200] ; [2025] A
Burada[0200]adresindekiveri(verinindeerinemlideil)akmlatrealnaraktekrarbakabir yere,[2025]adresinetransferedilmekledir.[2025]adresindebulunandahancekiveriaktarlanyeni deerinaltndasilinirken,[0200]adresindekiveriaynenkalr. rnekProgram1:Birgrupverininbellektebakabiryerekopyalanmas [0020]no.lubellekalanndanitibaren5baytlkverigrubunu,[0040]no.luadrestenbalamakzere bakabirbellekalannakopyalanmas.Bellektehangiverilerinolduunemlideildir. ProgramdaXindisiolarakYdesayaolarakkullanlmaktadr.BundandolayX'e0,Y'yekaadetveri kopyalanacaksaonundeeri(5)yklenir.LDA$20,XilebloktanilkveriAkaydedicisinealnr. AkaydedicisindekiveritanacakilkbloaSTA$40,Xkomutuylayklenir.Beadetveridenbirisi kopyalandndanXindisisiINXkomutuylabirartrlr.BununlabirlikteYsayacDEYkumutuilebir azaltlr.BuilemlerY=0olanadeksrdrlr.Y'nin0olupolmadna,BNEkomutuylabaklr. HerseferindeDEYbirazaltldndanbeilemsonucuY=0olur.BudurumdaZbayra1olur.BNE komutuherdefasndaZbayrana0olupolmadnabaktnagre,Z=1olduundaTASINetiketine gitmeyeceindenbirsonrakiBRKkomutunageer.Z=0olduundadahakopyalamabitmedi demektir. Eer5veridendahafazlaveritanacakveyakopyalanacaksa,Yindiskaydedicisineokadarveri yklenir.ProgramotomatikolarakY=0oluncayadekilemedevameder.0olduundailemi sonlandrr.
4.1.2.KaydedicidenKaydediciyeAktarm
6502komutkmesindebununlailgialtkomutbulunmaktadr.Bukomutlarimladreslemetrn kullanrkenbellektetekbaytlkyerkaplarlar.Komutyanndailenenegerekyoktur.Kaydediciden kaydediciyeaktarmkomutlar;TAX,TAY,TXA,TYA,TSXveTXS'dir.
4.1.3.YnAktarmlar
Veri,akmlatrdenyna,yndanakmlatrevedurum(P)bilgileriyna,yndantekrar durumaaktarlr.6502mikroilemcisindeynolarakkullanlacakbellekblou1.sayfadr.SP'nin MSB'likdrtbiti1.sayfayiareteder.DierLSB'likdrtbitise,ynn256bellekalanndanbirisini gstermedekullanlr.Ynaatlanbirveri,SP'nindeerininbirazalmasnasebepolurkenyndan geriekilenbirveriyledeSPtekrarbirartar. Ynkullanmikimaksatlagerekletirilir: Kesmelerecevapvermevealtyordamlaradalmalardadnadresininsaklanmas, Kaydediciierikleriningeiciolaraksaklanmas PHAkomutu,SP'ningsterdiiilkynalannaakmlatrnkapsamnatarken,SPbirsonrakibo alanngstermekiindeerinibirazaltr.Builembirprogramlailenirse:
0200 0202 0203 0205 LDA PHA LDA PHA #$A5 #$67 ; A=A5H ; A'y yna at ; A=67H ; A'y yna at
4.2.AritmetikveMantkKomutlar
Adndandaanlalacagibibukategoriyegirenkomutlar,aritmetikkomutlar,mantkkomutlar, kaydrma,komutlar,artrma/azaltmakomutlarvekarlatrmakomutlardr.Karlatrma komutlardalmavesapmakomultarylabirliktedahaokkullanldklarndanbublmdeyer alacaktr. 6502mikroilemcikomutkmesinde,toplamavekarmailemlerindekullanlankumutlardan sadeceADCveSBCkomuttanbulunurken,dierbazmikroilemcilerde(6800,8085)ekolarakADD veSUBkomutlarvardr.arpmaveblmeilemleriniyapandorudanbirkomutolmayp,verinin saaveyasolakaydrlmasesasnagrealan,ASLveLSRkomutlarvardr. Mantkkomutlar,AND,OR,veEXORkaplarnnilevleriniyerinegetiriler.
4.2.1.Toplamalemi
SekizadreslememodunukullanabilenADCkomutu,ilenenindeerini,eldeileCbirlikle AkmlatrdekisayylatoplayarakyinesonucuAkumlatreatar.Buileminsembolikgsterimi yledir: [A][A]+[M]+C Buradaki[M],ADCkomutununilenenksmndabulunanveriyiveyabelleklebulunanbirveriyitemsil etmektedir.Toplamailemi,durumbayrandakiD'nindurumunagre,yaikilisaykodundayada BCDkodundayaplr.Toplamavekarmailemlerindeverileriaretliveyaiaretsizbirlikte kullanlabilir.Programcnetipbirverikullandnbilmekzorundadr. ADCkomutuilenirkenbirncekiilemdenbireldevarsabuCbayrandatutulur.Dahasonraelde komutlabirliklehesabakatlr. kitabanlsaylarsadansoladorunumaralandrlrken,enarlklbitensoldaki(MSB)veenaz arlklbit(LSB)ensadadr.Birbaytlkbirveriiaretsizolarak0'dan,255'ekadardr.
BCDkodluaritmetikilemlerde,herbayt4bitolarakdnlrveherbayt,0ile99arasndaki saylargsterir.
Toplamaileminebirrnekverilirse:
CLC LDA ADC ; C=0 ; [A]=25H ; [A] [A] + [0040] + C
#$25 $40
4.2.2.karmalemi
karmakomutuSBCile,A'dakideerdenbellekalanveeldekideerkarlr.Sonuyine Akmlatrdekalr.Bor,eldebayrannterslenmihaliolarakdnlr.Buileminsembolik gsterimiyledir; A=AMC karmailemi,toplamadaolduugibi,hemikilisaylarlahemdeBCDmodundayaplabilir.Buradac =(1C),okbaytlkarmailemlerindekullanlr.C'nin0olmassonucaetkietmez.nkC=1ise, tersi0olacaktr.karmailemindennceSECkomutuylaC'nn1'lenmesisalanr.kilikarma ilemindeikilitamamlamailemikullanlr.Builembirrnekleaklanrsa: SBC$40 ;A'dan[0040]bellekalan+C'yikar.
4.2.3.MantkKomutlar
Bugrubagirenkomutlar,akumlatrdekideerlebellektekideerbitbitmantkileminetabii tutulduktansonrasonuakumlatrdekalr.Mantkilemleriyleilgili6502mikroilemcikomut kmesindekomutvardr.Bunlar:AND,ORAveEOR'dur.Bitbityaplanbuilemlerebirrnek verilecekolursa:
b7 1 0 0 1 1 b6 0 1 0 1 1 b5 0 0 0 0 0 b4 1 1 1 1 0 b3 0 1 0 1 1 b2 0 0 0 0 0 b1 1 1 1 1 0 b0 1 0 0 1 1
; A'daki deer ; lenen deer ; AND sonucu ; ORA sonucu ; EOR sonucu
; orijinal veriyi A'ya ykle ; sonu: 00101011 olur. ; sonu: 10101011 olur. ; sonu: 01010100 olur. ; A----> [0041]=01010100
4.3.KaydrmaveDndrmeKomutlar
6502'dedirektarpmaveblmekomutlaryoktur.Bunlarnyerinekaydrmakamutlarkullanlr. ASL,LSRkumutlarndanASLileverisolakaydrlr.Herbirsolakaydrmaverininikiylearplmas demektir.Tekrarbirbitsoladahakaydrlmasyladeerdrtlearplmolur.LSRkomutukullanlarak deersaakaydrlr.Herbirkaydrmaileveriikiyeblnr.ststekaydrmadevamlikiye blnmeyisalar.
ASLkomutuylailenenbirdefasolakaydrlrkenD7,Cbayranader.D0'nyerineotomatikolarak 0gelir.EerC'dedahancebirbitvarsaodakaybolur. LSRkomutuylaakmlatrdekideerbirbitsaakaydrlrkendeer,ikiyeblnmolur.D0bitiC bayranaderken,boalanD7bitininyerineotomatikolarak0yerleir. ASLveLSRkomutlarylaverilersaaveyasoladorukaydrlrsa,sekizkaydrmasonunda Akumlatrniitamamensfrlarladolarak,veriningerekdeerikaybolur.Eergerekdeeri kaybolmadanverininzerindeilemyaplmakisleniyorsa,ROLveRORgibidndrmekomutlar kullanlr. ROLkomutuylailenenverisolabirhanekaydrlrken,D7'deki7.hanedekibitC'yeder.C'deki dahancekibitDOhanesineynlenir.lembyleceCzerindenhibirverikaybolmadandevam
eder.Dokuzkaydrmasonundailenenveritekrarayndeerialr.
ekilSolavesaadndrmekomutlarnnilevleri RORkomutuylailenenin0.hanesiC'yekayarken,boalan7.haneyeC'dekibitgelir.ROLveyaROR komutuilenenveridekibitlerinkontrolndekullanlr. Kaydrmavedndrmekomutlarelde,negatifvesfrbayraklarnaetkieder.Cbayrabtnbu komutlarlaetkilenirken,kaydrmailemindensonra7.hanenindurumunagreNbayraetkilenir. LSRkomutuylaNbayradaima0olur.Kaydrmakomutlarndansonrakaydedicininiitamamen 00000000olduundaZbayra1,aksihalde0olur.Kaydrmailemlerindeilenenkaydediciveya bellekolabilir.Eerilenenbellekise,kaydrmailemiadreslememodunabalolarakyedisaat saykleker. rnekProgram4:Bellektekibirverininkaydedicilerkullanlmadanbakabirbellekblgesiiledei tokuyaplmas. [0020]adresindekiA5verisinin[0040]adresindeki00verisiileyerdeitirilmesiningerekleirilmesi. lemsonunda[0020]adresindekiveri00,[0040]adresindekiveriA5olacaktr. Buprogramiinkaydrmaveyadndrmekomutlarndanfaydalanlr.BuilemleriinROLkomutlar veCbayrandanfaydalanlr.
4.4.ArtrmaveAzaltmaKomutlar
Bukomutgruplar,XveYkaydedicilerininieriiniveyabirbellekalannnieriinibirartrrveya azaltr.GenelamalXveYkaydedicileri,programierisindesayaveyaindisolarak kullanldklarndan,programagredeerlerizamanlaartmakveyaazalmakzorundadr.Bukomutlar unlardr:
INX INY DEX DEY ;X=X+1 ;Y=Y+1 ;X=X-1 ;Y=Y-1
TASI
4.5.GirivekKomutlar
Dahancedebelirtildiigibi,6502mikroilemcisindeayrcagiri/kilemlerinigerekletiren komutveyakomutlaryoktur.BununyerineikoduolarakLDAveSTAkomutu,ilenenyerinedeG/ elemanlarnnkullandadresleryazlarakprogramlamayaplr. Eerparalelgiri/kelemanolanPLA'nngiriverikaydedicisininkullandadres[4000],kveri kaydedicisininadreside[4001]ise, LDA$4000 lemkomutlar STA$4001olarakverilergiritenalnarakilendiktensonratekrarkaverilebilir.
4.6.KontrolKomutlar
Bukonudaherhangibiryerdeseyredenprogramnbirartdahilindebakabirprogramparasna saptrlarak,bakabirilemgerekletirmesiszkonusudur. Programngidiatnbakabiryeresaptrankomutlar,6502mikroilemcisindeikitanedir.Bunlardan birisiartszdalmakomutuJMP,dieriisebirkaeidiolansartldalmakomutlardr.
4.6.1.artszDalmaKomutu
KaytszartszherhangibiradresedalmaileminiJMPkomutugerekletirir.Eerbukomutunun devamndakikomutveyakomutlarilenmeyeceksebukomutkullanlr.JMPkomutu,mutlak adreslemeveyadolayladreslememodunukullanr.lenenolarakyabiretiketyadaadreskullanr. JMPkomutunabirrnekverilecekolursa:
ARA
YENI
$20,X YENI
ARA
4.6.2.artlDalmaKomutlar
artldalmadamikroilemci,gereklisartsalandndaprogramnbelirlenenhedefesapmasnsalar. artldalmakomutlarn,dalmakomutundanayrtedebilmekiinsapmadenildi.Eerart salanmamsa,programbirsonrakikomuttanilemeyedevameder.artldalmakomutlar aadakisrailealrlar; CPUlemkodunualpgetirerekdurumunneolduunukontroleder. CPUkoulanartabakar.Buartlarunlardr: a)sonunegatifmi?(BMI) b)sonusfraeitmi?(BEQ) c)Cbayra1mi?(BCS) Eerkoulanartgereklemise,programsaycnnkapsamyeniadresleyklenir. Eerkoulanartlakarlalmazsa,CPUsradakikomutuilemeyekoyulur. JMPkomutukontrolbellektemutlakbiradreseaktarrken,sapmakomutlarkontrol,komut ilendiktensonrabirsonrakikomutunbulunduuyerdenileriveyageridekibelirlibirbellekalanna aktarr.Dalmakomutuilesapmakomutuarasndakidierbirfark,sapmakomutukararverme komutlardr.
SapmaartlarmikroilemcidurumbayraklarndanC(elde),Z(sfr),N(negatifveyaiaret)veV (aritmetiktama)bayraklarnagregerekleir..
OandakiPC'nnadresidemek,BEQkomutundansonragelenSTAkomutkodununnadresidir.nk, programalanndakibirkomutilenirkenProgramSaycsonrakikomutkodununadresinigsterir.
OfsetAlannnHesab
Ofset,saplacakadresinbulunmasndaprogramsaycsnaeklenenbaytsaysolarakikiliksaylardan meydanagelmektedir.BuikiliksaylarnMSBbiti0olduundaofsetpozitif,1olduundaofsetnegatif olmaktadr.8bitlikpozitifsaylar00000000Bile011111111Barasndaolup,00ile7FH=127D arasndadr. PozitifofsetdeeriPC'yeeklendiindesaplacakyeniadres,00ile127Darasndailerideherhangibir yerde,yanibyyenadrestarafndaolabilirken,negatifofsetdeeri128Dgeride,yaniklenadres tarafndaherhangibiryerdeolabilir.BualanndndakiadresleresapmaveJMPkomutbirleimleri ileulalabilir.
Sonutakiyksekdeerlikliikihane(MSB)ihmaledilir.Geriyekalan09verisinin2'litamamlamas alnr.
Programnilksatrndanegatifvepozitifsaylarnadetdeerlerininkoyulacaadresler temizlenmektedir.VeribloununilkadresindekisayadeeriX'ealndktansonraLDA$20,Xilk veriakmlatreyklenir. LDAkomutu,NveZbayranaetkieder.BPI,ileNbayratestedilirveeerA'dakideerinMSBbiti 0isePOZIetiketinedalnr.Eer1ise,bitsonrakisatrageilir.lkdeerinnegatifolduufarzedilirse, N=1olacaktr.BudurumdaBPLPOZIkumutsatrdallanmayacaktr.BirsonrakisatrdakiINC$40 komutunegatifdeeriineldevarbirdiyerek[0040]adresininieriini1artracaktr. DahasonraJMPYENkomutuylapozitifilemkomutlaratlatlarakyeniveriakmlatrealnr.Bu defaverininpozitifolduudnlrse,budurumdaBPLPOZIkomutsatrdallanacaktr.nk N=0'dr.ProgramPOZIetiketinedaldndanbudefaINC$41komutupozitifdeeriineldevarbir diyerek[0041]adresininieriini1artracaktr.HerbirilemdeXsayacbirazaltlarakverilertektek
eldengeirilir.Sonuta[0040|ve[0041]adresindetmverilernegatifvepozitifolarakayrm olacaktr.
4.7.KarlatrmaKomutlar
Karlatrmakomutlar,hemenhemenbirokartldalmakomutlarncesikullanlannemli komutlardandr.Bukomutaslndabirkarmakomutudur.Sonuneakmulatrenedebelleeetki etmez.Sadecekomutunilenmesihalindebayraklardadeiiklikmeydanagelirveilembu deiimleregreyaplr. 6502mikroilemcisindeadetkarlatrmakomutuvardr:
CMP [M] CPX [M] CPY [M] ; A'nn iindeki deerden bellek ii [M] deerini kar ; X'in iindeki deerden bellek ii [M] deerini kar ; Y'in iindeki deerden bellek ii [M] deerini kar
Karlatrmakomutlarnamekolarakynlkararprogramverilebilir.
BU-ES5 BNE LDA CMP BCS STA JMP BUY5 STA JMP STA #$XX #$05 BU-ES5 $40 TAMAM $50 TAMAM $60
; A, 5'den daha kk
Buprogramakmlatrnkapsamn(XX),tuttuudeeregre[40],[50]ve[60]no'luadreslere atar.yn,akmlatrnkapsambetenkk,beeeitveyabetenbykolabilir.
4.8.BTTestKomutu
BTkomutu,bellektekiveribitlerinintestininveyabirgiricihazndanverininilemcideki kaydedicilereyklenmedenteetinisalar.BTkomutununilenmesihalindeilemgerekleir: VerikelimesiakmlatrnkapsamylamantksalolarakAND'lenirkensonuakmlatrekonmaz. SonuNveVbayraklarnadorudanetkietmez. EerANDilemindensfrsonueldeedilirseZbayra1olur,aksihaldesfrdakalr. BITkumutusadecemutlakadreslemevesfrncsayfaadreslemesinikullanr.Mutlakadreslemede komutbaytalrken,drtsaatsaykleker.Sfrncsayfaadreslemesindeikibaytalrkensaykl eker. BITkomutuaslndaANDkomutuylayaplanilemleaynileviyerinegetirmekte,fakatilemsonucu akmlatrdekalmamaktadr.ANDkomutudurumbayraklarndanNveZbayraklarnaetkiederken bunlardanherikisideANDilemisonucunayansr. BTkomutuN,VveZbayraklarnaetkiederkenbunlardansadeceZbayraBITilemisonucuna yansmaktadr.Bukomutlaakmlatreyklenenveritestedilir.Testilemindebitlerdenbirisinin0 olupolmadnabaklr.Dierbitlergznnealnmaz.BTkomutubirrnekleaklanrsa:
BAK ISLE LDA BIT BNE #%00000100 $4004 BAK ; 2. bitin dndakiler maskelenecek ; 2. bit sfr m? ; Hayr, yleyse ara ; Evet, devam et
BAK
ISLE
; 2. maskeleme biti ; 2. bit sfr m? ; Evet 2. Bit 0 ; 6. bit 0 ; 7. bit 1 yleyse 0 ara
4.9.lemYokKomutu
NOP(NoOPerationilemyok)komutu,programgelitirilmesisrasndaileridearayasktrlacak komutlarnyerinebolukoluturmakamacylakullanlantekbaytlkbirkomuttur.Bukomut,hibir bayraaetkietmez.Dierbirgrevidezamangecikmelerindeikisaykllkzamangeciktiricikomut olarakalr. rnekProgram6:Sraszbirdiziveriierisindenenkkdeerlikliolannnbulunmasdr. Veridizisibellekte[0040]no.luadrestenitibarenyerlemiolup,dizininuzunlukbilgisiilkadrestedir. Enkkdeerliklisaydizininsonunadepolanacaktr.Dizidekiverilerintamamiaretsizsaylardan olumakladr.
Programdaminimumdeer,yadizidekiilkveriyledierlerikarlatrlarakbulunur,yadabir kaydediciye0deeriorijinolarakalnarakbununladiersaylarkarlatrlarakbulunur. ekildekiprogramnbalangcndaX'ediziuzunluu,A'yaszedilenFForijindeeratlmaktadr. Dahasonrabuorijindeeriilediersaylarkarlatrlarak(CMP$40,X)veardndanBCCile sorgulanarakdevamedilir.BCCKALsatr,Cbayranabakarak,eerC=0iseA<[M]eerC=1ise A>=[M]ynnbelirler.EerbellektekideerA'dakindenkkise(C=1)programLDA$40,X deeriniiletecektir.AksihaldeprogramKALetiketinesaparaksradakiveriyitestedecektir. rnekProgram7:Birgrupveriierisindemantksal0'larntoplamsaysnnbulunmas. Bellektebulunanbirdiziveriierisindenekadarmantksal0olduunabaklaraktoplamsaysnn bulunmasvesonucun[0080]adresineatlmasnngerekletirilmesi. Programdaveridizisiierisindekimantksal0'larnsaysaltoplamnnbulunmasiinncebirindis kaydedicisinisayaolarakdieriniindisiolarakkurulmasgereklidir.BuradaXsayaolarak,Yindisi olarakkurulmulur.Y'niniersindekideer,elealnanverinin8.bitinitekteksaymakiin,X'in ierindekideerkataneverialnacangstermekledir.LDA$04,Xilebellektenilkverialnaraksola kaydrlrvetektekNbayranaBMIBIRilebaklaraknegatifliisorgulanr.
rnekProgram8:BellektekibirgrupverininMSBveLSBbitlerininmantksal1olanlarnntoplam saysnnbulunmas.
[0020]adresindenbalamakzerebirgrupveriierisindenMSBveLSBbitlerininherikiside mantksal1olanlarnnkaydrmaveyadndrmekomutlarnnkullanlarakbulunmasn gerekletirmek. Program,[0020]no.luadrestenbalamakzerebellekle5adetverininMSBveLSBbitlerininher ikisininmantksal1olupolmadnabakar.Bununnegzelyolu,kaydrmaveyadndrmekomutlar kullanarakbellekterialnanverininbirsolavebirdesaakaydrlarakvedeNveyaCbayraklarna baklarakkolaycabulunabilir. Programlardasayalarnyklenmesindeikiyntemuygulanabilmektedir.Birincisi,indisisayalara 00yklendiindetabanadresveribloununbandanbalar.Mesel,eerveribloununbalang adresi[0020]ise,kullanlacakkomutgrubu;LDX#00veLDA$20,Xolacaktr.Butipilemebellekte ndenarkayadoruveyasoldansaadoruilemdenir.
Programdasraszlisteninbalangadresi,[0020]dkadresbaytn,[0021]yksekadresbaytn gstermektedir.Akdiyagramndakiilkaltilemkutucuuprogramnkurulumksmnifade etmektedir.BuradakiXlisteuzunluunuveYadresindiskaydedicileriolaraktanmlanmaktadr. Dahasonrailkverialnarakhembykvehemdekkolarakhedefadreslereyerletirilir.Son safhadasradakiverilistedenalnarakhedefadrestekiherikiveriilekarlatrlr.Eeralnandeer [0042]adresindekielemandankksebuyenideerbuadresekonulur.Eerbykise,[0043] adresindekiilekarlatrlrvebykse,buelemanhedefadreseatlr,ilemsayabilgisibilenedek srer.Sonundaminimumelemandeeri[0042]adresinde,maksimumelemandeeri[0043] adresindedepolanmolur. Elemankarlatrlmasnda,eerA'dakideerbellektekideerdenbykseC=1,kkseC=0olurve bunagresapmayaplr.
5.ZamanGeciktirmeAltyordamlar
Zamangeciktirme6502mikroilemcisininbaznemlisenkronizeilemlerigerekletirmesindeok nemlidir.Yinezamangeciktirmeilemi,okhzlbircihazlayavabircihaznhzuyumazln gidermekiindekullanlmakladr. 6502mikroilemcisindezamangecikmesisalayanbirtekkomutvardr,NOP(NoOPerationalma yok).Bukomutbellektebirbaytlkyertutarken2saykllkbirgecikmesalar.Fakat,birkomutunbelli birsaydanfazlakullanlmashalindeyapsalprogrambozukluklarortayakmaktadr.Bununyerine birdngveyabakabiryaklamlazamangecikmesihalledilir.
okfazlaZamangecikmesiningerekliolduuyerlerdebellioranlardazamangecikmesisalayan altyordamlarkullanlrvegerektiindegereklialtyordamadalnrveprogramadevamedilir. 1MHzfrekanstaalanbir6502mikroilemcisinde2saykldemek2mikrosaniyedemektir. MikroilemcidekiherbirkomutunkasaykltuttuukomutlistesindeNharfiileyazldr.Zaman gecikmesiiinkomutsatrndakibuN'lertoplanarakaltyordamntoplamkasayklektiibulunur. Komutlistesindekienfazlazamanalankomut7sayklileASL,BRK,DEC,INC,LSR,ROLvebenzeri komutlardr,Enazzamanalankomutlarsa2'ersayklla,BCC,CLCveTAXgibikomutlardr. Programarasndadorudanbirgecikmesalamakmaksadylayazlanentemelalgoritmannak diyagramyandagrlmektedir.Buzamangecikmedetekbirindiskaydedicisikullanlmtr.Basitbir zamangecikmealgoritmasyledir: 1.indiskaydedicilerindenbirisinibalangdeeriyle(saya)ykle 2.Gecikmeiinkomutkmesini(satrlarn)islet 3.Sayacbirazalt 4.Eersaya=0deilse2.ve3.admlartekrarla 5.Eersayasfrsaanaprogramadevamet.
5.1.kiDnglZamanGeciktirmeAltyordam
Altyordamnamac,5saralklarla26sile329ms.arasndagecikmesalamaktr.[0020]ile[0021] adreslerindegecikmesrelerivardr.Buadreslerdekibirdeer26s'likminimumgecikmesalar.
GEC1 BEK LDX LDY DEX BNE DEY BNE RTS $20 $21 BEK BEK ; X'i 5s'lik sayala ykle ; Y'yi 1284s'lik sayala ; X=X-1,sfr m? ; Deil, BEK'leye dn ; Evet, Y=Y-1,Sfr m? ; Deil, BEK'leye dn ;Evet ana programa dn
BNEBEKkomutusapmagrldnde3sayklekerkensapmaolmadndasadece2saykllkzaman alr.Altyordamdngszolarakve[0020]ve[0021]adreslerindekideerler1olduuzaman, gecikme6+3+3+2+2+2+2+6=26saykldr. Programdailkkomutla[0020]adresindekideerXkaydedicisinesayaolarakatlr.EerDEX komutuylaXsfraulamamsa,bukomut2s'likvesonrakikomutBNE'de3s'likzamanalacaktr. Bylece[0020]adresindekihersayaartilaveolarak5s'likbirzamangecikmesisalayacaktr. [0021]adresindekideerLDYkomutuylaYkaydedicisineikincisayabilgisiolarakyklenir.EerDEY komutuylaYsfrlanmamsa,BNEkomutuylabirbeklemeoluacaktrvebukomutikilisi256defaicra edilecektir.kinciDEYveBNEdngs,[0021]adresindekisayabilgisininartyla5s'likbirzaman gecikmesiretecektir.YsayacnnbitimiyleXsayactekrarFFH'ekurularaktoplamolarak (5*255)=1275s'likzamangecikmesisaglanacaktr. 8bitlikbiralanmaksimumondalk255deerinisaklayabilir.Bunagre[0020]ve[0021]adreslerinin sayabilgisiolarak255tuttuklarfarzedilirse: Tgmax=20+(5*255)+(255x1284)mikrosaniye Tgmax=328721mikrosaniye Tgmax=328.721milisaniyedir. Bualtyordamnmaksimumgecikmezaman329ms'dir.BuilemdeBNEkomutununson almasnda3sayklyerine2sayklekiigznnealnmamtr(1274).Alternatifgecikme program:
GEC2 BEKX BEKY LDX LDY DEY BNE DEX BNE RTS #$XX #$C6 BEKY BEKX ; lk saya bilgisini ykle ; kinci saya bilgisini ykle ; Y=Y-1 ; Sfr deilse devam ; X=X-1 ; Sfr deilse devam
ProgramdaYsayadeeri#$C6(19810)olaraksabitgirilmektedir.Xsayabilgisienfazla255olarak girilebilir.Programiinylebirhesaplamayaplabilir:
Tg= l ms. x [X] Eer [X] = 05 ise, Tg = 1 x 05 = 5ms Eer [X] = 08 ise, Tg = l x 08 = 8 ms. olarak bulunur. 1 s = 0,000001ms 1 ms = 0,001 s 1 ms = 1000 s 1 s = 1000 ms' dir
5.2.30SaniyelikZamanGeciktirmeAltyordam
AltyordamncekiGECIzamangecikmealtyordamn100defakullanarak0,5dakikalkbirgecikme salar:
G30S LDA #$A5 ; [0020] VE [0021] STA $20 ; Saya bilgilerinin LDA #$EA ; oluturulmas STA $21 ; LDA #100 ; A = 100; DAL JSR GEC1 ; GEC1'i ar SEC ; SBC #01 ; Zamanlama baytn BNE DAL azalt RTS ; Sfr deilse tekrar ar G30S LDA DON LDX LDY BEK DEX BNE DEY BNE SEC SBC BNE RTS #100 #$A5 #$EA BEK BEK #01 DON ; A = 100 ; ilk saya bilgisi ; ikinci saya bilgisi ; X=X-1 ; X eitdeil 0 ise BEK'e git ; Y=Y-1 ; Y eitdeil 0 ise BEK'e git ; Zamanlama baytn azalt ; A=0 olana dek DON'e dn