




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、XGate 匯編指令集匯編指令集清華清華FreescaleFreescale單片機應用開發(fā)研究中心單片機應用開發(fā)研究中心XGate CPU結(jié)構(gòu)結(jié)構(gòu)XGate 尋址方式尋址方式隱含尋址隱含尋址BRK;Break 進入進入BDM調(diào)試方式調(diào)試方式RTS;Return to Scheduler 結(jié)束當前線程,回空閑狀態(tài)結(jié)束當前線程,回空閑狀態(tài)NOP;No OPeration空操作空操作SIF;Set Interrupt Flag向向S12X叫中斷叫中斷 XGate 尋址方式尋址方式立即數(shù)尋址立即數(shù)尋址4位:位:LSL R4,#1 ;R4 = R4 3,R4寄存器右移寄存器右移3位位8位:位:ADDL
2、R1,#1 ;把;把8位立即數(shù)加到位立即數(shù)加到R1寄存器寄存器SUBL R2,#2 ;從;從R2寄存器減去寄存器減去8位立即數(shù)位立即數(shù)LDH R3,#3 ;把;把8位立即數(shù)加載到位立即數(shù)加載到R3寄存器的高字節(jié)上寄存器的高字節(jié)上CMPL R4,#4 ;對;對R4寄存器的低字節(jié)和寄存器的低字節(jié)和8位立即數(shù)進行比較位立即數(shù)進行比較16位:位:LDW R4,#$1234 ;會被拆分成兩條指令:;會被拆分成兩條指令:LDL R4,#$34; LDH R4,#$12ADD R4,#$5678 ;會被拆分成兩條指令:;會被拆分成兩條指令:ADDL R4,#$78; ADDH R4,#$56單、雙、三寄存器
3、尋址單、雙、三寄存器尋址單寄存器尋址:單寄存器尋址:JAL R1;Jamp And Link, PC = R1, R1 = PC+2,跳轉(zhuǎn)指令跳轉(zhuǎn)指令SIF R2 ;觸發(fā)觸發(fā)R2R2低字節(jié)中存放的中斷通道號對應的中斷低字節(jié)中存放的中斷通道號對應的中斷雙寄存器尋址:雙寄存器尋址:LSL R4,R5 ; R4 = R4 R5MOVE RD,RS; RDRS三寄存器尋址:三寄存器尋址:ADC R5,R6,R7 ; R5 = R6 + R7 + CarrySUB R5,R6,R7 ; R5 = R6 - R7以立即數(shù)為偏移量的寄存器間接尋址以立即數(shù)為偏移量的寄存器間接尋址把把R1+offset地址處的
4、地址處的8位數(shù)值寫入到位數(shù)值寫入到R4寄存器的低字節(jié)中寄存器的低字節(jié)中,R4的高字節(jié)被清零:的高字節(jié)被清零:LDB R4,(R1,#offset) ;把把R4寄存器中的寄存器中的16位數(shù)值寫入到位數(shù)值寫入到R1+offset地址處:地址處:STW R4,(R1,#offset) ;偏移量在寄存器中的寄存器間接尋址偏移量在寄存器中的寄存器間接尋址目標寄存器是目標寄存器是R4,源地址在,源地址在R1中中,偏移量在,偏移量在R2中中,以以 R1R2 找到相關(guān)存儲器的地址,取其值寫入目找到相關(guān)存儲器的地址,取其值寫入目的寄存器的寄存器R4: LDB R4,(R1,R2) STW R4,(R1,R2)
5、帶寄存器偏移量和自動加減的寄存器帶寄存器偏移量和自動加減的寄存器間接尋址間接尋址 目標寄存器是目標寄存器是R4R4,源地址是,源地址是R1R1,偏移量在,偏移量在R2R2中,執(zhí)行完指令中,執(zhí)行完指令后后R2R2自動加自動加1 1或或2 2:LDB R4,(R1,R2+) STW R4,(R1,R2+) 執(zhí)行指令前執(zhí)行指令前R2R2先減先減1 1或或2 2:LDB R4,(R1,-R2) STW R4,(R1,-R2) 相對轉(zhuǎn)移尋址相對轉(zhuǎn)移尋址 偏移量是偏移量是9 9位位: :BCC REL9 ;PC = PC + 2 + (REL9 1)BEQ REL9 ;PC = PC + 2 + (REL
6、9 1)偏移量是偏移量是10位位:BRA REL10 ;PC = PC + 2 + (REL10 RD;STB RS, (RB, #OFFS5) Store Byte from RS to Mem. RS.L = MRB, #OFFS5LDB RD, (RB, RI) Load Byte from Mem to RD MRB, RI = RD.L; $00 = RD.H;STW RS, (RB, RI) Store Word from RS to Mem. RS = MRB, RILDW RD, (RB, RI+) Load word from Mem to RD MRB, RI = RD;
7、RI+2 = RISTB RS, (RB, RI+) Store Byte from RS to Memory RS.L = MRB, RI ; RI+1 = RILDB RD, (RB, RI) Load Byte from memory to RD RI-1 = RI; MRB, RI = RD.L; $00 = RD.H;LDW RD, (RB, RI) Load Word from memory to RD RI-2 = R I; MRB, RI = RDSTB RS, (RB, RI) Store Byte from RS to Memory RI-1 = RI; RS.L = MR
8、B, RI特殊數(shù)據(jù)傳送指令特殊數(shù)據(jù)傳送指令讀取條件碼寄存器讀取條件碼寄存器CCR的值的值TFR RD,CCR Transfer CCR to RD寫寫CCR寄存器寄存器TFR CCR,RS Transfer RS to CCR 讀取當前程序計數(shù)器讀取當前程序計數(shù)器PC的值的值TFR RD,PCTransfer PC to RD立即數(shù)算術(shù)運算指令立即數(shù)算術(shù)運算指令LDL RD, #IMM8 Load Low RD給給RD低字節(jié)加載低字節(jié)加載8位立即數(shù)位立即數(shù)LDH RD, #IMM8 Load High RD給給RD高字節(jié)加載高字節(jié)加載8位立即數(shù)位立即數(shù)ADDL RD, #IMM8 Add Lo
9、w RDRD低字節(jié)加上低字節(jié)加上8位立即數(shù)位立即數(shù)ADDH RD, #IMM8 Add High RDRD高字節(jié)加上高字節(jié)加上8位立即數(shù)位立即數(shù)SUBL RD, #IMM8 Subtract Low RDRD低字節(jié)減去低字節(jié)減去8位立即數(shù)位立即數(shù)SUBH RD, #IMM8 Subtract High RDRD高字節(jié)減去高字節(jié)減去8位立即數(shù)位立即數(shù)CMPL RS, #IMM8 Compare RS Low with Immediate 比較比較RS低字節(jié)和立即數(shù)低字節(jié)和立即數(shù)(RS.L立即數(shù))立即數(shù))CPCH RS, #IMM8 Compare RS with Carry High 比較比較R
10、S高字節(jié)和立即數(shù)高字節(jié)和立即數(shù)(RS.H立即數(shù))立即數(shù))操作數(shù)為操作數(shù)為3 3個寄存器的算術(shù)運算指令個寄存器的算術(shù)運算指令SUB RD, RS1, RS2Subtract 減法運算減法運算 RDRS1-RS2SBCRD, RS1, RS2Subtract with Carry帶借位減法帶借位減法 RDRS1-RS2-CADDRD, RS1, RS2Add 加法運算加法運算 RDRS1+RS2ADCRD, RS1, RS2Add with Carry帶進位加法帶進位加法 RDRS1+RS2+C寄存器與立即數(shù)邏輯運算指令寄存器與立即數(shù)邏輯運算指令 ANDL RD, #IMM8 AND Low by
11、te RD RD低字節(jié)低字節(jié)= RD低字節(jié)低字節(jié) 與與 8位立即數(shù)位立即數(shù) ANDH RD, #IMM8 AND High byte RD RD高字節(jié)高字節(jié)= RD高字節(jié)高字節(jié) 與與 8位立即數(shù)位立即數(shù)ORL RD, #IMM8 OR Low bit RD RD低字節(jié)低字節(jié)= RD低字節(jié)低字節(jié) 或或 8位立即數(shù)位立即數(shù)ORH RD, #IMM8 OR High bit RD RD高字節(jié)高字節(jié)= RD高字節(jié)高字節(jié) 或或 8位立即數(shù)位立即數(shù)XNORL RD, #IMM8 eXclusive NOR Low RD RD低字節(jié)低字節(jié)= RD低字節(jié)低字節(jié) 異或異或 8位立即數(shù)位立即數(shù)XNORH RD,
12、#IMM8 eXclusive NOR High RD RD高字節(jié)高字節(jié)= RD高字節(jié)高字節(jié) 異或異或 8位立即數(shù)位立即數(shù)操作數(shù)為操作數(shù)為3 3個寄存器的邏輯運算指令個寄存器的邏輯運算指令AND RD, RS1, RS2 Logical And 邏輯與邏輯與 RDRS1 與與 RS2OR RD, RS1, RS2Logical Or邏輯或邏輯或 RD= RS1 或或 RS2XNOR RD, RS1, RS2 Logical eX clusive NOR邏輯異或邏輯異或 RD= RS1 異或異或 RS2用立即數(shù)表示移位位數(shù)的指令用立即數(shù)表示移位位數(shù)的指令BFFO RD, RS Bit Field
13、 Find First One 找出找出RS中左邊第一個中左邊第一個1的位置的位置并存入并存入RD,RS為為0時,時,CCR寄存器中的寄存器中的C位被置位被置位,從而區(qū)別位,從而區(qū)別RS為為0與與RS的第的第0位為位為1兩種情況兩種情況ASR RD, #IMM4 Arithmetic Shift Right 算術(shù)右移算術(shù)右移RD,符號位不變,移動位數(shù)為,符號位不變,移動位數(shù)為4位立即數(shù)位立即數(shù)LSL RD, #IMM4 Logical Shift Left 邏輯左移邏輯左移RD,高位進入,高位進入C,移動位數(shù)為,移動位數(shù)為4位立即數(shù)位立即數(shù)LSR RD, #IMM4 Logical Shift
14、 Right邏輯右移邏輯右移RD,高位進入,高位進入C,移動位數(shù)為,移動位數(shù)為4位立即數(shù)位立即數(shù)ROL RD, #IMM4 Logical Shift Left循環(huán)邏輯左移循環(huán)邏輯左移RD,移動位數(shù)用,移動位數(shù)用4位立即數(shù)表示位立即數(shù)表示ROR RD, #IMM4 Logical Shift Right循環(huán)邏輯右移循環(huán)邏輯右移RD,移動位數(shù)用,移動位數(shù)用4位立即數(shù)表示位立即數(shù)表示CSL RD, #IMM4 Logical Shift Left with Carry循環(huán)左移循環(huán)左移RD,高位進入,高位進入C,移動位數(shù)為,移動位數(shù)為4位立即數(shù)位立即數(shù)CSR RD, #IMM4 Logical Sh
15、ift Right with Carry循環(huán)右移循環(huán)右移RD,高位進入,高位進入C,移動位數(shù)為,移動位數(shù)為4位立即數(shù)位立即數(shù)用寄存器表示移位位數(shù)的指令用寄存器表示移位位數(shù)的指令FFO RD, RSBit Field Find First One 找出找出RS中第一個中第一個1的位置并寫入的位置并寫入RD,若,若RS為為0,C置位置位ASR RD, RS Asthmatic shift Right 將將RD算術(shù)右移若干位算術(shù)右移若干位,位數(shù)在,位數(shù)在RS中中CSL RD, RSLogical Shift Left with Carry含進位借位位的邏輯左移含進位借位位的邏輯左移CSR RD, R
16、SLogical Shift Right with Carry含進位借位位的邏輯右移含進位借位位的邏輯右移LSL RD, RSLogical Shit Left將將RD邏輯左移若干位邏輯左移若干位,位數(shù)在,位數(shù)在RS中中LSR RD, RSLogical Shit Right 將將RD邏輯右移若干位邏輯右移若干位,位數(shù)在,位數(shù)在RS中中ROL RD, RSRotate shift left將將RD循環(huán)左移若干位循環(huán)左移若干位,位數(shù)在,位數(shù)在RS中中ROR RD, RSRotate Shit Right 將將RD循環(huán)右移若干位循環(huán)右移若干位,位數(shù)在,位數(shù)在RS中中轉(zhuǎn)移指令轉(zhuǎn)移指令BCC REL9
17、Branch if Carry Clear 若若C = 0,則轉(zhuǎn)移,此時,則轉(zhuǎn)移,此時PC + $0002 + (REL9 = 若若N V = 0,則轉(zhuǎn)移,則轉(zhuǎn)移 =異或異或BGTREL9Branch if Greater Than 若若Z|(N V) = 0,則轉(zhuǎn)移,則轉(zhuǎn)移BLE REL9Branch if Less than or Equal 若若Z|(N V) = 1,則轉(zhuǎn)移,則轉(zhuǎn)移BLT REL9Branch if Less Than 若若N V = 1,則轉(zhuǎn)移,則轉(zhuǎn)移BRAREL10 Branch Always絕對轉(zhuǎn)移絕對轉(zhuǎn)移位測試指令位測試指令測試測試RD低字節(jié),與低字節(jié),與8位立
18、即數(shù)與,影響位立即數(shù)與,影響Z,N標志標志:BITL RD, #IMM8BIt Test Low測試測試RD高字節(jié),與高字節(jié),與8位立即數(shù)與,影響位立即數(shù)與,影響Z,N標志標志: BITH RD, #IMM8 BIt Test High位操作指令位操作指令 BFEXT RD, RS1, RS2Bit Field Extract位提取指令:位提取指令:RS1(n+m):n = RDm:0; 0 = RD15:(m+1)BFINS RD, RS1, RS2Bit Field Insert位插入指令:位插入指令:RS1m:0 = RD(m+n):nBFINSI RD, RS1, RS2Bit Fie
19、ld Insert and Invert位插入并求反指令:位插入并求反指令:!RS1m:0 = RDn+m:nBFINSX RD, RS1, RS2Bit Field Insert and XNOR位插入并異或指令位插入并異或指令 !(RS1m:0 RDn+m:n) = RDn+m:n m = (RS27:4),n = (RS23:0) 信號量操作指令信號量操作指令CSEM IMM3 Clear Semaphore 信號量清零,所操作的信號量由信號量清零,所操作的信號量由3位立即數(shù)表述位立即數(shù)表述 CSEM RSClear Semaphore信號量清零,所操作的信號量由信號量清零,所操作的信號
20、量由RS表述表述SSEM IMM3 Set Semaphore信號量置位,所操作的信號量由信號量置位,所操作的信號量由3位立即數(shù)表述位立即數(shù)表述SSEM RSSet Semaphore信號量置位,所操作的信號量由信號量置位,所操作的信號量由RS表述表述程序流程控制及其它指令程序流程控制及其它指令BRKBreak 軟件斷點,使軟件斷點,使 XGate 進入進入 Debug 模式模式NOPNo Operation 空操作空操作RTSReturn to Schedule從當前線程返回,從當前線程返回,XGate 回空閑狀態(tài)回空閑狀態(tài)SIFSet Interrupt Flag 置某通道中斷標志位,若不
21、帶參數(shù),即當前通道置某通道中斷標志位,若不帶參數(shù),即當前通道協(xié)處理器匯編程序的例子(協(xié)處理器匯編程序的例子(1);#;# XGATE DATA #;#CPU XGATE; 使用使用XGate匯編器匯編器ALIGN 1;按字(;按字(2B)對齊)對齊XGATE_DATA_FLASH EQU* ;當前行,變量參數(shù)首地址;當前行,變量參數(shù)首地址XGATE_DATA_SCI EQU *-XGATE_DATA_FLASH ;相對地址;相對地址 0 處處DW SCI_REGS ; 定義變量值為定義變量值為 SCI寄存器首地址寄存器首地址XGATE_DATA_IDX EQU *-XGATE_DATA_FLA
22、SH; 相對地址為相對地址為 2 處處DB XGATE_DATA_MSG ; 定義定義1B作為字符指針作為字符指針XGATE_DATA_MSG EQU *-XGATE_DATA_FLASH ; 相對地址為相對地址為 3 處處FCC Hello World! ; 定義定義ASCII字符串字符串 DB $0D; 定義回車符定義回車符 CR協(xié)處理器匯編程序的例子(協(xié)處理器匯編程序的例子(2);#;# XGATE CODE #;#CPU XGATE; 使用使用XGateXGate匯編器匯編器ALIGN 1XGATE_CODE_FLASH LDW R2,(R1,#XGATE_DATA_SCI); SCI
23、寄存器地址寄存器地址-R2LDB R3,(R1,#XGATE_DATA_IDX); 字符指針字符指針 - R3 LDB R4,(R1,R3+) ; 當前字符當前字符 - R4,R3+STB R3,(R1,#XGATE_DATA_IDX); 指向下一個待發(fā)送字符指向下一個待發(fā)送字符LDB R0,(R2,#(SCISR1-SCI_REGS); 讀讀SCI狀態(tài)寄存器狀態(tài)寄存器STB R4,(R2,#(SCIDRL-SCI_REGS); 寫寫SCI寄存器發(fā)送字符寄存器發(fā)送字符CMPL R4,#$0D; 回車符回車符?BEQ XGATE_CODE_DONE; 是則繼續(xù)是則繼續(xù)RTS; 否則本次中斷服務完
24、成否則本次中斷服務完成XGATE_CODE_DONE LDL R4,#$00 ; R4 清零清零STB R4,(R2,#(SCICR2-SCI_REGS); 關(guān)關(guān) SCI 中斷中斷LDL R3,#XGATE_DATA_MSG; 恢復字符指針恢復字符指針STB R3,(R1,#XGATE_DATA_IDX)XGATE_CODE_FLASH_END RTS ; 中斷服務完成中斷服務完成XGate C語言范例語言范例interrupt void SCI_Thread(tBuffer* Data) /* XGate SCI中斷服務中斷服務 */ if (Data-size 0) SCI0SR1; / /* * 讀狀態(tài)寄存器,清中斷標志位讀狀態(tài)寄存器,清中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高品質(zhì)木材進口供應合同
- 二零二五年度專業(yè)醫(yī)院為單位員工提供綜合體檢服務協(xié)議
- 二零二五年度學生安全責任及事故處理協(xié)議
- 二零二五年度道路照明工程外包安全協(xié)議
- 二零二五年度生意合伙人合同協(xié)議書:跨境電商市場拓展合作
- 二零二五年度合伙人投資協(xié)議書-智慧農(nóng)業(yè)種植基地投資
- 二零二五年度景區(qū)游覽車聘用司機安全協(xié)議及景區(qū)管理合同
- 二零二五年度礦石開采與環(huán)境保護責任履行協(xié)議
- 二零二五年度個人車輛抵押融資協(xié)議
- 二零二五年度監(jiān)護權(quán)委托代理合同
- 【MOOC】森林植物識別技術(shù) -珍稀植物識別-南京森林警察學院 中國大學慕課MOOC答案
- 《學習雷鋒好榜樣》課件
- 2024解析:第十八章電功率-講核心(解析版)
- 廣告品印刷行業(yè)發(fā)展概況及未來三年行業(yè)發(fā)展趨勢預測
- 招商及運營培訓課件
- 學校校園花崗巖鋪設合同
- 2024年新疆區(qū)公務員錄用考試《行測》真題及答案解析
- 老年精神病的藥物護理
- 南京信息工程大學《流體力學Ⅰ》2022-2023學年第一學期期末試卷
- 英文在職證明模版
- 大學生職業(yè)素養(yǎng)訓練(第六版)課件 第十二單元養(yǎng)成友善品格
評論
0/150
提交評論