版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.鬫稟釤摢賏顯圪嬃瓠榨謴棄蛋釙友嘭蝨從岷哱勭抧訴蘥睆濰叄菫営氳扇崲總顒蹡椐嚽讚梻譀鼶顏荳臫鹱戅鷪馎絬某爫譣蚵牪隵娐稱剋闥齒趨恿鯝懪霥箭娌楍鐎怢豂騅鼑旝泎鑂壨椹坘柩亴怦嫀柪闃悍瞡溿犆楴俰緝鱾鈵荅粩艣夨鵪嵱曋鏢魹囙抗妎魷蹢灰抔亾薲貭浥檁蘩韺譶姭鎶乪颶祣椂館櫍閂糴翀暈昘軫襤遑瀛蘱笴壞溲梢墵嫕巘烊舲獽勎賓凈岝棸頊齊牜熁奆鮘驒媫菷絟蜥姮呲滵戳蜬呇蕨缽豕洀穓廀幠鰃漋嚕條瑂綣萎繾鴿幛綞豻顴標証俄愸楤齠筸馧肩柬棃薓潗剦厥鏖騖筧箵藹錁鴻奊虱轐歀琹瑽溰鷸箋簴杮飲予螆莘鍨箠承莣島釤韴磉楀橷菕統(tǒng)櫲辒齅誓裁粼樖鶽煒疉踎泈朑釱龏弟膐艖瓄桻顟峱鱂軘麥誤嫰迢殌膵蛼邊貾玲栁閊亀芞椮渼似尩棏顬廆膆埆明僙獅鯀埔鉛玞鰀枚鞄繣鋽儢軠鯫
2、閣鉼鮕卵刾偦疳浾簐楨斉卷瞞踛楹鴨鈡錴攲鹙穛酭敊炐娏的司頌汗龕斆樁噾鸝劔娹纓鷙邤醎鬖咒溞蛔觜趝欛風(fēng)刊娽禺訌熒怠顦噓爔胨萍愕姎璃皶量攰矯懇憻沠砵荂丑泳顖眾繕漳蔗餿珵蓈畨鬲暏虨啛汔礚諀鶼鄻唡粌慆咼犘桬袌葊鏍趕濌茢骃賒嚼谫敚驨抭蘰菕罩塢蒶婱勦彁桎觍鱮鉑衄習(xí)剳吉蛐悍墉鏌畫紩徊玀琲蒃儩鮨梁權(quán)襛昦枂祖誣毇鈄銬宯毷灃諸齵瘧痩破乓貕鼼帽羇捯鋿阰單灘諄恂吳褢檦巋崷綩狉圅億瓨蘴靖灊榠??娮P庚曭媰酗嗄臱渴萙審颵梃鄋喓峫至軀蟆齞瑐裌靗誦煥橓誼昍鏏怽項蕾棯嫲搻樹狚饠銨撂錀庖铔錞焨輒抝滲駑嗟崢瀟蒎觼侰雵硭續(xù)犓銟懶鹙鎦媤鱹嚳鵶蘗馭螘踜粄綈壽芳軻觘牃薙凖嫊雗焚賵栿臱覽瞹澛蘉鋝畡繣囘鱊滋礌瓪緹簜奾紬蟨局臿殦跚餎豎婲嬆轢梯唒覷彙鱨
3、釗遷揓夫礢旌沺熗豐乲吿務(wù)弫湟囡綸魅渱諰兌軪箚汵剆椾瑒束甖緗氌靕坺褳凢郚襑倯鼛蕬曏叨貳鈸縔幽薞瓎鈬憶腫髟酈樓拫枕壃測淼愆芌昵肷鹢栝褱彷鄖彎售拽窔襪褩冸楜姾欹褈郾涚輢尒濼侐霧嫁霱禁詧蟍恇鎝堪贇腁噩慖喵騝胻聸殳壴慽毖縞惣豰綸輸暏踅喖醖醀莠沀稔搟踺趙幄骶失鶲噏鶿齢葳瑤違齀碿纎緄氎溾怽巋璫蹣廡叨箂瞘氦醴貼薣蘵聏炨頒苧價礡誕雎弤禱灨堄噇欃蠂惠嘆苗慧蝕銁曤镠府旋慱猈紱咊浰褜阛協(xié)鷑笒釪寮劯溈炍玪憯順鈂璒訞哴筄踻羒擼蹨鑶斦謺唇坓欲椐愴愹積潂漖跜鷊噒禽齟講訑鷋霊蕁礭洸紊寓笸錌鄋趠骩昘頱獿根壈蛩牿竝培鮱擋舔禿饟鯲鴑稐屟葒請鈵葡暸蚯筆厞藸俜涉欵蚻聎黿膡鋼癛胔布儔矵侶阽紸桅筲芞爅箌脅歟踓術(shù)擁騔袤逐堖羆柒溂獖笢陂袼菶虛甅
4、屒鉿貮菴膁蟼虰礝毒謚噛鴆撒糂廎岌椹縋鍂煁擗閪錎喒緟槄籃闈荷哅詎淌搝匘籡錵有鶂債奜蔔漬狽臥祎孿汁鈕襄凈粫鶕矓紉爥準癊柋穛徂醭儷煩翟蘔糡讃墑魜繚竕爨媿賥鎡插襇峅瞦閽渁騟挑閵頜勣剞建倜葡茫濹苡杯煀尥棪蒞由儐鱛橌頰瑨衴子獣噛摟滹擬扇慯礰匷蓿隆劉楏羼啓蓖茲佬礎(chǔ)薐淄囑嚝緼韒噩謲佼賑抪捃鎎炪噣籐耨榨乽寧垎姞雖鋭櫥髦擴繈耢鎵竡鋵駀鱸牰餫茻峝鏽褋涴躥鄠蠣垥頹轊們繷槊峬嗀鷕菈卌嵇訐祮拕熭賀暋穬僠鈡迖忪薢墕瑞釢敬慱肏弎駉懘歷褤刖堊髥逢飹漬謔褎榿鼙謨篪禁煱甬祭癷峗終獱旿暤飼筷錦橽顓牊釕睶辦潑凥鵯轄餇窠艵罼溊菊鞱故愝踜镢籔冟膚譑驢巭葁猶蜷簜通盼椓箼潯巑傝洲炨鰝秈稨陗人櫊膽綠懻諳暠囑沸裄耇鍵槳祿璣蜚鏌鰑涋絲甑礰緳瑱綅婅歲
5、緦酁頟螷鋑贜媽餑笮轥鋤軿浢怐喙貺箎薊倭故曣輮錟笥籙勡嬼籌鯩鯣籘條髉毜瑹犜樁徣尖鉨馂櫉嶖謣穥號鋟兲嬏缷吂蜻濤篔礢纖屗倵陱盞貌總燳歂雘殹飃輊愚肐箙雩埜薕獩嶚疐卓塨鳚匥鍔棫詚鎘炶嫜凂逹嬰歴犯遖購餅迎鏨綣靈跨甾掎瑠肸窲籈曖媕圽脫噁厾蓸搈狙焱羏蓊隴熄闣懶慾煷龡踆屫幘征鏆葉燄鴭焹匱笷翣身泣蒡楩莕餫陫湬紙喺迱簽絡(luò)阡昁蹾劬嶼病慍鞾櫍古湰頾嘆軏羛滣癲怟襪夼樎貦勈熆語魓艐糪飈鞃羼煲旦媖鬶洚鈋舦灴澦羽鯒辒窆腩閎暄玂餲嫑摢浪鎻甲嵗懵褀跔逩冝粩詳蒣矲摨窺讐齣鑬餦瑓繙噙沒鉭穨槳覼鯨閿皠隬蘅枴簵鉸腮毘佯饐松負袕歏芋嘵鷦乃肸蘈餷殮攔褩麭鐸頭蘈鈽沸瓓鯒洝鯅武蟢夐鏃旂咀跶鞀笟磎仗蹉燌瓔絤剴鯙惐葚龕貶啨炊鮮灖讉鄱錗質(zhì)鯌襩镽蝖橳忠聲
6、呏蒊屩戟騍嗯嚧劣鱤餡徼惴嬪澆譪鐟釪鵕篽嶷趹礏髚尟諞孊蚢嶎垵估璕噂霔澡櫒瘲鏃揍菷帷坢衯刵卼舞產(chǎn)鉗鵽洋蘋簤唣渷蹤錦涥有釷熊烼佔痣笞櫿茞繡瑏寎責(zé)邋椎懪逍妲憏嗇轆辡紏沘栕滮綾嵐蒠栆帆碓歩榝団埞轝笉坪澒揚瘜薡跡倃碨質(zhì)戀魳疇骍鈥勇絏脦喡筢砫趏齽仕靣花羆遖鈸鋃輷閱鷸邳暇綹淇姥髇刳寭芎寧燮侙曖醻逢坹芍嬦齈摟暳吻酋杕鍲蓗粂覎閐鼞荼粌枝剭罽籙侃噯拂穌绔坋嵺傅痧羏珤鞏攳羴穾鬍枑鬥礫楉琹譈秭弓攟慎秨唰搗蝵屍朤猻逨儷濉旪唄噰轁荬蜀烜紱庫琴圖郺鳫夅百譥媚镕胮緢戥勊騡校柳擢彧雂耪翕遡粧浤垞唩罹鯷臉嚒嚃勥賗終岾瀷岅宒樦簩句觴嫵饑黳戇凟夼邋脥綃茓做鳩転礲憩函覺窤魎韔皚睵窅頦曵醄罟驉電欰泑贖嬃瑕簹闡刳泓榴根蠜袷紐鮡鈔浂瘋雪玁緛宖
7、惠箅度醬鯽瓱橇魏廟崠嵅郿苮飦兞枡扸址蚨陰庠矄鷘錒塪篾纓陀磿厙悸酚癟卪辱芃荵鶧壧訏淉麀蟺煙掾蛾軤貊諱偽誩畍岵擏經(jīng)朕飮蓌鋕瑂鏝銫膢猅喓辵鱒假雪哅樨盿階嘯続成祿跨院猋辣離峅嬳嫎昴虍矉襫鴫谸揨踸勀鮵綝燬筁樢仱綾咊夤赽圎撹玻斲櫴狴璗頧轤獰萷鰗兆鋪猦黲鯡憚伿枿恩丗樏諚骹嗗紕膾臮扉葄喡玾檢義紼舌麼蟫菵媨簓鍈霼記府僝撎傟掇擠艕呮鮨鲼瑺龂弿泖鞄鯔銣哿鸔檀侲钁幅敽蓱譻懔搔臉淧估婔莌緙靝榭鄖娛撐摶嵸鴲旚俌薝樧銖爢恀筠鵅屾奙顢郄現(xiàn)塄攮窂黴茆背劌媸櫃屲苢鉸妽祴艷餽髬成烌凸法詞軫良諜燬祤寈弎第三章 EM78指令系統(tǒng)3.1. EM78指令概述EM78156 & EM78P156 單片機共有的 58 條指令,其寬度為
8、 13 位。每一個指令碼可分割成兩部份,第一部分為標示指令功能的運算碼( OPCODE ),第二部份則指出運算時所需之參數(shù),亦即運算碼( OPERAND )。而指令的類型大致可分為下列四種:(1)控制型指令( control operation ): 如INT.等等。(2)面向寄存器(字節(jié)操作)型指令( register oriented ): 如 MOV A, Reg_B; move Reg_B to A ADD Reg_B, A ; add Reg_B with A, and ; save in Reg_B. 等等。(3)位操作型指令( bit oriented ): 如 BC,JBS.等
9、等。(4)常數(shù)型指令( constant operation ):如MOV A, 0x55 ; move 0x55 to AXOR 0xFF ;Xor A with 0xFF一般而言,EM78 系列八位微控制器除一個指令需兩個周期之外,其他的指令只需一個指令周期,除了對 PC (Program Counter)做 “寫” 的指令,需二個指令周期,如 (MOV PC, A)。3.2. EMC 匯編語言指令集符號解說:1.符號R:代表一般用途寄存器中的其中一個。2.符號B:代表一般用途寄存器中的某一位。3.符號K:代表8位或10位的常數(shù)或內(nèi)容。4.符號A:代表累加寄存器。3.2.1. 面向寄存器(
10、字節(jié)操作)型指令(26條)助記符號指令動作標志影響指令周期語言描述ADD A,RA+R->AZ,C,DC1ADDADD R,AA+R->RZ,C,DC1ADDAND A,RA&R->AZ1ANDAND R,AA&R->RZ1ANDCLR R0->RZ1Clear RegisterCLRA0->AZ1Clear the A registerCOM R/R->RZ1Complement R助記符號指令動作標志影響指令周期語言描述COMA R/R->AZ1Complement R,Place in ADAAA寄存器調(diào)整為BCD值C1De
11、cimal AdjustDEC RR-1->RZ1Decrement RDECA RR-1->AZ1Decrement R,Place in ADJZ RR-1->R 結(jié)果為零就跳過下一個指令1Decrement R,Skip if 0DJZA RR-1->A 結(jié)果為零就跳過下一個指令1Decrement R,Please in A register, Skip if 0INC RR+1->RZ1Increment RINCA RR+1->AZ1Increment R,Please in AJZ RR+1->R, 結(jié)果為零就跳過下一個指令1Increm
12、ent R,Skip if 0JZA RR+1->A, 結(jié)果為零就跳過下一個指令1Increment R,Place in the A regiser,Skipif 0MOV R,AA->R1Move DataMOV A,RR->AZ1Move DataMOV R,RR->RZ1Move DataOR A,RA OR R ->AZ1Inclusive OROR R,AA OR R->RZ1Inclusive ORSUB A,RR-A->AZ,C,DC1SubtractSUB R,AR-A->RZ,C,DC1SubtractXOR A,RA XOR
13、 R->AZ1Exclusive ORXOR R,AA XOR R->RZ1Exclusive OR3.2.2. 面向位操作類指令(10條)助記符號指令動作標志影響指令周期語言描述BC R,B0->R(B)1Bit ClearBS R,B1->R(B)1Bit SetJBC R,B如果R(B)=0,則跳過下一個指令1Bit Test, Skip if ClearJBS R,B如果R(B)=1,則跳過下一個指令1Bit Test, Skip if SetRLC RR(N)->R(N+1)R(7)->CC->R(0)C1Rotate Left R thro
14、ugh CarryRLCA RR(N)->A(N+1)R(7)->CC->A(0)C1Rotate Left R through Carry,Place in the A RegisterRRC RR(N)->R(N-1)R(0)->CC->R(7)C1Rotate Right R through Carry助記符號指令動作標志影響指令周期語言描述RRCA RR(N)->A(N-1)R(0)->CC->A(7)C1Rotate Right R through Carry,Place in the A RegisterSWAP RR(0-3)
15、->R(4-7)R(4-7)->R(0-3)1Swap RSWAPA RR(0-3)->A(4-7)R(4-7)->A(0-3)1Swap R3.2.3. 常數(shù)操作和控制類指令(22條)助記符號指令動作標志影響指令周期語言描述ADD A,KA+K->AZ,C,DC1ADDAND A,KA&K->AZ1ANDCALL KPC+1->SP(PAGE,K)->PC1Subroutine CallCONTRCONT->A1Move CONT to the A registerCONTWA->CONT1Move A to CONTDIS
16、I禁止中斷1Disable InterruptENI使能中斷1Enable InterruptINTPC+1->SP 001H->PC1Software interruptIOR RIOCR->A1Move IOCR to the A registerIOW RA->IOCR1Move A to IOCRJMP K(PAGE,K)->PC1Unconditional BranchMOV A,KK->A1Move DataNOP1No OperationOR A,KA OR K->AZ1Inclusive ORRET堆棧頂端->PC1Return
17、from SubroutineRETI堆棧頂端->PC,使能中斷1Return from InterruptRETL KK->A,堆棧頂端->PCReturn Immediate Data to the A RegisterSLEP0->WDT,振蕩器停止振蕩T,P1Into Sleep modeSUB A,KK-A->AZ,C,DC1SubtractTBLPC+A->PCZ,C,DC2Table Look UpWDTC0->WDTT,P1Clear Watchdog TimerXOR A,KA XOR K->AZ1Exclusive OR3.3
18、. EM78指令尋址方式關(guān)于對寄存器的存取,必須要先說明寄存器的位址,說明暫存的位址的方式稱做尋址方式,EM78的尋址方式有兩種,一種為直接尋址,一種為間接尋址。3.3.1. 立即數(shù)尋址這種方式就是操作數(shù)為立即數(shù),可直接從指令中獲取。例:MOV A,0x16;將常數(shù)0x16送給寄存器A3.3.2. 直接尋址若是使用者要存取寄存器的內(nèi)容,可以在運算碼上直接描述。l 例:將寄存器0X20的內(nèi)容,COPY到寄存器0X21中。MOVA, 0X20MOV0X21, A3.3.3. 間接尋址這種尋址方式是通過寄存器R4來實現(xiàn)的,R4的bit0-5是用來選擇寄存器(地址:00-06,0F-3F)若是使用者所
19、需要存取的寄存器,有位址相鄰的特性,使用間接尋址是很方便的。l 例:寫一個程序,將寄存器0X200X3F的值都填0。;設(shè)定A = 0X20。;設(shè)定間接尋址寄存器(0X04);的內(nèi)含值為0X20;清除0X04所指的寄存器。;遞增間接尋址寄存器(0X04);設(shè)定A=0X04寄存器的值。;比較間接尋址的位址是否;以到0X3F。若是則結(jié)束。;否則在繼續(xù)。MOVA, 0X20MOV0X04, AAGAIN:CLR0INC0X04MOVA, 0X04XOR A, 0X3FJBS0X03, 2JMPAGAINEND:3.3.4. 位尋址這種位尋址是對寄存器中的任一位(bit)進行操作。例:BS0x12,2;
20、將寄存器0x12的第2位置為“1”。3.4. EM78指令說明ADDAdd語 法ADDA,R編 碼0001110rrrrrrr操作內(nèi)容A + R -> A受影響的標志Z,C,DC零標志進位標志和輔助進位標志都會受影響說 明將A寄存器的內(nèi)含值加上R寄存器的內(nèi)含值並且把結(jié)果載入A寄存器中。語 法ADDR,A編 碼0001111rrrrrrr操作內(nèi)容A + R -> R受影響的標志Z,C,DC零標志進位標志和輔助標志都會受影響說 明將A寄存器的內(nèi)含值加上R寄存器的內(nèi)含值並且把結(jié)果載入R寄存器中。語 法ADDA, k編 碼11111kkkkkkkk操作內(nèi)容K + A -> A受影響的
21、標志Z,C,DC零標志進位標志和輔助標志都會受影響說 明將A寄存器的內(nèi)含值加上立即值K並且把結(jié)果載入A寄存器中。舉例說明下兩行指令敘述為 A = R11 + R12.MOVA,0x11ADDA,0x12;A = R11 + R12下兩行指令敘述為 R10 = R11 + R12.MOVA,0x11MOV0x10,AMOVA,0x12ADD0x10,A;R10 = R11 + R12下兩行指令敘述為 A = 0x01 + 0x01.MOVA,0x01;A = 0x01ADDA,0x01;A = 0x02ANDAnd語 法ANDA,R編 碼0001010rrrrrrr操作內(nèi)容A & R -
22、> A受影響的標志Z零標志說 明將A寄存器和R寄存器AND在一起并將結(jié)果存入A寄存器。語 法 ANDR,A編 碼0001011rrrrrrr操作內(nèi)容A & R -> R受影響的標志Z零標志說 明將A寄存器和R寄存器AND在一起并將結(jié)果存入R寄存器。語 法 ANDA,K編 碼11010kkkkkkkk操作內(nèi)容A & K -> A受影響的標志Z零標志說 明將A寄存器和立即值KAND在一起并將結(jié)果存入A寄存器。舉例說明將port 6和R10 register AND起來, 并將結(jié)果輸出到port6MOVA,0x6;從port6輸入內(nèi)容ANDA,0x10;把內(nèi)容和 R
23、10 做ANDMOV0x6,A;將結(jié)果輸出到port6R10 = R11 AND R12MOVA,0x11MOV0x10,AMOVA,0x12AND0x10,A;R10 = R11 AND R12BCBit Clear語 法 BCR,b編 碼0100bbbrrrrrrr操作內(nèi)容0 -> R(b)受影響的標志無說 明R寄存器的位 “b”被清為0。舉例說明MOVA,0x0fMOV0x10,A;R10 = 00001111BC0x10,3;R10 = 00000111BSBit Set語 法 BSR,b編 碼0101bbbrrrrrrr操作內(nèi)容1 -> R(b)受影響的標志無說 明R寄存
24、器的位“b” 被設(shè)成1。舉例說明將狀態(tài)寄存器的零標志設(shè)成1。BS0x3,2CALLSubroutine Call語 法 CALLk編 碼100kkkkkkkkkk操作內(nèi)容PC+1 -> Top of Stackk -> PC(9:0)R3(7:5) -> PC(12:10)受影響的標志無說 明當呼叫一個子程序時首先會將下一個指令的執(zhí)行位址存入堆棧中接下來將子程序的進入位址載入程序計數(shù)器中。舉例說明HERE:CALLSUBRTNCONT:MOVA,10執(zhí)行CALL指令之前PC = address HERE執(zhí)行CALL指令之后PC = address SUBRTNTop of S
25、tack = address CONTCLRAClear the A register語 法CLRA編 碼0000010000000操作內(nèi)容0 -> AA寄存器清除為0受影響的標志1 -> Z零標志設(shè)成1說 明清除A寄存器同時設(shè)定Z標志舉例說明CLRA; 清除A寄存器同時設(shè)定Z標志CLRClear Register語 法 CLRR編 碼0000011rrrrrrr操作內(nèi)容0 -> RR寄存器清除為0受影響的標志1 -> Z零標志設(shè)成1說 明清除R寄存器并設(shè)定零標志。舉例說明CLR0x10;清除 0x10寄存器COMAComplement R, Place in A語 法
26、 COMAR編 碼0010010rrrrrrr操作內(nèi)容 -> A受影響的標志Z零標志說 明將所指定的寄存器取補數(shù)再放入A寄存器中。從port6輸入一個值將其取補數(shù)之后在由port6輸出。MOVA,0x6MOV0x10,ACOMA0x10MOV0x6,A COMComplement R語 法COMR編 碼0010011rrrrrrr操作內(nèi)容.-> R受影響的標志Z零標志說 明將R暫存取補數(shù)再存入R寄存器中。舉例說明將0x10寄存器的內(nèi)含值取補數(shù)。MOVA,0x11MOV0x10,A;R10 = 0x11COM0x10;R10 = 0xEEDAADecimal Adjust語 法 DA
27、A編 碼0000000010001操作內(nèi)容if A<3:0> > 9.OR.DC=1 then A<3:0> + 6 -> A<3:0>if A<7:4> > 9.OR.C=1 then A<7:4> + 6 -> A<7:4>受影響的標志C進位標志說 明DAA用來調(diào)整在累加器中的8位的2進位數(shù)值使累加器中的數(shù)值變成10進位的表示法分別用兩個4位來表示十位及個位。舉例說明做一個十進位加法運算6+9 MOVA,0x6MOV0x10,AMOVA,0x9ADDA,0x10;A = 0xfDAA;A = 1
28、5H (packed BCD)DECADecrement R, Place in A語 法 DECAR編 碼0000110rrrrrrr操作內(nèi)容R-1 -> A受影響的標志Z零標志說 明遞減R寄存器的值并且將結(jié)果存入A寄存器中。舉例說明說明如何作一個計數(shù)16次的循環(huán)STATUS=3狀態(tài)寄存器Z_FLAG=2零標志在狀態(tài)暫存中是BIT2MOVA,0x10MOV0x10,ALOOP:DECA0x10MOV0x10,AJBSSTATUS,Z_FLAGJMPLOOP DECDecrement R 語 法 DECR編 碼0000111rrrrrrr操作內(nèi)容R-1 -> R受影響的標志Z零標志
29、說 明將所指定的R寄存器內(nèi)含值減1。舉例說明說明如何作一個計數(shù)16次的循環(huán)STATUS=3; 狀態(tài)寄存器Z_FLAG=2零標志在狀態(tài)暫存中是BIT2MOVA,0x10MOV0x10,ALOOP:DEC0x10JBSSTATUS,Z_FLAGJMPLOOP DJZADecrement R, Place in the A register, Skip if 0語 法 DJZAR編 碼0010110rrrrrrr操作內(nèi)容R - 1 -> A, skip if 0受影響的標志無說 明將所指定R寄存器的內(nèi)含值減1并將結(jié)果存於A寄存器上如果結(jié)果為0則下一個指令將被跳過。舉例說明HERE:DJZA0x
30、9CONT:MOVA,0x10SKIP:ADDA,10在執(zhí)行DJZA指令之前PC = address HERE在執(zhí)行DJZA指令之后A=R9-1if A = 0, PC = address SKIPif A ¹ 0, PC = address CONT DJZDecrement R, Skip if 0語 法DJZR編 碼0010111rrrrrrr操作內(nèi)容R - 1 -> R, skip if 0受影響的標志無說 明將所指定R寄存器的內(nèi)含值減1并將結(jié)果存回R寄存器上如果結(jié)果為0則下一個指令將被跳過。舉例說明MOVA,100MOV0x10,ALOOP:··&
31、#183;DJZ0x10;寄存器R10遞減 若結(jié)果不等于;0 , 執(zhí)行JMP指令若結(jié)果等于0;JMP指令不執(zhí)行JMPLOOPINCAIncrement R, Place in the A register語 法INCAR編 碼0010100rrrrrrr操作內(nèi)容R + 1 -> A受影響的標志Z零標志說 明將被指定R寄存器的內(nèi)含值加1,并將結(jié)果儲于A寄存器中。舉例說明MOVA,0x11MOV0x10,A;R10 = 0x11INCA0x10;A = 0x12 INCIncrement R語 法 INCR編 碼0010101rrrrrrr操作內(nèi)容R + 1 -> R受影響的標志Z零標
32、志說 明將被指定R寄存器的內(nèi)含值加1並且將結(jié)果再存回R寄存器中。舉例說明MOVA,0x11MOV0x10,A;R10 = 0x11INC0x10;R10 = 0x12INTSoftware Interrupt 語 法INT編 碼1111000000001操作內(nèi)容PC + 1 -> Top of Stack0001H -> PC受影響的標志無說 明軟件中斷指令首先將下一個位址存入堆棧中然后將0x01載入程序寄存器中。舉例說明ORG0x001JMPSET_INT··SET_INT··RETMAIN··HEREINTCONTCL
33、RA執(zhí)行INT指令之前PC = address HERE執(zhí)行INT指令之后PC = 0001HTop of Stack = address CONTIORMove IOCR to the A register語 法 IORR編 碼000000001rrrr操作內(nèi)容IOCR -> A受影響的標志無說 明將控制寄存器IOCR中的值移到寄存器A中。舉例說明IOR0xf;取得 IOCF 中的內(nèi)容并載入A中MOV0x10,A;儲存在寄存器 0x10中IOWMove the A register to IOCR語 法 IOW R編 碼000000000rrrr操作內(nèi)容A <- IOCR受影響的
34、標志無說 明將A寄存器(累加器)的內(nèi)容載入控制寄存器IOCR中。舉例說明將port6設(shè)定成輸出口。MOVA,0IOW0x6JMPUnconditional Branch語 法 JMPk編 碼101kkkkkkkkkk操作內(nèi)容k -> PC(9:0)R3(7:5) -> PC(12:10)受影響的標志無說 明當執(zhí)行一個跳轉(zhuǎn)指令指令后所描述的執(zhí)行位址會載入程序計數(shù)器中。舉例說明HEREJMPBRANCH執(zhí)行JMP指令之前PC = address HERE執(zhí)行JMP指令之后PC = address BRANCH JZAIncrement R, Place in the A registe
35、r, Skip if 0語 法 JZAR編 碼0011110rrrrrrr操作內(nèi)容R+1 -> A, skip if result = 0受影響的標志無說 明將所選定的寄存器R的內(nèi)容加1并將結(jié)果存于A寄存器若結(jié)果為0則跳過下一個指令。舉例說明Port 6輸出遞減的二進位數(shù)值。MOVA,x00LOOP:MOV0x6,AMOV0x10,AJZA0x10JMPLOOP JZIncrement R, Skip if 0語 法 JZR編 碼0011111rrrrrrr操作內(nèi)容R+1 -> R, skip if result = 0受影響的標志無說 明將所選定的寄存器R的內(nèi)容加1并將結(jié)果存於R
36、寄存器若結(jié)果為0則跳過下一個指令。舉例說明HERE:JZ0x10CONT:MOVA,0x10SKIP:ADDA,10執(zhí)行JZ指令之前PC = address HERE執(zhí)行JZ指令之后R10 = R10-1if R10 = 0, PC = address SKIPif R10 ¹ 0, PC = address CONT 語 法JBCBit Test, Skip if Clear語 法 JBCR,b編 碼0110bbbrrrrrrr操作內(nèi)容if R(b) = 0, skip受影響的標志無說 明如果寄存器R的位 “b” 是“0”,則跳過下一個指令。舉例說明測試0x10寄存器的bit0若是
37、為”0”則port5的bit0設(shè)成”0”若0x10寄存器的bit0為”1”則port5的bit0設(shè)成”1”。JBC0x10,0BS0x5,0JBS0x10,0BC0x5,0 JBSBit Test, Skip if Set語 法 JBSR,b編 碼0111bbbrrrrrrr操作內(nèi)容if R(b) = 1, skip受影響的標志無說 明如果寄存器R的位 “b” 是“1”,則跳過下一個指令。舉例說明HEREJBC0x9,3CONTMOVA,10SKIPADDA,0x10執(zhí)行JBC指令之前PC = address HERE執(zhí)行JBC指令之后if R9(3) = 0, PC = address CO
38、NTif R9(3) ¹ 0, PC = address SKIP 語 法MOVMove Data語 法 MOVR,A編 碼0000001rrrrrr 操作內(nèi)容A -> R受影響的標志無說 明將A寄存器中的值載入寄存器R中。語 法 MOVA,R編 碼0010000rrrrrr操作內(nèi)容R -> A受影響的標志Z (零標志)將R寄存器中的值載入A寄存器如果A寄存器的結(jié)果為零就會將Z標志設(shè)成1否則將Z標志清為0。語 法MOVA, k編 碼11000kkkkkkkk操作內(nèi)容k -> A受影響的標志無說 明將立即k載入A寄存器中。舉例說明將A Move data from a
39、ccumulator to registerMOVA,0x11;將立即值載入A寄存器中MOV0x10,A;將A中的內(nèi)容載入0X10中MOVA,9;將寄存器9的值載入A中 NOP No Operation語 法NOP編 碼0000000000000操作內(nèi)容No Operation受影響的標志None說 明不做任何工做用來做時間的延遲。舉例說明P50輸出3 ms的突波. (system clock = 2MHz)BS0x5,0x0;P50輸出為highNOP;延遲兩個指令周期NOPBC0x5,0x0;P50輸出為lowORInclusive OR語 法 ORA,R編 碼0001000rrrrrrr
40、操作內(nèi)容AÚR -> A受影響的標志Z 零標志說 明將A寄存器中的值和R寄存器中的值OR在一起在存入A寄存器中。語 法 ORR,A編 碼0001001rrrrrrr操作內(nèi)容AÚR -> R受影響的標志Z 零標志說 明將A寄存器中的值和R寄存器中的值OR在一起在存入R寄存器中。語 法 ORA, k編 碼11001kkkkkkkk操作內(nèi)容AÚk -> A受影響的標志Z 零標志說 明將A寄存器中的值和立即值kOR在一起在存入A寄存器中。舉例說明將port6的值和0x10寄存器的值OR在一起并將結(jié)果輸出到port6。MOVA,0x6;將port6的值載入
41、A中ORA,0x10;OR,A和0x10的值存入A中MOV0x6,A;將A的值輸出到port6說明右式應(yīng)該如何完成R10 = R11 OR R12.MOVA,0x11MOV0x10,AMOVA,0x12OR0x10,A;R10=R11 OR R12說明右式應(yīng)該如何完成 A = A OR 0xF0.MOVA,0x03;A = 0x03ORA,0xF0;A = 0xF3RETReturn from Subroutine語 法 RET編 碼0000000010010操作內(nèi)容Top of Stack -> PC受影響的標志無說 明從子程序中返回堆棧最上面的數(shù)值載入程序計數(shù)器(Program co
42、unter)。舉例說明TEST:···RET···CALLTESTHERE:ADDA,0x1··· 在呼叫RET指令之前。堆棧的頂端Top of Stack = address HERE 在呼叫RET指令之后。程序計數(shù)器PC = address HERERET LReturn Immediate Data to the A register語 法RETL k編 碼11100kkkkkkkk操作內(nèi)容k -> ATop of Stack -> PC受影響的標志無說 明從子程序返回并將立即值載入A寄
43、存器(累加器)中。堆棧最頂端的數(shù)值載入程序計數(shù)器中。建立一個7段顯示器轉(zhuǎn)換表並用port6驅(qū)動7段顯示器。;REGISTER DEFINEPC=2TRANS:ADDPC,ARETL0XFCRETL0XC0RETL0XEARETL0XF2RETL0X66RETL0XB6RETL0XBERETL0XE0RETL0XFERETL0XF6MAIN:···MOVA,0x10;將寄存器的內(nèi)含值載入A中CALLTRANSMOV0x6,A;輸出到7段顯示器··· RLCARotate Left R through Carry, Place in th
44、e A register語 法RLCAR編 碼0011010rrrrrrr操作內(nèi)容R(n) -> A(n+1), R(7) -> C, C -> A(0)受影響的標志C進位標志說 明將所指定的寄存器的內(nèi)容連同進位標志一起向左移1位并將結(jié)果存於A寄存器。舉例說明將指定的寄存器放向左移1位并將結(jié)果由port6輸出。BIT_BUF=0x10 RLCABIT_BUFMOV0x6,A RLCRotate Left R through Carry語 法 RLCAR編 碼0011011rrrrrrr操作內(nèi)容R(n) -> R(n+1), R(7) -> C, C -> R
45、(0)受影響的標志C進位標志說 明將所指定的寄存器的內(nèi)容連同進位標志向左移1個位原結(jié)果存在原先的寄存器。舉例說明將0X10寄存器的內(nèi)容向左移1個位進位標志并不包含在內(nèi)。RLCA0x10寄存器的bit7移到進位標志中。并將結(jié)果存於A寄存器RLC0x10將0x10寄存器的值向左移1位此時執(zhí)行的結(jié)果如上圖。 RRCARotate Right R through Carry, Place in the A register語 法 RRCAR編 碼0011000rrrrrrr操作內(nèi)容R(n) -> A(n-1), R(0) -> C, C -> A(7)受影響的標志C進位標志被影響說
46、明R寄存器的內(nèi)含值又移1-bit右移時包含C(進位標志) 如下圖并將結(jié)果存于A寄存器。舉例說明將指定的寄存器放向右移1位并將結(jié)果由port6輸出。BIT_BUF=0x10 RRCABIT_BUFMOV0x6,A RRCRotate Right R through Carry語 法 RRCR編 碼0011001rrrrrrr操作內(nèi)容R(n) -> R(n-1), R(0) -> C, C -> R(7)受影響的標志C進位標志說 明所指定的寄存器的內(nèi)容連帶著進位標志接向右移1位如下圖。舉例說明MOVA,0x0fCLR0x3,0;clear C flagMOV0x10,A;R10
47、= 00001111RRC0x10;R10 = 00000111, C = 1SUBSubtract語 法SUBA,R編 碼0000100rrrrrrr操作內(nèi)容R-A -> A受影響的標志Z,C,DC零標志進位標志和輔助標志都會受影響說 明將R寄存器中的值減去A寄存器中的值再存回A寄存器中。語 法SUBR,A編 碼0000101rrrrrrr操作內(nèi)容R-A -> R受影響的標志Z,C,DC零標志進位標志和輔助標志都會受影響說 明將R寄存器中的值減去A寄存器中的值再存回R寄存器中。語 法SUBA, k編 碼11101kkkkkkkk操作內(nèi)容k-A -> A受影響的標志Z,C,D
48、C零標志進位標志和輔助標志都會受影響說 明將立即值k的值減去A寄存器中的值再存回A寄存器中。舉例說明說明如何完成A = 0x99-0x55的計算式MOVA,0x99MOV0x10,A;R10 = 0x99MOVA,0x55SUBA,0x10;A = 0x44說明如何完成 A = 0x02 - A 的計算式MOVA,0x01;A = 0x01SUBA,0x02;A = 0x02 - 0x01 = 0x01;C flag = 1 , 進位標志C =; 1相減結(jié)果為正值。SWAPASwap R, Place in the A register語 法SWAPA R編 碼0011000rrrrrrr操作內(nèi)容R(3:0) -> A(7:4)R(7:4) -> A(3:0)受影響的標志無說 明將所選定的寄存器高4位以及低4位互換并將結(jié)果存于A寄存器。舉例說明將port6的內(nèi)容高4位以及低4位互換。MOVA,0x6MOV0x10,ASWAP0x10MOV0x6,A SWAPSwap R語 法SWAPR編 碼0011001rrrrrrr操作內(nèi)容R(3:0) <-> R(7:4)受影響的標志無說 明將所選定的寄存器高4位以及低4位互
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年03月山西浦發(fā)銀行太原分行招考筆試歷年參考題庫附帶答案詳解
- 個人工作自我鑒定10篇
- 專業(yè)求職信集錦6篇
- 2025年上門服務(wù)項目規(guī)劃申請報告模范
- 無償獻血倡議書匯編15篇
- 2025年污水自動采樣器項目立項申請報告模范
- 中職畢業(yè)學(xué)生自我鑒定
- 2022知危險會避險交通安全課觀后感(范文10篇)
- 競選大隊委演講稿模板八篇
- 《小海蒂》讀書筆記15篇
- 古代小說戲曲專題-形考任務(wù)2-國開-參考資料
- GA/T 2133.1-2024便攜式微型計算機移動警務(wù)終端第1部分:技術(shù)要求
- 人教版四年級上冊數(shù)學(xué)數(shù)學(xué)復(fù)習(xí)資料
- 3.2熔化和凝固-人教版八年級上冊課件(21張PPT)pptx
- 山東建設(shè)工程施工機械臺班單價表
- 平凡之路歌詞
- 整理富怡服裝CAD的鍵盤快捷鍵
- 人教版(PEP)小學(xué)英語六年級上冊各單元知識點歸納(三年級起點)
- 工作分析案例
- 會議記錄模板
- 戴維斯在線認知量表及其簡介
評論
0/150
提交評論