




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
DSP原理與應(yīng)用實(shí)驗(yàn)一集成開發(fā)環(huán)境CCS應(yīng)用根底程序分析三個(gè)文件的作用及接口情況,說(shuō)明各個(gè)文件中偽指令的作用。答:test1.asm文件的作用是匯編主程序,vectors.asm文件是中斷矢量處理程序,test1d文件是命令文件。test1.asm中偽指令的作用:.title作用是在每頁(yè)的頂部打印文件標(biāo)題.mmregs為存儲(chǔ)器映像存放器定義符號(hào)名。使用.mmregs的功能和對(duì)所有的存儲(chǔ)器映像存放器執(zhí)行set偽指令相同。.usect匯編命令建立的自定義段也是未初始化段.def定義全局變量.text已初始化段.end終止匯編,位于程序源程序的最后一行。vectors.asm中偽指令的作用:.ref定義全局變量.sect匯編器偽指令建立的自定義段也是已初始化段.space對(duì)存儲(chǔ)器進(jìn)行初始化。分析主程序的結(jié)構(gòu)和功能,對(duì)每條指令進(jìn)行注釋,寫出執(zhí)行結(jié)果。 .title "example1.asm" .mmregs ;使能存儲(chǔ)器映像存放器 stack .usect "STACK",10h .def_c_int00 ; .text_c_int00: stm #stack+10h,SP ;設(shè)置堆棧指針 stm #0x0000,SWWSR ;所有存儲(chǔ)器未加軟件延遲 ;================================================ stm #0x70,AR2 st #0xff80,*AR2 ;================================================ ;觀察控制位SXM的作用 ;當(dāng)SXM=0時(shí),進(jìn)行無(wú)符號(hào)數(shù)的加載 rsbx SXM;SXM置零 nop ld *AR2,A ;(A)=(000000FF80 H) ; ;當(dāng)SXM=1時(shí),進(jìn)行有符號(hào)數(shù)的加載 ssbx SXM;SXM置1 nop ld *AR2,A ;(A)=(FFFFFFFF80H) ;================================================ ;================================================ ;觀察控制位OVM的作用 ;當(dāng)OVM=0時(shí),對(duì)溢出不進(jìn)行處理 rsbx OVM ld #0x7fff,16,B;立即數(shù)左移16位給B add #0x7fff,16,B ;(B)=(00FFFE0000H) ; ;當(dāng)OVM=1時(shí),對(duì)溢出進(jìn)行處理 ssbx OVM ld #0x7fff,16,B add #0x7fff,16,B ;(B)=(007FFFFFFFH) ;================================================ ;================================================ ;觀察控制位C16的作用 ;當(dāng)C16=0時(shí),進(jìn)行32位雙精度數(shù)加法運(yùn)算 ssbx OVM ld #0x0001,16,A add #0x7fff,A dst A,*AR2 ld #0x0001,16,A or #0xffff,A;相“或〞 rsbx C16 nop dadd *AR2,A,B ;(B)=(0000037FFEH) ; ;當(dāng)C16=1時(shí),進(jìn)行兩個(gè)獨(dú)立的16位數(shù)加法運(yùn)算 ssbx C16 nop dadd *AR2,A,B ;(B)=(0000027FFEH) ;================================================ ;================================================ ;觀察控制位FRCT的作用 ;當(dāng)FRCT=0時(shí),對(duì)乘積不進(jìn)行移位 ld #0x1234,16,A rsbx FRCT nop mpya *AR2 A中高16位與T相乘 ;(B)=(0000001234H) ; ;當(dāng)FRCT=1時(shí),對(duì)乘積左移1位 ssbx FRCT nop mpya *AR2 ;(B)=(0000002468H) ;================================================ ;================================================ ;觀察測(cè)試位TC bitf *AR2,#0x8000 ;(TC)=(0) nop nop ; bitf *AR2,#0x0001 ;(TC)=(1) nop nop ;================================================ ;================================================ ;觀察標(biāo)志位C ssbx SXM ld #0x7fff,A ld #0x8000,B max A ;(C)=(0) nop nop ; min B ;(C)=(1) nop nop ;================================================ ;================================================ ;觀察標(biāo)志位OVA,OVB ssbx SXM rsbx OVA ld #0x7fff,16,A add #0xffff,A ;(OVA)=(0) nop nop ; add #0x7fff,16,A ;(OVA)=(1) nop nop ;================================================dead_loop: nop nop nop nop b dead_loop .end寫出本工程的分段和存儲(chǔ)器的定位情況。表格如下:段名未/已初始化所屬PAGE起始地址存儲(chǔ)區(qū)長(zhǎng)度STACK未初始化10x0080256字.bss未初始化10x006032字.text已初始化00xe000256字.data已初始化00xe000256字vectors已初始化00xff80128字調(diào)試說(shuō)明總結(jié)上機(jī)調(diào)試步驟和調(diào)試情況,分析調(diào)試中遇到的問(wèn)題是如何解決的。答復(fù)下列問(wèn)題如果沒(méi)有在工程中添加test1d文件,試問(wèn)匯編連接后能否產(chǎn)生test1.out文件?能否獲得正確的結(jié)果?答:如果沒(méi)有test1d這個(gè)命令文件,是不會(huì)產(chǎn)生test1.out文件的,不能獲得正確的結(jié)果。因?yàn)殒溄悠魇菍?obj文件和d文件連接起來(lái)才生成的輸出文件,如果沒(méi)有命令文件,那么目標(biāo)文件就不能正確地連接,就不會(huì)生成.out文件,更不會(huì)產(chǎn)生正確的結(jié)果。在主程序中存在著許多NOP指令,它們的作用是什么?如果將它們?nèi)サ?,程序能否正常運(yùn)行?答:NOP指令的作用是空操作,雖然不進(jìn)行任何操作,但是給系統(tǒng)進(jìn)行流水線操作提供了時(shí)間,也可以增加榮譽(yù),防止程序跑飛。如果將它們?nèi)サ?,程序不能正常運(yùn)行。偽指令.ref和.def在本工程中的作用是什么?如果將它們?nèi)サ魧?huì)產(chǎn)生什么后果?答:.def定義全局變量和符號(hào),.ref在本模塊內(nèi)引用全局變量,假設(shè)去掉,會(huì)因?yàn)槲炊x變量而編譯出錯(cuò)。.def作用是識(shí)別定義在當(dāng)前模塊中、但可被其他模塊使用的符號(hào);.ref的作用是識(shí)別在當(dāng)前模塊中使用的但在其他模塊中定義的符號(hào),匯編器會(huì)把該符號(hào)標(biāo)記為沒(méi)有定義的外部符號(hào),并將它送入到目標(biāo)符號(hào)表中,以便鏈接器可以分辨它的定義。如果將它們?nèi)サ?,將不?huì)產(chǎn)生正確的結(jié)果。實(shí)驗(yàn)二尋址方式程序分析分析主程序的結(jié)構(gòu)和功能,對(duì)每條指令進(jìn)行注釋,寫出該條指令的尋址方式和執(zhí)行結(jié)果。 .mmregs stack .usect "STACK",20 .bssData_0,8 .bssData_1,8 .bssx,8 .datatable: .word11,12,13,14 .word8,6,4,2 .def_c_int00; .text_c_int00: stm #stack+20,SP stm #0x0000,SWWSR;********************************; 立即尋址;******************************** ld #4,DP ;指令代碼〔0000:E004:EA04〕 ld #0x7850,A ;指令代碼〔0000:E005:F020〕 rpt #4 add #0x100,4,A ;A=〔000000C850h〕;****************************************************************; 絕對(duì)尋址;1,dmad;2pmad;3,PA(PORTAddressing);4,*(lk)Addressing;**************************************************************** stl A,*(Data_0) ;第〔4〕種方式 stm #0x0066,AR2 stm #Data_1,AR3 mvkd AR2,*AR3 ;第〔1〕種方式 ld *(Data_1),B ;第〔4〕種方式 mvpd table,*AR2 ;第〔1〕種方式;****************************************************************; 累加器尋址;**************************************************************** rsbx sxm nop nop ld #table,A stm #Data_1,AR2 rpt #8-1 reada *AR2+;該段程序完成的功能是(將table中的數(shù)傳送到AR2);********************************; 直接尋址;********************************;基于DP的直接尋址 rsbx CPL;CPL置0,選定用DP的直接尋址 nop nop ld #Data_0,DP;第0頁(yè) nop nop ld @Data_0,A ;源操作數(shù)的地址是(0060h) nop nop add @Data_1,A ;源操作數(shù)的地址是(0068h) nop nop nop;基于SP的直接尋址 ssbx CPL;CPL置1,選用SP直接尋址的指針 nop nop stm #Data_1,sp nop ld @0,A ;源操作數(shù)的地址是(0068h) nop nop add @2,A ;源操作數(shù)的地址是(006ah) nop nop add @3,A ;源操作數(shù)的地址是(006bh) nop nop;********************************; 堆棧尋址;******************************** stm #stack+20,SP stm #Data_1,AR1 RPT #7 PSHD *AR1+ ;執(zhí)行后SP=〔008CH〕 stm #x,AR2 RPT #7 POPM *AR2+ ;執(zhí)行后SP=〔0094H〕;****************************************; 間接尋址;**************************************** stm #Data_1,AR2 stm #x,AR3 sub A sub B stm #6-1,BK stm #Data_0,AR2 stm #Data_1,AR3 stm #3,AR0 stm #8-1,BRC rptb loop-1 add *AR2,A mac *AR2+0%,*AR3+,Bloop: stm #Data_1,AR3 mvmm AR3,AR2 mar *+AR3(3) ld *AR3,A ;源操作數(shù)的地址是(006BH) ld *+AR2(5),B ;源操作數(shù)的地址是(0072H);************************************************; 存儲(chǔ)器映像存放器尋址;************************************************ stm #Data_0,AR6 mvmm AR6,AR7 ldm AR6,A stlm A,AR2dead_loop: nop nop nop nop b dead_loop .end 寫出本工程的分段和存儲(chǔ)器的定位情況,填寫表2-1.段名已/未初始化段所屬PAGE起始地址存儲(chǔ)區(qū)長(zhǎng)度STACK未初始化段10X00800X100.bss未初始化段10X00600X20.text已初始化段00XE0000x500.data已初始化段00XE0000x500vectors已初始化段00XFF800X80分析和總結(jié)各種尋址方式的特點(diǎn)。答:①立即尋址:指令中的操作數(shù)是一個(gè)立即數(shù),用#表示。根據(jù)立即數(shù)長(zhǎng)度分為使用短立即數(shù)的單字指令和使用長(zhǎng)立即數(shù)的雙字指令。②絕對(duì)尋址:指令中包含著操作數(shù)的地址。使用時(shí)要注意A.絕對(duì)地址長(zhǎng)度為16位,該指令至少為兩個(gè)字長(zhǎng),執(zhí)行周期也相對(duì)較長(zhǎng);B.有些采用絕對(duì)尋址的指令不能與單循環(huán)指令RPT,RPTZ配合使用,如(lk)尋址。③累加器尋址:累加器尋址是指將累加器A中的內(nèi)容〔低16位〕作為程勛存儲(chǔ)器的地址,完成程序控件和數(shù)據(jù)控件的數(shù)據(jù)訪問(wèn)的一種方式。通過(guò)指令READA或WRITA實(shí)現(xiàn)。④直接尋址:直接尋址是指利用指令中的地址偏移量dma與數(shù)據(jù)頁(yè)指針DP或堆棧指針SP組合,找到數(shù)據(jù)空間中的一個(gè)16位地址的方式。它實(shí)際上是一種相對(duì)尋址方式,多為單字單周期指令。⑤間接尋址:間接尋址是指通過(guò)兩個(gè)輔助算術(shù)邏輯單元ARAU0、ARAU1及8個(gè)輔助存放器AR0~AR7,間接獲得數(shù)據(jù)存儲(chǔ)器地址的方式。在這種方式下,輔助存放器的內(nèi)容就是數(shù)據(jù)空間操作數(shù)的地址,這些地址的產(chǎn)生是通過(guò)ARAU和相關(guān)硬件進(jìn)行的。按照尋址目的又可將間接尋址方式分為但操作數(shù)尋址和雙操作數(shù)尋址。⑥存儲(chǔ)器映像存放器尋址:存儲(chǔ)器映像存放器尋址是一種直接訪問(wèn)存儲(chǔ)器映像存放器MMR的方式,可以用來(lái)修改MMR的值。直接尋址時(shí),不管SP或DP的值如何,都強(qiáng)制其高9位為0;在間接尋址時(shí),僅使用輔助存放器中的低7位,而使用其高9位為0。此外,對(duì)數(shù)據(jù)空間0頁(yè)上的0060h~0070h也可以采用存儲(chǔ)器映像存放器尋址方式去訪問(wèn)。⑦堆棧尋址:堆棧尋址用于進(jìn)行數(shù)據(jù)或者M(jìn)MR的入棧和出棧操作。C54x的堆棧是下拉式堆棧,入棧時(shí)地址值減小,出棧時(shí)地址值增加。堆棧指針是16位的存儲(chǔ)器映像存放器SP,它總是指向棧頂位置。DSP在調(diào)用或中斷響應(yīng)時(shí)會(huì)自動(dòng)將PC值送入堆棧保存。堆棧也可使用于數(shù)據(jù)的暫存或傳遞等。二、調(diào)試說(shuō)明總結(jié)上機(jī)調(diào)試步驟和調(diào)試情況,分析調(diào)試中遇到的問(wèn)題是如何解決的。三、答復(fù)下列問(wèn)題〔1〕總結(jié)TMS320C54X的7種尋址方式的尋址空間情況,它們分別應(yīng)用在什么場(chǎng)合?答:<1>立即尋址主要用于初始化,特點(diǎn)是指令中包含一個(gè)固定的立即數(shù),因此沒(méi)有尋找數(shù)據(jù)地址的過(guò)程。在立即尋址方式指令中,應(yīng)在數(shù)值或符號(hào)前面加一個(gè)“#〞,表示是一個(gè)立即數(shù),以區(qū)別于地址。<2>絕對(duì)尋址利用16位地址尋址存儲(chǔ)單元,特點(diǎn)是指令中包含一個(gè)固定地址。16位地址可以用其地址標(biāo)號(hào)或程序中定義的符號(hào)常數(shù)來(lái)表示。有dmad,pmad,PA,*(lk)四種方式。<3>累加器尋址是將累加器的內(nèi)容作為地址去訪問(wèn)程序存儲(chǔ)器單元,即將累加器中的數(shù)作為地址,用來(lái)對(duì)存放數(shù)據(jù)的程序存儲(chǔ)器尋址。有兩條指令可以采用累加器尋址,READASmem和WRITASmem,這兩條指令,在重復(fù)方式下執(zhí)行,可以用來(lái)每次對(duì)累加器A的內(nèi)容增加1。<4>直接尋址是利用數(shù)據(jù)指針和堆棧指針尋址,特點(diǎn)是數(shù)據(jù)存儲(chǔ)器地址由基地址〔數(shù)據(jù)頁(yè)指針DP和堆棧指針SP〕和廉價(jià)地址共同構(gòu)成,共16位?;刂肺挥跀?shù)據(jù)存儲(chǔ)器地址的高9位,偏移地址位于數(shù)據(jù)存儲(chǔ)器地址〔dmad〕的低7位。DP和SP都可以與dmad偏移結(jié)合產(chǎn)生實(shí)際的地址。<5>間接尋址是利用輔助存放器內(nèi)容作為地址指針訪問(wèn)存儲(chǔ)器。C54X有8個(gè)16位輔助存放器〔AR0-AR7〕.每一個(gè)存放器都可以用來(lái)尋址64千字?jǐn)?shù)據(jù)荀小虎空間中任何一個(gè)單元。間接尋址的靈活性表達(dá)在:不僅能從存儲(chǔ)器中讀或?qū)懸粋€(gè)單16位的數(shù)據(jù)操作數(shù),而且能在一條指令中訪問(wèn)兩個(gè)數(shù)據(jù)存儲(chǔ)器單元。有兩種特殊的間接尋址防護(hù)四:循環(huán)尋址和位倒序?qū)ぶ贩绞健?lt;6>存儲(chǔ)器映像存放器尋址〔MMR〕用于修改存儲(chǔ)器映像存放器的值,而不影響當(dāng)前數(shù)據(jù)頁(yè)指針〔DP〕或堆棧指針〔SP〕的值。MMR尋址可以工作在直接和間接尋址方式下。<7>堆棧尋址用于發(fā)生終端或子程序調(diào)用時(shí)自動(dòng)存放程序計(jì)數(shù)器〔PC〕中的值。堆棧也能用來(lái)保護(hù)現(xiàn)場(chǎng)或傳送參數(shù)。C54X的堆棧是從搞地質(zhì)向低地址方向填入的。SP始終指向存放在堆棧中的最后一個(gè)元素。執(zhí)行壓入堆棧操作時(shí),先減小SP后再將數(shù)據(jù)壓入堆棧;而執(zhí)行堆棧彈出操作時(shí),那么是先從堆棧彈出數(shù)據(jù),然后再增加SP的值。〔2〕直接尋址有兩種方式,它們是如何控制的?答:直接尋址有DP和SP兩種方式。當(dāng)CPL=0時(shí),以數(shù)據(jù)頁(yè)指針存放器DP的9位為高高位,以指令中的7位〔dmad〕為低位,共同構(gòu)成16位數(shù)據(jù)存儲(chǔ)單元的地址。當(dāng)CPL=1時(shí),將堆棧指針SP的16位地址與指令中的7位地址相加,形成16位的數(shù)據(jù)存儲(chǔ)器地址。〔3〕寫出符號(hào)“#〞、“@〞、“*〞在指令〔尋址方式〕中所表示的含義。答:“#〞在立即尋址中表示立即數(shù)“@〞B表示直接尋址,后跟偏移量“*〞表示絕對(duì)尋址和間接尋址?!?〕堆棧尋址的作用是什么?壓棧和彈出操作是如何實(shí)現(xiàn)的?答:堆棧尋址用于發(fā)生終端或子程序調(diào)用時(shí)自動(dòng)存放程序計(jì)數(shù)器〔PC〕中的值。堆棧也能用來(lái)保護(hù)現(xiàn)場(chǎng)或傳送參數(shù)。C54X的堆棧是從搞地質(zhì)向低地址方向填入的。SP始終指向存放在堆棧中的最后一個(gè)元素。執(zhí)行壓入堆棧操作時(shí),先減小SP后再將數(shù)據(jù)壓入堆棧;而執(zhí)行堆棧彈出操作時(shí),那么是先從堆棧彈出數(shù)據(jù),然后再增加SP的值?!?〕絕對(duì)地址尋址有哪幾種?它們可以訪問(wèn)哪些地址空間?各有什么特點(diǎn)?答:絕對(duì)地址尋址有4種方式,分別是:數(shù)據(jù)存儲(chǔ)器地址〔dmad〕尋址,程序存儲(chǔ)器地址(pmad)尋址,端口(PA)尋址和*〔lk〕尋址。其中,dmad尋址用于確定操作數(shù)存于數(shù)據(jù)存儲(chǔ)單元的地址。Pmad尋址用于確定程序存儲(chǔ)器中的一個(gè)地址。PA尋址是用一個(gè)符號(hào)或一個(gè)數(shù)字來(lái)確定外部I/O端口的地址。*〔lk〕尋址是使用一個(gè)指定數(shù)據(jù)空間的地址來(lái)確定數(shù)據(jù)存儲(chǔ)器中的一個(gè)地址。實(shí)驗(yàn)三定點(diǎn)定標(biāo)運(yùn)算一程序分析分析程序的結(jié)構(gòu)和功能,對(duì)每條指令進(jìn)行注釋,寫出執(zhí)行結(jié)果。 .title "example41.asm" .mmregs ;enablememorymappedregistersstack .usect "STACK",10h ;setstacksection .bss x1,2 .bss y,2 .bss s1,2 .bss z,2table1: .word 35*32768/100 ;0.35的Q15定標(biāo) .word 9*32768/10 ;0.9的Q15定標(biāo) .word 0 .word0table2: .word 762*4096/100 ;7.62的Q12定標(biāo) .word 184*16384/100 ;1.84的Q14定標(biāo) .def_c_int00; .text_c_int00: stm #stack+10h,SP ; stm #0x00a8,PMST stm #0x0000,SWWSR SSBX FRCT ;求y=x1×x2=0.35×0.9=0.315 STM #x1,AR2 RPT #3 MVPD table1,*AR2+ STM #x1,AR4 STM #x1+1,AR5 MPY *AR4,*AR5,A STH A,y RSBX FRCT ;求z=s1×s2=7.62×1.84=14.0208 STM #s1,AR2 RPT #1 MVPD table2,*AR2+ STM #s1,AR4 STM #s1+1,AR5 MPY *AR4,*AR5,A DST A,z NOP NOP .end二、調(diào)試說(shuō)明總結(jié)上機(jī)調(diào)試步驟和調(diào)試情況,說(shuō)明調(diào)試中遇到的問(wèn)題是如何解決的。三、總結(jié)定點(diǎn)數(shù)定標(biāo)的方法,總結(jié)將十進(jìn)制數(shù)轉(zhuǎn)換為Q定標(biāo)的十六進(jìn)制數(shù)的方法。答:假設(shè)將0.x寫成Qn定標(biāo),那么將定點(diǎn)數(shù)放大假設(shè)干倍〔設(shè)為N倍〕變成整數(shù)x,那么0.x的Qn定標(biāo)值為:x*2^n/N。例如:0.35的Q15定標(biāo)值2cccH0.9的Q15定標(biāo)值7333H0.35*0.9的Q15定標(biāo)值2851H7.62的Q12定標(biāo)值79ebH1.84的Q14定標(biāo)值75c2H7.62*1.84的Q26定標(biāo)值3814H四、總結(jié)實(shí)現(xiàn)定點(diǎn)數(shù)乘法運(yùn)算的方法。答:兩定點(diǎn)數(shù)相乘有三種情況:1、整數(shù)*整數(shù):Q0*Q0,結(jié)果仍為純整數(shù),小數(shù)點(diǎn)在結(jié)果的D0位后面。2、小數(shù)*小數(shù):Q15*Q15=Q30,結(jié)果仍為純小數(shù),小數(shù)點(diǎn)在乘積的D30為位后面,也就是說(shuō),D31和D30位都是符號(hào)位,且其值相同。另外,16位純小數(shù)乘積的精度已經(jīng)到達(dá)2^-15,因此,對(duì)這種純小數(shù)乘法可將乘積左移一位,去掉多余的符號(hào)位,然后保存高16位結(jié)果,仍是Q15定標(biāo)。C54X的硬件乘法器已提供了對(duì)乘積的處理功能,只需將標(biāo)志位FRCT置1,硬件就可自動(dòng)完成對(duì)乘積左移一位操作。3、混合小數(shù)乘法:Qi*Qj=Qi+j對(duì)16*16=32位數(shù)而言,式中:0<i<15,0<j<15,0<i+j<30.通常,相乘的兩個(gè)數(shù)種,假設(shè)一個(gè)數(shù)的整數(shù)位為M位,小數(shù)位為〔15-M〕位,另一個(gè)數(shù)的整數(shù)位為N位,小數(shù)位為〔15-N〕位,那么兩數(shù)相乘的積整數(shù)位為〔M+N〕位,小數(shù)位為〔15-M〕+〔15-N〕=30-M-N位。實(shí)驗(yàn)五匯編程序的優(yōu)化一程序分析〔1〕分析主程序中4個(gè)匯編程序內(nèi)容的優(yōu)化方法,對(duì)有關(guān)指令進(jìn)行注釋,寫出各個(gè)程序段的執(zhí)行結(jié)果。 .mmregs stack .usect "STACK",100h .bssa1,1 .bssa2,1 .bssb1,1 .bssb2,1 .bssc1,1 .bssc2,1 .bssep,1 .bssmp,1 .bssproduct,1 .bsstemp,1 .datatable: .word4*32768/10 ;0.4的Q15定標(biāo) .word-9*32768/10 ;-0.9的Q15定標(biāo) .def_c_int00; .text_c_int00: stm #stack+100h,SP stm #0x0000,SWWSR mvpd table,@a1 mvpd table+1,@a2 ld @a1,16,A exp A st T,@b1 norm A sth A,@c1 ld @a2,16,A exp A st T,@b2 norm A sth A,@c2 call multendd: b enddmult: ssbx frct ssbx sxm ld @b1,A add @b2,A stl A,@ep ld @c1,T mpy @c2,A exp A st T,@temp norm A sth A,@mp ld @temp,A add @ep,A stl A,@ep neg A stl A,@temp ld @temp,T ld @mp,16,A norm A sth A,@product nop ret nop .end〔2〕填寫表5-1~表5-4的內(nèi)容,分析和總結(jié)各種優(yōu)化方法的特點(diǎn)。表5-1針對(duì)內(nèi)容1使用指令代碼長(zhǎng)度〔字〕執(zhí)行時(shí)間〔CPU時(shí)鐘周期〕CMPR2122SUB1210CMPS55比擬可知:相同的功能下,CMPS指令長(zhǎng)度最短,執(zhí)行時(shí)間最短,效率最高。表5-2針對(duì)內(nèi)容2使用指令代碼長(zhǎng)度〔字〕執(zhí)行時(shí)間〔CPU時(shí)鐘周期〕BANZ17138BANZD18108比擬可知:BANZD雖然比BANZ的程序長(zhǎng)度多出一個(gè)字長(zhǎng),但執(zhí)行時(shí)間比后者節(jié)30個(gè)指令周期〔循環(huán)次數(shù)為16次〕,節(jié)省了大量時(shí)間,在屢次循環(huán)中效率更高。表5-3針對(duì)內(nèi)容3使用指令代碼長(zhǎng)度〔字〕執(zhí)行時(shí)間〔CPU時(shí)鐘周期〕RPT727BANZ10125比擬可知:使用RPT比循環(huán)指令BANZ代碼字長(zhǎng)更短,執(zhí)行時(shí)間更短。表5-4針對(duì)內(nèi)容4使用方法代碼長(zhǎng)度〔字〕執(zhí)行時(shí)間〔CPU時(shí)鐘周期〕雙操作尋址1355并行指令23151比擬可知:使用雙操作數(shù)代碼和執(zhí)行時(shí)間都比并行指令短,效率更高?!?〕寫出各個(gè)程序段的未初始化數(shù)據(jù)存儲(chǔ)器空間的分布情況。答:第一段程序使用的未初始化段為.usect段,分別是STACK和Y,由命令文件知,Y存放在0X0060的PAGE1里面,STACK存放在0X0010開始的,長(zhǎng)度為0X100的PAGE1里面。第二、三、四段都使用的未初始化段為.bss段,存放在0X61開始到0X0260結(jié)束的空間里。實(shí)驗(yàn)六C語(yǔ)言編程與優(yōu)化1說(shuō)明該工程中每個(gè)文件的作用。該工程中如果沒(méi)有“rts.lib〞文件,能否進(jìn)行匯編、編譯和鏈接?答:不能。該工程中c-int00的作用是什么答:c-int00函數(shù)作用是初始化C環(huán)境,引導(dǎo)進(jìn)入C程序。中斷矢量處理程序vectors.asm和c語(yǔ)言主程序是怎樣進(jìn)行接口的?答:中斷處理程序開辟中斷矢量表的存儲(chǔ)空間,進(jìn)行中斷入口地址的跳轉(zhuǎn)處理,特別是對(duì)復(fù)位入口地址的處理,在程序執(zhí)行過(guò)程中起到了上電引導(dǎo)的作用,進(jìn)入主程序_c_int00,然后進(jìn)入C語(yǔ)言主程序。〔4〕當(dāng)采用地址指針匯編時(shí),如果將全局指針改為局部指針,為什么會(huì)提高程序的執(zhí)行速度?答:使用局部指針時(shí),編譯出的匯編指令使用RPT指令,RPT指令之后的被循環(huán)指令變?yōu)閱巫謫沃芷?,?zhí)行時(shí)間縮短。使用全局指針時(shí),循環(huán)指令代碼字?jǐn)?shù)周期數(shù)高,執(zhí)行速度慢?!?〕當(dāng)不采用地址指針編程時(shí),如果在for循環(huán)體中使用一個(gè)局部變量,為什么會(huì)提高程序的執(zhí)行速度?答:使用局部變量時(shí),局部變量數(shù)據(jù)的讀取是在進(jìn)入函數(shù)和函數(shù)返回時(shí)處理的,無(wú)論分配的內(nèi)存有多大都只需要一條指令,完全不需要額外的時(shí)間。使用全局變量,每次讀取數(shù)據(jù)都需要多條指令保護(hù)存放器和標(biāo)志位,大大增加了程序執(zhí)行所需的時(shí)間?!?〕比擬采用地址指針編程和不采用地址指針編程,編譯后的匯編程序有什么區(qū)別?執(zhí)行速度有無(wú)變化?答:采用地址指針編譯后的匯編程序是塊循環(huán),不采用地址指針的那么沒(méi)有塊循環(huán),執(zhí)行速度加快。2總結(jié)上機(jī)調(diào)試步驟,調(diào)試情況,調(diào)試中遇到的問(wèn)題是如何解決的?3填寫表6-1使用的優(yōu)化選項(xiàng)代碼長(zhǎng)度(字)執(zhí)行時(shí)間(CPU時(shí)鐘周期)無(wú)27H376O024H362O11CH362O210H25O310H25實(shí)驗(yàn)七混合編程實(shí)驗(yàn)1說(shuō)明該工程中每個(gè)文件的作用〔1〕頭文件“volumn.h〞的作用答:頭文件的作用是:存放一些全局標(biāo)號(hào),常量,變量,存放器名,位名等,作為共享文件使用,在引用文件中只需使用偽指令.copy或.include包含該頭文件即可,這樣就可到達(dá)簡(jiǎn)化陳旭的目的?!?〕寫出processing〔〕函數(shù)在調(diào)用匯編子程序load.asm時(shí)遵循了DSP混合編程的哪些約定?答:匯編程序和C語(yǔ)言程序一般都是在兩個(gè)不同的文件中,這樣,在不同文件中的變量或函數(shù)的應(yīng)用,必須加以全局說(shuō)明。在C程序中調(diào)用匯編子程序,那么必須在匯編文件中,用匯編問(wèn)指令.global定義或.def將這個(gè)子程序聲明為全局的程序。load.asm被C調(diào)用時(shí)帶有一個(gè)參數(shù)〔argument〕.〔3〕如果要輸入一個(gè)方波信號(hào),應(yīng)該怎樣設(shè)計(jì)相應(yīng)的數(shù)據(jù)文件〔.dat〕?答:應(yīng)在.dat文件中寫入以下值:165110100x0050……0x0050;〔以上50個(gè)0x0050〕0xFFB0……0xFFB0;〔以上50個(gè)0xFFB0〕2總結(jié)上機(jī)調(diào)試步驟,調(diào)試情況,調(diào)試中遇到的問(wèn)題是如何解決的。3.總結(jié)CCS所提供的探測(cè)點(diǎn)(ProbePoint)、圖表(Graph)、文件I/O(FileI/O)等調(diào)試工具的使用方法。答:探測(cè)點(diǎn)和文件:使用探測(cè)點(diǎn)probepoint將PC機(jī)上的數(shù)據(jù)文件sine.dat送往DSP目標(biāo)程序作為測(cè)試數(shù)據(jù),同時(shí),使用斷點(diǎn)在到達(dá)探測(cè)點(diǎn)時(shí)自動(dòng)更新所有翻開的窗口,這些窗口包括輸入/輸出數(shù)據(jù)的圖表等。使用方法如下:〔1〕雙擊Project工具欄上的RebulidAll圖標(biāo),重新生成程序?!?〕執(zhí)行主菜單“File〞中的“LoadProgram〞命令,選擇Volume.out并翻開。〔3〕在工程視圖中雙擊Volume.c以在右邊的編輯窗口中顯示源代碼。〔4〕將光標(biāo)放在volume.c程序中的主函數(shù)dataIO〔〕那一行上?!?〕在Project工具欄上雙擊“ProbePoint〞按鈕,添加ProbePoint。〔6〕執(zhí)行主菜單命令“File〞中的“FileI/O〞,出現(xiàn)FileI/O對(duì)話框,如圖7-2所示。在對(duì)話框中選擇輸入/輸出文件。〔7〕單擊“FileInput〞欄,再單擊“AddFile〞按鈕?!?〕選擇sine.dat文件,此文件與volume.c文件在同一目錄中?!?〕單擊“Open〞按鈕,將文件添加到FileI/O列表中。此時(shí)將出現(xiàn)一個(gè)控制窗口??梢栽谶\(yùn)行程序時(shí)使用這個(gè)窗口來(lái)控制數(shù)據(jù)文件的開始、停止、前進(jìn)、后退等操作?!?0〕在FileI/O對(duì)話框中的Address域填入inp_buffer,在Length域填入100,同時(shí)將WrapAround框選中。其中:Address域指示的是從文件中讀取的數(shù)據(jù)將要存放的地址。inp_buffer是在volume.c中定義的整型數(shù)組,其長(zhǎng)度為BUFFSIZE。Length域指示的是每次到達(dá)ProbePoint時(shí)從數(shù)據(jù)文件中讀取多少個(gè)樣點(diǎn)。這里取為100是因?yàn)锽UFFSZE=100,即每次取100個(gè)樣值存放在輸入緩沖中。如果Length超過(guò)100那么可能導(dǎo)致數(shù)據(jù)喪失。選中WrapAround說(shuō)明讀取數(shù)據(jù)的循環(huán)特性,每次讀至文件結(jié)尾處將自動(dòng)從文件頭開始重新讀取數(shù)據(jù)。這樣將從數(shù)據(jù)文件中讀取一個(gè)連續(xù)〔周期性〕的數(shù)據(jù)流?!?1〕單擊FileI/O對(duì)話框中的“AddProbepoint〞按鈕,將出現(xiàn)Break/Probe/ProfilePoints對(duì)話框,選中ProbePoints欄。〔12〕在ProbePoint列表中,高亮顯示寫有volume.cline61→NoConnection行,說(shuō)明第61行已設(shè)置ProbePoint,但還沒(méi)有與PC文件相關(guān)聯(lián)。〔13〕在Connect域,單擊向下箭頭并從列表中選sine.dat?!?4〕單擊Replace按鈕,ProbePoint列表指示ProbePoint已經(jīng)與sine.dat文件相關(guān)聯(lián)?!?5〕單擊“OK〞按鈕,F(xiàn)ileI/O對(duì)話框指示文件連至一個(gè)ProbePoint?!?6〕單擊“OK〞按鈕,關(guān)閉FileI/O對(duì)話框。圖表:其功能是:將程序產(chǎn)生的數(shù)據(jù)畫圖顯示出來(lái),包括時(shí)域/頻域波形顯示,星座圖、眼圖及圖像顯示。下面使用頻域/時(shí)域波形顯示功能,觀察一個(gè)時(shí)域波形。〔1〕執(zhí)行主菜單“View〞中的命令“Graph〞,選擇“Time/Frequency〞,彈出GraphProperty對(duì)話框?!?〕在GraphProperty對(duì)話框中,更改圖形的標(biāo)題、起始地址、采集緩沖區(qū)的大小、顯示數(shù)據(jù)大小、DSP數(shù)據(jù)類型、自動(dòng)伸縮屬性及最大Y值等?!?〕單擊“OK〞按鈕,將出現(xiàn)一個(gè)顯示inp_buffer波形的圖形窗口?!?〕在圖形窗口中單擊右鍵,從彈出菜單中選ClearDisplay,去除已有的顯示波形?!?〕再次執(zhí)行主菜單“View〞中的命令“Graph〞,選擇“Time/Frequency〞。〔6〕將GraphTitl地址欄改為Inputbuffer。其他設(shè)置不變?!?〕單擊〞OK〞按鈕,出現(xiàn)一個(gè)顯示Inputbuffer波形的圖形窗口,同樣單擊右鍵從彈出菜單中選ClearDisplay,去除己有的顯示波形。實(shí)驗(yàn)十定時(shí)器1.程序說(shuō)明說(shuō)明主程序的結(jié)構(gòu)和功能,對(duì)每條指令進(jìn)行注釋。 .file"timer.asm" ;.copy"vc5416_timer.inc" .mmregs .global _c_int00,main .def timer_iservTIM0 .set 0024HPRD0 .set 0025HTCR0 .set 0026HSWCR .set 0028HSWCR_VAL .set 01HTINT0_ENBL.set0008H ;開放TIMER0中斷,在中斷標(biāo)志存放器IMR中(IMR=1)PLLX5 .set 043EFH ;(0100001111101111b,43EFH)外部時(shí)鐘16MHz,5倍頻到80MHz,PLLCOUNT=125OVLY_1 .set 00A0H ;PMST中(0000000010100000)IPTR=000000001,OVLY=1***********************************************************************************定時(shí)周期=1ms。分頻系數(shù)TDDR=9,主時(shí)鐘周期=1/80M=12.5ns*周期數(shù)PRD=1F3FH(7999);定時(shí)周期=12.5*(TDDR+1)*(PRD+1)=12.5*(9+1)*(7999+1)=1000ns=1ms**********************************************************************************TIM0_VAL .set 01F3FHPRD0_VAL .set 01F3FHTCR0_VAL .set 0E69H ;(111001101001)Free、soft=11,PSC=9,TRB=1,TSS=0,TDDR=9***********************************************************************************定時(shí)周期=1ms。分頻系數(shù)TDDR=9,主時(shí)鐘周期=1/80M=12.5ns*周期數(shù)PRD=1F3FH(7999);定時(shí)周期=12.5*(TDDR+1)*(PRD+1)=12.5*(9+1)*(7999+1)=1000ns=1ms*****************************************************************************************TIM0_VAL .set 03E7FH;主頻為32MHz時(shí)的定時(shí)周期設(shè)置1ms(主頻31.25ns)*PRD0_VAL .set 03E7FH *TCR0_VAL .set 00C61H ;(0000110001100001)TDDR=1,PSC=1stack_size.set 100 stack .usect".stack",stack_sizesys_stack .set stack+stack_size .bss XF_FLAG,1 .bssLED_DISP,1 .text_c_int00: BD main STM #sys_stack,SPmain: ANDM #0fffeh,*(SP) STM #OVLY_1,PMST ;設(shè)置OVLY=1,MP/MC=0,DROM=0等 STM #SWWSR_VAL,SWWSR ;插入三個(gè)等待周期 STM #SWCR_VAL,SWCR***************************************************************************************** ;倍頻、分頻切換 **************************************************************************************** STM #0,CLKMD DIV_STATU: LDM CLKMD,B AND #01H,B BC DIV_STATU,BNEQ ;CLKMD.0位為倍頻及分頻狀態(tài)位;0為DIV方式,1為PLL方式 STM #PLLX5,CLKMD ;已切換到DIV狀態(tài)PLL_STATU: LDM CLKMD,B AND #01H,B BC PLL_STATU,BEQ ;已切換到PLL狀態(tài) ;setupandstarttimer STM #TINT0_ENBL,IMR ;STM #TINT0_ENBL,IFR ;中斷允許存放器中的TINT0位=1,清理未處理完的定時(shí)中斷。 STM #XF_FLAG,AR1 ST #0,*AR1 STM #03E8H,AR2 ;倒計(jì)中斷次數(shù)1000〔3E8H〕 ;STM #TIM0_VAL,TIM STM #PRD0_VAL,PRD STM #TCR0_VAL,TCR ;TSS=0,啟動(dòng)定時(shí)器0 RSBX INTMWAIT: BD WAIT NOP NOP NOP* ;中斷效勞程序****************************************************************************************timer_iserv: BANZ EXIT_ISERV,*AR2- STM #03E8H,AR2 ;重載倒計(jì)中斷次數(shù)1000〔3E8H〕 BITF *AR1,#1H ;位測(cè)試XF_FLAG的最低位 BC XF_0,TC ;如果TC=1,說(shuō)明XF_FLAGAND#1H=1,轉(zhuǎn)XF_0 SSBX XF ;XF置1 ST #01H,*AR1 ;將1裝入標(biāo)志位XF_FLAG STM #LED_DISP,AR3 ST #0FFFFH,*AR3 PORTW *AR3,08002H ;訪問(wèn)CPLD板上的八位LED B EXIT_ISERVXF_0: RSBX XF ;XF置0 ST #00H,*AR1 ;將0裝入標(biāo)志位XF_FLAG STM #LED_DISP,AR3 ST #0H,*AR3 PORTW *AR3,08002HEXIT_ISERV: RETE .end 2.調(diào)試說(shuō)明總結(jié)上機(jī)調(diào)試步驟和調(diào)試情況,說(shuō)明調(diào)試中遇到的問(wèn)題是如何解決的。3.分析和總結(jié)片內(nèi)定時(shí)器的結(jié)構(gòu)特點(diǎn)及編程中的要點(diǎn),寫出片內(nèi)定時(shí)器初始化的步驟。答:片內(nèi)定時(shí)器主要由定時(shí)存放器〔TIM〕,周期存放器〔PRD〕,預(yù)分頻計(jì)數(shù)器〔PSC〕,預(yù)分頻系數(shù)〔TDDR〕及控制邏輯電路等組成??梢詣澐譃閮蓚€(gè)主要模塊:主定時(shí)模塊和預(yù)分頻模塊。其中,主定時(shí)模塊包括TIM和PRD,它們是兩個(gè)可編程的16位存儲(chǔ)器映像存放器〔MMR〕,地址分別是0024h和0025h。Tim是一個(gè)減法計(jì)數(shù)器,它的計(jì)數(shù)初值由PRD進(jìn)行裝載。預(yù)分頻模塊由PSC和TDDR組成,它們分別位于定時(shí)器控制存放器TCR的D9~D6,D3~D0位,該存放器也是一個(gè)可編程的16位存儲(chǔ)器映像存放器。定時(shí)器的編程中有3個(gè)關(guān)鍵點(diǎn):怎樣計(jì)算計(jì)數(shù)初值,怎樣對(duì)定時(shí)器進(jìn)行初始化和怎樣配置定時(shí)器的中斷。初始化步驟:(1)將TCR的TSS置1,關(guān)閉定時(shí)器(2)裝載PRD(3)初始化TDDR.將TRB置1去重新裝載定時(shí)器的初值,將TSS清0以使能定時(shí)器.實(shí)驗(yàn)十一數(shù)字I/O口的應(yīng)用1說(shuō)明程序的結(jié)構(gòu)和功能,對(duì)每條指令進(jìn)行注釋。 .file "vc5416_traffic.asm" .mmregs .global _c_int00,main .def timer_iservTIM0 .set 0024HPRD0 .set 0025HTCR0 .set 0026HSWCR .set 0028HSWCR_VAL .set 01HTINT0_ENBL.set0008H ;開放TIMER0中斷,在中斷標(biāo)志存放器IMR中PLLX5 .set 043EFH ;(0100001111101111b,43EFH)外部時(shí)鐘16MHz,5倍頻到80MHz,PLLCOUNT=125OVLY_1 .set 00A0H ;PMST中(0000000010100000)IPTR=000000001,OVLY=1*****************************************************************************************定時(shí)周期=1ms。分頻系數(shù)TDDR=9,主時(shí)鐘周期=1/80M=12.5ns*周期數(shù)PRD=1F3FH(7999);定時(shí)周期=12.5*(TDDR+1)*(PRD+1)=12.5*(9+1)*(7999+1)=1000ns=1ms****************************************************************************************TIM0_VAL .set 01F3FHPRD0_VAL .set 01F3FHTCR0_VAL .set 0E69H ;(111001101001)soft、Free=11,PSC=9,TRB=1,TSS=0,TDDR=9IMR_VAL .set 0008H TRAF_ADDR .set 08000HSN_GREEN .set 030CH ;001100001100b ;南北綠、東西紅;EW_RED .set 0104H ;000100000100bEW_YELLOW .set 0082H ;000010000010bDELAY4S .set 0FA0H ;4SDELAY1MS .set 022F0H;1S數(shù)的開方stack_size.set 100 stack .usect".stack",stack_sizesys_stack .set stack+stack_size .bss LED_DISP,1 .bss LED_FLAG,1 .bssLED_GREEN,1 .bss LED_RED,1 .bss LED_YELLOW,1 .bss DEL_1,1 ;放入循環(huán)(8944d(22F0h))次 .bss DEL_2,1 ;放入循環(huán)(8944d(22F0h))次 .text_c_int00: BD main STM #sys_stack,SP********************************************************************** *程序開始********************************************************************** main: ANDM #0FFFEH,*(SP) ;SP定位在偶地址 STM #OVLY_1,PMST ;片內(nèi)RAM同時(shí)映射到程序空間和數(shù)據(jù)空間,0080H~3FFFH定義為內(nèi)部DARAM STM #SWWSR_VAL,SWWSR;三個(gè)空間都插入三個(gè)等待周期數(shù) STM #SWCR_VAL,SWCR ;X2********************************************************************** *切換主頻為PLL〔倍頻〕方式,主頻設(shè)置為80MHz********************************************************************** STM #0,CLKMD ;切換到DIV模式DIV_STATU: LDM CLKMD,B ;測(cè)試最低位。"0"標(biāo)志為DIV模式,"1"標(biāo)志為PLL模式 AND #01H,B BC DIV_STATU,BNEQ ;B不等于0時(shí),循環(huán)等待 STM #PLLX5,CLKMDPLL_STATU: LDM CLKMD,B AND #01H,B BC PLL_STATU,BEQ ;B等于0時(shí)跳轉(zhuǎn)時(shí),循環(huán)等待********************************************************************** *設(shè)置定時(shí)器參數(shù)〔1ms〕********************************************************************** RSBX INTM ;中斷使能 STM #IMR_VAL,IMR ;開放TINT0中斷 STM #TIM0_VAL,TIM0 ;1毫秒 STM #PRD0_VAL,PRD0 STM #TCR0_VAL,TCR0;啟動(dòng)定時(shí)器********************************************************************** *紅綠燈顯示初始化,起始狀態(tài)為"0"〔熄滅〕********************************************************************** STM #LED_FLAG,AR3 ;LED顯示標(biāo)志 ST #0,*AR3 STM #LED_DISP,AR1 ;所有LED清零 ST #0H,*AR1 PORTW *AR1,TRAF_ADDR********************************************************************** *設(shè)置定時(shí)器中斷次數(shù)及黃燈延時(shí)參數(shù)1s********************************************************************** STM #DELAY4S,AR5 ;定時(shí)器延時(shí)4秒〔4X1000ms〕 STM #DEL_1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZNZ 264.1-2024 重金屬中度污染農(nóng)田土壤修復(fù)和安全利用技術(shù)規(guī)范 第1部分:超積累東南景天與油葵輪作
- 二零二五年度車輛轉(zhuǎn)讓與二手車交易及金融服務(wù)協(xié)議
- 2025年度蛋糕店與體育賽事合作贊助協(xié)議
- 2025年度道路橋梁維修施工安全協(xié)議書
- 2025年度網(wǎng)絡(luò)安全產(chǎn)品銷售提成與技術(shù)服務(wù)合同
- 二零二五年度企業(yè)員工宿舍三方租賃協(xié)議
- 二零二五年度臨時(shí)廚房工作人員聘用合同
- 二零二五年度個(gè)體商戶勞動(dòng)合同(體育賽事組織與運(yùn)營(yíng))
- 中學(xué)生環(huán)保行動(dòng)策劃案解讀
- 監(jiān)控項(xiàng)目合作合同監(jiān)控施工合同
- 中國(guó)骨關(guān)節(jié)炎診療指南(2024版)解讀
- 【歷史】2025年春季七下歷史新教材課本答案大全(想一想、材料研讀、讀地圖、課后活動(dòng))
- 高端寫字樓物業(yè)管理思路
- 江蘇省中小學(xué)生金鑰匙科技競(jìng)賽(高中組)考試題及答案
- 2024-2030年中國(guó)ORC低溫余熱發(fā)電系統(tǒng)行業(yè)商業(yè)模式創(chuàng)新規(guī)劃分析報(bào)告
- 【MOOC】三維設(shè)計(jì)與表達(dá)-北京林業(yè)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 婦幼健康信息平臺(tái)共享數(shù)據(jù)集應(yīng)用規(guī)范第1部分孕產(chǎn)婦保健
- 輸液港的輸液與維護(hù)
- 非洲豬瘟病毒基因IⅡ型重組毒株、基因I型弱毒株和基因Ⅱ型毒株鑒別三重?zé)晒釶CR檢測(cè)方法
- 2024解析:第十四章內(nèi)能的利用-講核心(解析版)
- 各類應(yīng)急風(fēng)險(xiǎn)預(yù)案的防范
評(píng)論
0/150
提交評(píng)論