義隆單片機指令集_第1頁
義隆單片機指令集_第2頁
義隆單片機指令集_第3頁
義隆單片機指令集_第4頁
義隆單片機指令集_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、隆單片機指令系統3.1.EM78指令概述EM78156&EM78P156單片機共有的58條指令,其寬度為13位。每一個指令碼可分割成兩部份,第一部分為標示指令功能的運算碼(OPCODE),第二部份則指出運算時所需之參數,亦即運算碼(OPERAND)。而指令的類型大致可分為下列四種:(1)控制型指令(controloperation):如INT.等等。(2)面向寄存器(字節操作)型指令(registeroriented):如MOVA,Reg_B;moveReg_BtoAADDReg_B,A;addReg_BwithA,and;saveinReg_B.等等。(3)位操作型指令(bitoriente

2、d):如BC,JBS.等等。(4)常數型指令(constantoperation):如MOVA,0 x55;move0 x55toAXOR0 xFF;XorAwith0 xFF一般而言,EM78系列八位微控制器除一個指令需兩個周期之外,其他的指令只需一個指令周期,除了對PC(ProgramCounter)做“寫”的指令,需二個指令周期,如(MOVPC,A)。3.2.EMC匯編語言指令集符號解說:1符號R:代表一般用途寄存器中的其中一個。2符號B代表一般用途寄存器中的某一位。3符號K代表8位或10位的常數或內容。4.符號A代表累加寄存器。3.2.1.面向寄存器(字節操作)型指令(26條)助記符號

3、指令動作標志影響指令周期語言描述ADDA,RA+R-AZ,C,DC1ADDADDR,AA+R-RZ,C,DC1ADDANDA,RA&R-AZ1ANDANDR,AA&R-RZ1ANDCLRR0-RZ1ClearRegisterCLRA0-AZ1CleartheAregisterCOMR/R-RZ1ComplementR助記符號指令動作標志影響指令周期語言描述COMAR/R-AZ1ComplementR,PlaceinADAAA寄存器調整為BCD值C1DecimalAdjustDECRR-1-RZ1DecrementRDECARR-1-AZ1DecrementR,PlaceinADJZRR-1-R

4、結果為零就跳過下一個指令1DecrementR,Skipif0DJZARR-1-A結果為零就跳過下一個指令1DecrementR,PleaseinAregister,Skipif0INCRR+1-RZ1IncrementRINCARR+1-AZ1IncrementR,PleaseinAJZRR+1-R,結果為零就跳過下一個指令1IncrementR,Skipif0JZARR+1-A,結果為零就跳過下一個指令1IncrementR,PlaceintheAregiser,Skipif0MOVR,AA-R1MoveDataMOVA,RR-AZ1MoveDataMOVR,RR-RZ1MoveDataO

5、RA,RAORR-AZ1InclusiveORORR,AAORR-RZ1InclusiveORSUBA,RR-A-AZ,C,DC1SubtractSUBR,AR-A-RZ,C,DC1SubtractXORA,RAXORR-AZ1ExclusiveORXORR,AAXORR-RZ1ExclusiveOR3.2.2.面向位操作類指令(10條)助記符號指令動作標志影響指令周期語言描述BCR,B0-R(B)1BitClearBSR,B1-R(B)1BitSetJBCR,B如果R(B)=O,則跳過下一個指令1BitTest,SkipifClearJBSR,B如果R(B)=1,則跳過下一個指令1BitTe

6、st,SkipifSetRLCRR(N)-R(N+1)R(7)-CC-R(0)C1RotateLeftRthroughCarryRLCARR(N)-A(N+1)R(7)-CC-A(0)C1RotateLeftRthroughCarry,PlaceintheARegisterRRCRR(N)-R(N-1)R(0)-CC-R(7)C1RotateRightRthroughCarry助記符號指令動作標志影響指令周期語言描述RRCARR(N)-A(N-1)R(0)-CC-A(7)C1RotateRightRthroughCarry,PlaceintheARegisterSWAPRR(0-3)-R(4-

7、7)R(4-7)-R(0-3)1SwapRSWAPARR(0-3)-A(4-7)R(4-7)-A(0-3)1SwapR3.2.3.常數操作和控制類指令(22條)助記符號指令動作標志影響指令周期語言描述ADDA,KA+K-AZ,C,DC1ADDANDA,KA&K-AZ1ANDCALLKPC+1-SP(PAGE,K)-PC1SubroutineCallCONTRCONT-A1MoveCONTtotheAregisterCONTWA-CONT1MoveAtoCONTDISI禁止中斷1DisableInterruptENI使能中斷1EnableInterruptINTPC+1-SP001H-PC1So

8、ftwareinterruptIORRIOCR-A1MoveIOCRtotheAregisterIOWRA-IOCR1MoveAtoIOCRJMPK(PAGE,K)-PC1UnconditionalBranchMOVA,KK-A1MoveDataNOP1NoOperationORA,KAORK-AZ1InclusiveORRET堆棧頂端卜PC1ReturnfromSubroutineRETI堆棧頂端卜PC,使能中斷1ReturnfromInterruptRETLKK-A,堆棧頂端卜PCReturnImmediateDatatotheARegisterSLEP0-WDT,振蕩器停止振蕩T,P1I

9、ntoSleepmodeSUBA,KK-A-AZ,C,DC1SubtractTBLPC+A-PCZ,C,DC2TableLookUpWDTC0-WDTT,P1ClearWatchdogTimerXORA,KAXORK-AZ1ExclusiveOR3.3.EM78指令尋址方式關于對寄存器的存取,必須要先說明寄存器的位址,說明暫存的位址的方式稱做尋址方式EM78的尋址方式有兩種,一種為直接尋址,一種為間接尋址。立即數尋址這種方式就是操作數為立即數,可直接從指令中獲取。例:MOVA,0 x16;將常數0 x16送給寄存器A直接尋址若是使用者要存取寄存器的內容,可以在運算碼上直接描述。例:將寄存器0X

10、20的內容,COPY到寄存器0X21中。MOVA,0X20MOV0X21,A間接尋址這種尋址方式是通過寄存器R4來實現的,R4的bit0-5是用來選擇寄存器(地址:00-06,0F-3F)若是使用者所需要存取的寄存器,有位址相鄰的特性,使用間接尋址是很方便的。例:寫一個程序,將寄存器0X200X3F的值都填0。;設定A=0X20。;設定間接尋址寄存器(0X04);的內含值為0X20;清除0X04所指的寄存器。;遞增間接尋址寄存器(0X04);設定A=0X04寄存器的值。;比較間接尋址的位址是否;以到0X3F。若是則結束。;否則在繼續。MOVA,0X20MOV0X04,AAGAIN:CLR0IN

11、C0X04MOVA,0X04XORA,0X3FJBS0X03,2JMPAGAINEND:3.3.4.位尋址這種位尋址是對寄存器中的任一位(bit)進仃操作。例:BS0 x12,2;將寄存器0 x12的第2位置為3.4.EM78指令說明ADDAdd語法ADDA,R編碼0001110rrrrrrr操作內容A+R-A受影響的標志Z,C,DC;零標志,進位標志和輔助進位標志都會受影響說明將A寄存器的內含值加上R寄存器的內含值,並且把結果載入A寄存器中。語法ADDR,A編碼0001111rrrrrrr操作內容A+R-R受影響的標志Z,C,DC;零標志,進位標志和輔助標志都會受影響說明將A寄存器的內含值加

12、上R寄存器的內含值,並且把結果載入R寄存器中。語法ADDA,k編碼11111kkkkkkkk操作內容K+A-A受影響的標志Z,C,DC;零標志,進位標志和輔助標志都會受影響說明將A寄存器的內含值加上立即值K,並且把結果載入A寄存器中。舉例說明下兩行指令敘述為A=R11+R12.MOVA,0 x11ADDA,0 x12;A=R11+R12下兩行指令敘述為R10=R11+R12.MOVA,0 x11MOV0 x10,AMOVA,0 x12ADD0 x10,A;R10=R11+R12下兩行指令敘述為A=0 x01+0 x01.MOVA,0 x01;A=0 x01ADDA,0 x01;A=0 x02A

13、NDAnd語法ANDA,R編碼0001010rrrrrrr操作內容A&R-A受影響的標志Z;零標志說明將A寄存器和R寄存器AND在一起,并將結果存入A寄存器。語法ANDR,A編碼0001011rrrrrrr操作內容A&R-R受影響的標志Z;零標志說明將A寄存器和R寄存器AND在一起,并將結果存入R寄存器。語法ANDA,K編碼11010kkkkkkkk操作內容A&K-A受影響的標志Z;零標志說明將A寄存器和立即值K,AND在一起,并將結果存入A寄存器。舉例說明將port6和R10registerAND起來,并將結果輸出到port6MOVA,0 x6;從port6輸入內容ANDA,OxlO;把內容

14、和R10做ANDMOV0 x6,A;將結果輸出到port6R10=R11ANDR12MOVA,0 x11MOV0 x10,AMOVA,0 x12AND0 x10,A;R10=R11ANDR12BCBitClear語法BCR,b編碼0100bbbrrrrrrr操作內容0-R(b)受影響的標志無說明R寄存器的位“b”被清為0。舉例說明MOVA,0 x0fMOV0 x10,A;R10=00001111BC0 x10,3;R10=00000111BSBitSet語法BSR,b編碼0101bbbrrrrrrr操作內容1-R(b)受影響的標志無說明R寄存器的位“b”被設成1。舉例說明將狀態寄存器的零標志設

15、成1。BS0 x3,2CALLSubroutineCall語法CALLk編碼100kkkkkkkkkk操作內容PC+1-TopofStackk-PC(9:0)R3(7:5)-PC(12:10)受影響的標志無說明當呼叫一個子程序時,首先會將下一個指令的執行位址存入堆棧中,接下來將子程序的進入位址載入程序計數器中。舉例說明HERE:CALLSUBRTNCONT:MOVA,10執行CALL指令之前PC=addressHERE執行CALL指令之后PC=addressSUBRTNTopofStack=addressCONTCLRACleartheAregister語法CLRA編碼0000010000000操作內容0-A;A寄存器清除為0受影響的標志1-Z;零標志設成1說明清除A寄存器,同時設定Z標志舉例說明CLRA;清除A寄存器,同時設定Z標志CLRClearRegister語法CLRR編碼0000011rrrrrrr操作內容0-R;R寄存器清除為0受影響的標志1-Z;零標志設成1說明清除R寄存器,并設定零標志。舉例說明CLR0 x10;清除0 x10寄存器COMAComplementR,PlaceinA語法COMAR編碼0010010rrrrrrr操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論