




已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ARM嵌入式系統(tǒng)結(jié)構(gòu)與編程習(xí)題答案第一章 緒論1. 國(guó)內(nèi)嵌入式系統(tǒng)行業(yè)對(duì)“嵌入式系統(tǒng)”的定義是什么?如何理解?答:國(guó)內(nèi)嵌入式行業(yè)一個(gè)普遍認(rèn)同的定義是:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能,可靠性,成本,體積,功耗嚴(yán)格要求的專業(yè)計(jì)算機(jī)系統(tǒng)。從這個(gè)定義可以看出嵌入式系統(tǒng)是與應(yīng)用緊密結(jié)合的,它具有很強(qiáng)的專用性,必須結(jié)合實(shí)際系統(tǒng)需求進(jìn)行合理的剪裁利用。因此有人把嵌入式系統(tǒng)比作是一個(gè)針對(duì)特定的應(yīng)用而“量身定做”的專業(yè)計(jì)算機(jī)系統(tǒng)。2嵌入式系統(tǒng)是從何時(shí)產(chǎn)生的,簡(jiǎn)述其發(fā)展歷程。答:從20世紀(jì)70年代單片機(jī)的出現(xiàn)到目前各式各樣的嵌入式微處理器,微控制器的大規(guī)模應(yīng)用,嵌入式系統(tǒng)已經(jīng)有了30多年的發(fā)展歷史。嵌入式系統(tǒng)的出現(xiàn)最初是基于單片機(jī)的。Intel公司1971年開發(fā)出第一片具有4位總線結(jié)構(gòu)的微處理器4004,可以說(shuō)是嵌入式系統(tǒng)的萌芽階段。80年代初的8051是單片機(jī)歷史上值得紀(jì)念的一頁(yè)。20世紀(jì)80年代早期,出現(xiàn)了商業(yè)級(jí)的“實(shí)時(shí)操作系統(tǒng)內(nèi)核”,在實(shí)時(shí)內(nèi)核下編寫應(yīng)用軟件可以使新產(chǎn)品的沿著更快,更節(jié)省資金。20世紀(jì)90年代實(shí)時(shí)內(nèi)核發(fā)展為實(shí)時(shí)多任務(wù)操作系統(tǒng)。步入21世紀(jì)以來(lái),嵌入式系統(tǒng)得到了極大的發(fā)展。在硬件上,MCU的性能得到了極大的提升,特別是ARM技術(shù)的出現(xiàn)與完善,為嵌入式操作系統(tǒng)提供了功能強(qiáng)大的硬件載體,將嵌入式系統(tǒng)推向了一個(gè)嶄新的階段。3當(dāng)前最常用的源碼開放的嵌入式操作系統(tǒng)有哪些,請(qǐng)舉出兩例,并分析其特點(diǎn)。答:主要有嵌入式Linux和嵌入式實(shí)時(shí)操作內(nèi)核uC/OS-II嵌入式Linux操作系統(tǒng)是針對(duì)嵌入式微控制器的特點(diǎn)而量身定做的一種Linux操作系統(tǒng),包括常用的嵌入式通信協(xié)議和常用驅(qū)動(dòng),支持多種文件系統(tǒng)。主要有以下特點(diǎn):源碼開放,易于移植,內(nèi)核小,功能強(qiáng)大,運(yùn)行穩(wěn)定,效率高等。uC/OS是源碼工卡的實(shí)時(shí)嵌入式系統(tǒng)內(nèi)核,主要有以下特點(diǎn):源碼公開,可移植性強(qiáng),可固化,可剪裁,占先式,多任務(wù),可確定性,提供系統(tǒng)服務(wù)等。4舉例說(shuō)明嵌入式設(shè)備在工控設(shè)備中的應(yīng)用。答:由于工業(yè)控制系統(tǒng)特別強(qiáng)調(diào)可靠性和實(shí)時(shí)性,“量身定做”的嵌入式控制系統(tǒng)恰能滿足工業(yè)控制的需求。例如:工業(yè)過(guò)程控制,數(shù)字控制機(jī)床,電網(wǎng)設(shè)備監(jiān)測(cè),電力自動(dòng)控制系統(tǒng),石油化工監(jiān)控等。5嵌入式技術(shù)的發(fā)展趨勢(shì)有哪些?答:未來(lái)嵌入式系統(tǒng)的發(fā)展趨勢(shì)有:1.隨著信息化與數(shù)字化的發(fā)展,嵌入式設(shè)備進(jìn)行網(wǎng)絡(luò)互聯(lián)是未來(lái)發(fā)展的趨勢(shì)。2.優(yōu)化嵌入式系統(tǒng)軟硬件內(nèi)核,提高系統(tǒng)運(yùn)行速度,降低功耗和硬件成本。3.指令集的并行計(jì)算技術(shù)將引入嵌入式微處理器。4.嵌入式微處理器將會(huì)向多核技術(shù)發(fā)展。5.嵌入式技術(shù)將引領(lǐng)信息時(shí)代。第2章 ARM技術(shù)與ARM體系結(jié)構(gòu)1.簡(jiǎn)述ARM處理器內(nèi)核調(diào)試結(jié)構(gòu)原理答:ARM處理器一般都帶有嵌入式追蹤宏單元ETM(Embedded Trace Macro),它是ARM公司自己推出的調(diào)試工具。ARM處理器都支持基于JTAG(Joint Test Action Group 聯(lián)合測(cè)試行動(dòng)小組)的調(diào)試方法。它利用芯片內(nèi)部的Embedded ICE來(lái)控制ARM內(nèi)核操作,可完成單步調(diào)試和斷點(diǎn)調(diào)試等操作。當(dāng)CPU處理單步執(zhí)行完畢或到達(dá)斷點(diǎn)處時(shí),就可以在宿主機(jī)端查看處理器現(xiàn)場(chǎng)數(shù)據(jù),但是它不能在CPU運(yùn)行過(guò)程中對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行仿真。ETM解決了上述問(wèn)題,能夠在CPU運(yùn)行過(guò)程中實(shí)時(shí)掃描處理器的現(xiàn)場(chǎng)信息,并數(shù)據(jù)送往TAP(Test Access Port)控制器。上圖中分為三條掃描鏈(圖中的粗實(shí)線),分別用來(lái)監(jiān)視ARM核,ETM,嵌入式ICE的狀態(tài)。2. 分析ARM7TDMI-S各字母所代表的含義。答:ARM7 T D M I S 中 ARM是Advanced RISC Machines的縮寫7是系列號(hào);T:支持高密度16位的Thumb指令集;D:支持JTAG片上調(diào)試;M:支持用于長(zhǎng)乘法操作(64位結(jié)果)ARM指令,包含快速乘法器;I:帶有嵌入式追蹤宏單元ETM,用來(lái)設(shè)置斷點(diǎn)和觀察點(diǎn)的調(diào)試硬件;S:可綜合版本,意味著處理器內(nèi)核是以源代碼形式提供的。這種源代碼形式又可以編譯成一種易于EDA工具使用的形式。3. ARM處理器的工作模式有哪幾種,其中哪些為特權(quán)模式,哪些為異常模式,并指出處理器在什么情況下進(jìn)入相應(yīng)的模式。答:ARM技術(shù)的設(shè)計(jì)者將ARM處理器在應(yīng)用中可能產(chǎn)生的狀態(tài)進(jìn)行了分類,并針對(duì)同一類型的異常狀態(tài)設(shè)定了一個(gè)固定的入口點(diǎn),當(dāng)異常產(chǎn)生時(shí),程序會(huì)自動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)異常入口處進(jìn)行異常服務(wù)。 n 1用戶模式:非特權(quán)模式,也就是正常程序執(zhí)行的模式,大部分任務(wù)在這種模式下執(zhí)行。在用戶模式下,如果沒異常發(fā)生,不允許應(yīng)用程序自行改變處理器的工作模式,如果有異常發(fā)生,處理器會(huì)自動(dòng)切換工作模式n 2FIQ模式:也稱為快速中斷模式,支持高速數(shù)據(jù)傳輸和通道處理,當(dāng)一個(gè)高優(yōu)先級(jí)(fast)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式。n 3IRQ模式:也稱為普通中斷模式,:當(dāng)一個(gè)低優(yōu)先級(jí)(normal)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式。在這模式下按中斷的處理器方式又分為向量中斷和非向量中斷兩種。通常的中斷處理都在IRQ模式下進(jìn)行。n 4SVC模式:稱之為管理模式,它是一種操作系統(tǒng)保護(hù)模式。當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)處理器將進(jìn)入這種模式。n 5中止模式:當(dāng)存取異常時(shí)將會(huì)進(jìn)入這種模式,用來(lái)處理存儲(chǔ)器故障、實(shí)現(xiàn)虛擬存儲(chǔ)或存儲(chǔ)保護(hù)。n 6未定義指令異常模式:當(dāng)執(zhí)行未定義指令時(shí)會(huì)進(jìn)入這種模式,主要是用來(lái)處理未定義的指令陷阱,支持硬件協(xié)處理器的軟件仿真,因?yàn)槲炊x指令多發(fā)生在對(duì)協(xié)處理器的操作上。n 7系統(tǒng)模式:使用和User模式相同寄存器組的特權(quán)模式,用來(lái)運(yùn)行特權(quán)級(jí)的操作系統(tǒng)任務(wù)。n 在這7種工作模式中,除了用戶模式以外,其他6種處理器模式可以稱為特權(quán)模式,在這些模式下,程序可以訪問(wèn)所有的系統(tǒng)資源,也可以任意地進(jìn)行處理器模式的切換。n 在這6種特權(quán)模式中,除了系統(tǒng)模式外的其他5種特權(quán)模式又稱為異常模式,每種異常都對(duì)應(yīng)有自己的異常處理入口點(diǎn)。 4. 分析程序狀態(tài)寄存器(PSR)各位的功能描述,并說(shuō)明C,Z,N,V在什么情況下進(jìn)行置位和清零。答:n 條件位:n N = 1-結(jié)果為負(fù), 0-結(jié)果為正或0n Z = 1-結(jié)果為0, 0-結(jié)果不為0n C =1-進(jìn)位, 0-借位n V =1-結(jié)果溢出, 0結(jié)果沒溢出n Q 位:n 僅ARM 5TE/J架構(gòu)支持n 指示增強(qiáng)型DSP指令是否溢出n 中斷禁止位:n I = 1: 禁止 IRQ.n F = 1: 禁止 FIQ.n T Bitn 僅ARM xT架構(gòu)支持n T = 0: 處理器處于 ARM 狀態(tài)n T = 1: 處理器處于 Thumb 狀態(tài)n Mode位(處理器模式位):n 0b10000Usern 0b10001FIQn 0b10010IRQn 0b10011Supervisorn 0b10111Abortn 0b11011Undefinedn 0b11111System5. 簡(jiǎn)述ARM處理器異常處理和程序返回的過(guò)程。答:只要正常的程序流被暫時(shí)中止,處理器就進(jìn)入異常模式。例如響應(yīng)一個(gè)來(lái)自外設(shè)的中斷。在處理異常之前,ARM7TDMI內(nèi)核保存當(dāng)前的處理器狀態(tài),這樣當(dāng)處理程序結(jié)束時(shí)可以恢復(fù)執(zhí)行原來(lái)的程序。如果同時(shí)發(fā)生兩個(gè)或更多異常,那么將按照固定的順序來(lái)處理異常。異?;蛉肟诜祷刂噶钕蛄勘砥铺幚砥髂J絻?yōu)先級(jí)BLMOV PC,R14 SWIMOVS PC,R14_svcSVC60x00000008未定義的指令MOVS PC,R14_undUND60x00000004預(yù)取指中止SUBS PC,R14_abt,#4ABT50x0000000C快中斷SUBS PC,R14_fiq,#4FIQ30x0000001C中斷SUBS PC,R14_irq,#4IRQ40x00000018數(shù)據(jù)中止SUBS PC,R14_abt,#8ABT20x00000010復(fù)位無(wú)SVC10x00000000在異常發(fā)生后,ARM7TDMI內(nèi)核會(huì)作以下工作:1.在適當(dāng)?shù)腖R中保存下一條指令的地址2.將CPSR復(fù)制到適當(dāng)?shù)腟PSR中;3. 將CPSR模式位強(qiáng)制設(shè)置為與異常類型相對(duì)應(yīng)的值;4.強(qiáng)制PC從相關(guān)的異常向量處取指。ARM7TDMI內(nèi)核在中斷異常時(shí)置位中斷禁止標(biāo)志,這樣可以防止不受控制的異常嵌套。注:異??偸窃贏RM狀態(tài)中進(jìn)行處理。當(dāng)處理器處于Thumb狀態(tài)時(shí)發(fā)生了異常,在異常向量地址裝入PC時(shí),會(huì)自動(dòng)切換到ARM狀態(tài)。當(dāng)異常結(jié)束時(shí),異常處理程序必須:1.將LR中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同;2.將SPSR的值復(fù)制回CPSR;3.清零在入口置位的中斷禁止標(biāo)志。注:恢復(fù)CPSR的動(dòng)作會(huì)將T、F和I位自動(dòng)恢復(fù)為異常發(fā)生前的值。6. ARM處理器字?jǐn)?shù)據(jù)的存儲(chǔ)格式有哪兩種?并指出這兩種格式的區(qū)別。答:ARM7TDMI處理器可以將存儲(chǔ)器中的字以下列格式存儲(chǔ) 大端格式(Big-endian) 小端格式(Little-endian) 小端存儲(chǔ)器系統(tǒng): 在小端格式中,高位數(shù)字存放在高位字節(jié)中。因此存儲(chǔ)器系統(tǒng)字節(jié)0連接到數(shù)據(jù)線70。 大端存儲(chǔ)器系統(tǒng): 在大端格式中,高位數(shù)字存放在低位字節(jié)中。因此存儲(chǔ)器系統(tǒng)字節(jié)0連接到數(shù)據(jù)線3124。 7. 分析帶有存儲(chǔ)器訪問(wèn)指令(LDR)的流水線運(yùn)行情況,并用圖示說(shuō)明流水線的運(yùn)行機(jī)制。答:存儲(chǔ)器訪問(wèn)指令LDR 流水線舉例取指的存儲(chǔ)器訪問(wèn)和執(zhí)行的數(shù)據(jù)路徑占用都是不可同時(shí)共享的資源,對(duì)于多周期指令來(lái)說(shuō),如果指令復(fù)雜以至于不能在單個(gè)時(shí)鐘周期內(nèi)完成執(zhí)行階段,就會(huì)產(chǎn)生流水線阻塞。 對(duì)存儲(chǔ)器的訪問(wèn)指令LDR是非單周期指令LDR指令的執(zhí)行,訪問(wèn)存儲(chǔ)器,回寫寄存器(占用了3個(gè)周期)。造成了MOV指令的執(zhí)行被阻斷。8. 簡(jiǎn)述ARM9的5級(jí)流水線每一級(jí)所完成的功能和實(shí)現(xiàn)的操作。答:ARM920在指令操作上采用5級(jí)流水線 .取指:從指令Cache中讀取指令。譯碼:對(duì)指令進(jìn)行譯碼,識(shí)別出是對(duì)哪個(gè)寄存器進(jìn)行操作并從通用寄存器中讀取操作數(shù)。執(zhí)行:進(jìn)行ALU運(yùn)算和移位操作,如果是對(duì)存儲(chǔ)器操作的指令,則在ALU中計(jì)算出要訪問(wèn)的存儲(chǔ)器地址。存儲(chǔ)器訪問(wèn):如果是對(duì)存儲(chǔ)器訪問(wèn)的指令,用來(lái)實(shí)現(xiàn)數(shù)據(jù)緩沖功能(通過(guò)數(shù)據(jù)Cache)。寄存器回寫:將指令運(yùn)算或操作結(jié)果寫回到目標(biāo)寄存器中。9. 什么叫流水線互鎖?應(yīng)如何來(lái)解決,舉例說(shuō)明。答:互鎖:當(dāng)前指令的執(zhí)行需要前面指令的執(zhí)行結(jié)果,但前面的指令沒有執(zhí)行完畢,引起流水線的等待?;ユi發(fā)生時(shí),硬件會(huì)停止指令的執(zhí)行,直到數(shù)據(jù)準(zhǔn)備好。上邊程序中ORR指令執(zhí)行時(shí)需要使用LDR指令加載后的R4寄存器,因此造成了ORR指令的等待。編譯器以及匯編程序員可以通過(guò)重新設(shè)計(jì)代碼的順序或者其他辦法來(lái)減少互鎖的數(shù)量。第3章 ARM指令集尋址方式1.在指令編碼中,條件碼占幾位,最多有多少個(gè)條件,各個(gè)條件是如何形成的?答:條件碼占4位,最多有15個(gè)條件操作碼條件助記符標(biāo)志含義0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1無(wú)符號(hào)數(shù)大于或等于0011CC/LOC=0無(wú)符號(hào)數(shù)小于0100MIN=1負(fù)數(shù)0101PLN=0正數(shù)或零0110VSV=1溢出0111VCV=0沒有溢出1000HIC=1,Z=0無(wú)符號(hào)數(shù)大于1001LSC=0,Z=1無(wú)符號(hào)數(shù)小于或等于1010GEN=V有符號(hào)數(shù)大于或等于 1011LTN!=V有符號(hào)數(shù)小于 1100GTZ=0,N=V有符號(hào)數(shù)大于 1101LEZ=1,N!=V有符號(hào)數(shù)小于或等于 1110AL任何無(wú)條件執(zhí)行 (指令默認(rèn)條件) 1111NV任何從不執(zhí)行(不要使用) 2. 指令條件碼中,V標(biāo)志位在什么情況下才能等于1?答:V溢出標(biāo)志位對(duì)于加減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為二進(jìn)制補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),V=1表示符號(hào)位溢出,其他指令通常不影響V位。3. 在ARM指令中,什么是合法的立即數(shù)?判斷下面各立即數(shù)是否合法,如果合法則寫出在指令中的編碼格式(也就是8位常數(shù)和4位移位數(shù))0x54300x1080x3040x5010xfb100000x3340000x3FC0000x1FE00000x55800000x7F8000x39C0000x1FE80000答:立即數(shù)必須由1個(gè)8位的常數(shù)通過(guò)進(jìn)行32位循環(huán)右移偶數(shù)位得到,其中循環(huán)右移的位數(shù)由一個(gè)4位二進(jìn)制的兩倍表示。即一個(gè)8位的常數(shù)通過(guò)循環(huán)右移2*rotate_4位(即0,2,4,。30)得到0X54300000,0000,0000,0000,0101,0100,0011,0000 非法立即數(shù)0X1080000,0000,0000,0000,0000,0001,0000,1000 0x42循環(huán)右移30位 (rotate_4=0xF)0X3040000,0000,0000,0000,0000,0011,0000,0100 0xC1循環(huán)右移30位 (rotate_4=0xF)0x5010000,0000,0000,0000,0000,0101,0000,0001 非法立即數(shù)0xfb100000000,1111,1011,0001,0000,0000,0000,0000 非法立即數(shù)0x3340000000,0000,0011,0011,0100,0000,0000,0000 0Xcd 循環(huán)右移18位(rotate_4=0x9)0x3FC0000000,0000,0011,1111,1100,0000,0000,0000 0XFF 循環(huán)右移18位(rotate_4=0x9)0x1FE00000000,0001,1111,1110,0000,0000,0000,0000 非法立即數(shù)0x55800000000,0101,0101,1000,0000,0000,0000,0000 非法立即數(shù)0x7F8000000,0000,0000,0111,1111,1000,0000,0000 非法立即數(shù)0x39C0000000,0000,0011,1001,1100,0000,0000,0000 0XE7循環(huán)右移18位(rotate_4=0x9)0x1FE800000001,1111,1110,1000,0000,0000,0000,0000 非法立即數(shù)4.分析邏輯右移,算術(shù)右移,循環(huán)右移,帶擴(kuò)展的循環(huán)右移它們間的差別。答:LSL邏輯左移 : LSR邏輯右移 : ASR算術(shù)右移 :ROR循環(huán)右移 : RRX帶擴(kuò)展的循環(huán)右移: 5.ARM數(shù)據(jù)處理指令具體的尋址方式有哪些,如果程序計(jì)數(shù)器PC作為目標(biāo)寄存器,會(huì)產(chǎn)生什么結(jié)果?答:數(shù)據(jù)處理指令尋址方式具體可分為5種類型:1)第二操作數(shù)為立即數(shù)2)第二操作數(shù)為寄存器3)第二操作數(shù)為寄存器移位方式且移位的位數(shù)為一個(gè)5位立即數(shù)4)第二操作數(shù)為寄存器移位方式且移位數(shù)值放在寄存器中5)第二操作數(shù)位寄存器進(jìn)行RRX移位得到。如果PC (R15)用作目標(biāo)寄存器,指令會(huì)產(chǎn)生不可預(yù)知的結(jié)果。6.在Load/Store指令尋址中,字,無(wú)符號(hào)字節(jié)的Load/Store指令尋址和半字,有符號(hào)字節(jié)尋址,試分析它們之間的差別。答:在Load/Store指令尋址中,字,無(wú)符號(hào)字節(jié)的Load/Store指令尋址中共有以下3種內(nèi)存地址構(gòu)成格式:1)Addressing_mode 中的偏移量為立即數(shù) 2)Addressing_mode 中的偏移量為寄存器的值3)Addressing_mode 中的偏移量通過(guò)寄存器移位得到半字,有符號(hào)字節(jié)的Load/Store指令尋址中共有以下2種內(nèi)存地址構(gòu)成格式:1)Addressing_mode 中的偏移量為立即數(shù) 2)Addressing_mode 中的偏移量為寄存器的值7.塊拷貝Load/Store指令在實(shí)現(xiàn)寄存器組合連續(xù)的內(nèi)存單元中數(shù)據(jù)傳遞時(shí),地址的變化方式有哪幾種類型,并分析它們的地址變化情況。答:批量Load/Store指令在實(shí)現(xiàn)寄存器組合連續(xù)的內(nèi)存單元中數(shù)據(jù)傳遞時(shí),地址的變化方式有以下4種類型:n 后增IA (Increment After) :每次數(shù)據(jù)傳送后地址加4; n 先增IB (Increment Before) :每次數(shù)據(jù)傳送前地址加4 ; n 后減DA (Decrement After) :每次數(shù)據(jù)傳送后地址減4 ; n 先減DB (Decrement Before) :每次數(shù)據(jù)傳送前地址減4 ; 8.棧操作指令地址的變化方式有哪幾種類型,并分析它們的地址變化情況,從而得出棧操作指令尋址和塊拷貝Load/Store指令之間的對(duì)應(yīng)關(guān)系。答:根據(jù)堆棧指針的指向位置不同和堆棧的生長(zhǎng)方向不同,共有4種類型的堆棧工作方式:滿遞增堆棧FA:堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成。滿遞減堆棧FD:堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成??者f增堆棧EA:堆棧指針指向下一個(gè)要放入數(shù)據(jù)的空位置,且由低地址向高地址生成。空遞減堆棧ED:堆棧指針指向下一個(gè)要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。9.分析協(xié)處理器加載/存儲(chǔ)指令的尋址方式種的內(nèi)存地址索引格式中不同的匯編語(yǔ)法格式下內(nèi)存地址的計(jì)算方法。答:協(xié)處理器加載/存儲(chǔ)指令的尋址方式種的內(nèi)存地址索引格式中,索引格式類似于LDR/STR指令尋址中的立即數(shù)作為地址偏移量的形式。Addressing_mode中的偏移量為8位立即數(shù)的匯編語(yǔ)法格式有以下3種: 前變址不回寫形式:,#+/-*4 第一個(gè)內(nèi)存地址編號(hào)為基地址寄存器Rn值加上/減去imm_offset8的4倍,后續(xù)的每一個(gè)地址是前一個(gè)內(nèi)存地址加4,直到協(xié)處理器發(fā)出信號(hào),結(jié)束本次數(shù)據(jù)傳輸為止。 前變址回寫形式: ,#+/-*4!第一個(gè)內(nèi)存地址編號(hào)為基地址寄存器Rn值加上/減去imm_offset8的4倍,后續(xù)的每一個(gè)地址是前一個(gè)內(nèi)存地址加4,直到協(xié)處理器發(fā)出信號(hào),結(jié)束本次數(shù)據(jù)傳輸為止。當(dāng)指令執(zhí)行時(shí),生成的地址值將寫入基址寄存器。 后變址回寫形式: ,#+/-*4內(nèi)存地址為基址寄存器Rn的值,當(dāng)存儲(chǔ)器操作完成后,將基地址寄存器Rn值加上/減去imm_offset8的4倍,后續(xù)的每一個(gè)地址是前一個(gè)內(nèi)存地址加4,直到協(xié)處理器發(fā)出信號(hào),結(jié)束本次數(shù)據(jù)傳輸為止。最后將Rn值加上/減去imm_offset8的4倍寫回到基址寄存器Rn(更新基地址寄存器)。10. 寫出下列指令的機(jī)器碼,并分析指令操作功能。MOV R0,R1MOVR1,,0X198ADDEQS R1,R2,,0xABCMPR2,#0XabLDRR0,R1,#4STRR0,R1,R1,LSL #2!LDRHR0,R1,#4LDRSBR0,R2,#-2!STRBR1,R2,#0Xa0LDMIAR0,R1,R2,R8STMDBR0!,R1-R5,R10,R11STMEDSP!R0-R3,LR答:機(jī)器碼部分略。MOV R0,R1 ;R0-R1MOVR1,,0X198 ;R0-0X198ADDEQS R1,R2,,0xAB ;當(dāng)Z=1時(shí),R1-R2+0xAB 并影響標(biāo)志位CMPR2,#0Xab ;R2-0xAB,并影響標(biāo)志位LDRR0,R1,#4 ;R0-【R1+4】STRR0,R1,R1,LSL #2! ;【R1+R1*4】-R0,R1=R1+R1*4LDRHR0,R1,#4 ;R0-【R1+4】半字,R0的高16位清零LDRSBR0,R2,#-2! ;R0-【R2-2】字節(jié),R0有符號(hào)擴(kuò)展為32位,R2=R2-2STRBR1,R2,#0Xa0 ;【R2+0Xa0】-R1低8位,LDMIAR0,R1,R2,R8 ;將內(nèi)存單元【R0】【R+11】以字為單位讀取到R1,R2,R8中STMDBR0!,R1-R5,R10,R11將寄存器R1R5,R10,R11的值以字為單位依次寫入【R0】中,每寫一個(gè)字之前R0=R0-4STMEDSP!R0-R3,LR將寄存器R0R3,LR的的值以字為單位依次寫入【SP】中,每寫一個(gè)字之后SP=SP-4第4章 ARM指令集系統(tǒng)1.ARM指令可分為哪幾類?說(shuō)出哪幾條指令是無(wú)條件執(zhí)行的。答:ARM微處理器的指令集可以分為:數(shù)據(jù)處理指令,分支指令,加載/存儲(chǔ)指令,批量加載/存儲(chǔ)指令,交換指令,程序狀態(tài)寄存器(PSR)處理指令,協(xié)處理器操作指令和異常產(chǎn)生指令八大類。幾乎所有的ARM指令都是可以有條件執(zhí)行的。帶鏈接和狀態(tài)切換的跳轉(zhuǎn)指令BLX,當(dāng)目標(biāo)地址由程序標(biāo)號(hào)給出時(shí),即:BLX 由于指令碼中是沒有條件編碼位的,所以指令是無(wú)條件執(zhí)行的。2.如何實(shí)現(xiàn)兩個(gè)64位數(shù)的加法操作,如何實(shí)現(xiàn)兩個(gè)64位數(shù)的減法操作,如何求一個(gè)64位數(shù)的負(fù)數(shù)?答:1)使用ADC實(shí)現(xiàn)64位加法,結(jié)果存于R1、R0中: ADDS R0,R0,R2 ;R0等于低32位相加,并影響標(biāo)志位 ADC R1,R1,R3;R1等于高32位相加,并加上低位進(jìn)位2)使用SBC實(shí)現(xiàn)64位減法,結(jié)果存于R1、R0中: SUBS R0,R0,R2 ; 低32位相減,并影響標(biāo)志位 SBC R1,R1,R3;高32位相減,并減去低位借位3)使用RSC指令實(shí)現(xiàn)求64位數(shù)值的負(fù)數(shù) : RSBS R2,R0,#0 RSC R3,R1,#03.寫出LDRB指令與LDRSB指令的二進(jìn)制編碼格式,并指出它們之間的區(qū)別。答:LDRB指令的二進(jìn)制編碼格式:LDRSB指令的二進(jìn)制編碼格式:LDRB指令用于將內(nèi)存中的一個(gè)8位字節(jié)數(shù)據(jù)讀取到指令中的目標(biāo)寄存器的低8位中,寄存器的高24位用零擴(kuò)展。LDRSB指令用于將內(nèi)存中的一個(gè)8位字節(jié)數(shù)據(jù)讀取到指令中的目標(biāo)寄存器的低8位中,寄存器的高24位用符號(hào)位擴(kuò)展。4.分析下列每條語(yǔ)句的功能,并確定程序段所實(shí)現(xiàn)的操作。CMP R0,,0MOVEQR1,,0MOVGTR1,,1答:CMP R0,,0 ;比較R0與0的大小MOVEQR1,,0 ;若R0=0,則R1=0MOVGTR1,,1 ;若R00,則R1=15.請(qǐng)使用多種方法實(shí)現(xiàn)將字?jǐn)?shù)據(jù)0xFFFFFFFF送入寄存器R0答:1)MVN R0,#02)MOV R0,#1 RSB R0,R0,#06.寫一條ARM指令,分別完成下列操作:(1)R0=16(2)R0=R1/16(3)R1=R2*3(4)R0=-R0答:(1)R0=16 MOV R0,#16(2)R0=R1/16MOV R0,R1,LSR #4(3)R1=R2*3MOV R3,#3 MUL R1,R2,R3(4)R0=-R0 RSB R0,R0,#07.編寫一個(gè)ARM匯編程序,累加一個(gè)隊(duì)列中的所有元素,碰到0時(shí)停止。結(jié)果放入R4。答:假設(shè)隊(duì)列為地址從R0開始遞增的字隊(duì)列:LOOPLDR R1, R0,#4!MOVS R2, R1BEQ ENDADD R4,R4,R2B LOOPEND8.寫出實(shí)現(xiàn)下列操作的ARM指令:當(dāng)Z=1時(shí),將存儲(chǔ)器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0.當(dāng)Z=1時(shí),將存儲(chǔ)器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0將存儲(chǔ)器地址為R1-4的字?jǐn)?shù)據(jù)讀入寄存器R0。將存儲(chǔ)器地址為R1+R6的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R6寫入R1。答:1)LDREQ R0, R12)LDREQ R0, R1,R23)LDR R0, R1,#-44)LDRR0, R1,R6!9.寫出下列ARM指令所實(shí)現(xiàn)的操作:LDRR2,R3,#-4!LDRR0,R0,R2LDRR1,R3,R2,LSL #2!LDRSBR0,R2,#-2!STRBR1,R2,,0xA0LDMIAR0,R1,R2,R8STMDBR0!,R1-R5,R10,R11答:LDRR2,R3,#-4! ;R2-R3-4, R3=R3-4LDRR0,R0,R2 ;R0-R0, R0=R0+R2LDRR1,R3,R2,LSL #2! ;R1-R3+R2*4, R3=R3+R2*4LDRSBR0,R2,#-2! ;R0低8位【R2+0xA0】LDMIAR0,R1,R2,R8從地址R0開始的內(nèi)存中依次讀取字?jǐn)?shù)據(jù),送入寄存器R1,R2,R8STMDBR0!,R1-R5,R10,R11將寄存器R11,R10,R5-R1的字?jǐn)?shù)據(jù),依次寫入地址R0中,每次寫入前R0=R0-410.SWP指令的優(yōu)勢(shì)是什么?答:SWP指令支持原子操作,它能在一條指令中完成存儲(chǔ)器和寄存器之間的數(shù)據(jù)交換。11. 如何用帶PSR操作的批量字?jǐn)?shù)據(jù)加載指令實(shí)現(xiàn)IRQ中斷的返回?答:在進(jìn)入IRQ中斷處理程序時(shí),首先計(jì)算返回地址,并保存相關(guān)的寄存器 SUBR14,R14,#4 ; STMFD R13!, R0-R3, R12, LR 如果IRQ中斷處理程序返回到被中斷的進(jìn)程則執(zhí)行下面的指令。該指令從數(shù)據(jù)棧中恢復(fù)寄存器R0R3及R12的值,將返回地址傳送到PC中,并將SPSR_irq值復(fù)制到CPSR中 LDMFD R13!, R0-R3, R12, PC 12. 用ARM匯編語(yǔ)言編寫代碼,實(shí)現(xiàn)將ARM處理器切換到用戶模式,并關(guān)閉中斷。答:;禁能IRQ中斷 MRS R0 CPSR ORR R0, R0,#0x80MSR CPSR, R0;切換到用戶模式 MRS R0 CPSR BIC R0, #0x0FMSR CPSR, R0第5章 Thumb指令1.與32位的ARM指令集相比較,16位的Thumb指令集具有哪些優(yōu)勢(shì)?答:在ARM體系結(jié)構(gòu)中,ARM指令集是32位的,具有很高的執(zhí)行效率。但是對(duì)于嵌入式 而言,其存儲(chǔ)空間極其有限,由于每條ARM指令都要占用4個(gè)字節(jié),對(duì)存儲(chǔ)空間的要求較高。為了壓縮代碼的存儲(chǔ),增加代碼存儲(chǔ)密度,ARM公司設(shè)計(jì)了16位的Thumb指令。Thumb代碼所需的存儲(chǔ)空間約為ARM代碼的60%70%。2.Thumb指令可分為哪幾類?Thumb指令有條件執(zhí)行指令嗎,如果有請(qǐng)說(shuō)明哪些指令是條件執(zhí)行的。答:Thumb指令可分為數(shù)據(jù)處理指令,存儲(chǔ)器操作指令,分支指令,軟中斷指令。Thumb指令集只有一條分支指令是有條件的,其余所有指令都是無(wú)條件的;Bcond label3.分析下面的Thumb指令程序代碼,指出程序所完成的功能。.global _start.text.equ num 20_start:MOVSP,#0x400ADRR0,Thumb_start+1BXR0.thumbThumb_start:ASRR2,R0,#31EORR0,R2SUBR3,R0,R2stop:Bstop.end答:上述代碼首先將處理器狀態(tài)切換到Thumb狀態(tài),ASRR2,R0,#31 ; 用R0的符號(hào)位填充R2EORR0,R2 ;如果R0為正數(shù),則R0不變;如果R0為負(fù)數(shù),則R0取反SUBR3,R0,R2 ;R0-R2-R3 (R2為全零或全1)4.在Thumb狀態(tài)中,用多種方法實(shí)現(xiàn)將寄存器R0中的數(shù)據(jù)乘以10答:1)MOV R1,#10 MUL R0,R12) LSL R1,R0,#3LSL R2,R0,#1ADD R0,R1,R25.帶鏈接的分支指令BL提供了一種在Thumb狀態(tài)下程序間相互調(diào)用的方法,當(dāng)從子程序返回時(shí),可以采用哪種返回方式?答:通常使用下面的方式之一:MOV PC, LRBX LRPOP PC ;需要在子程序中使用PUSH LR6.指出下列的Thumb程序代碼所完成的功能:ASRR0,R1,#31 EORR1,R0SUBR1,R0答:ASRR0,R1,#31 ;用R1的符號(hào)位填充R0EORR1,R0 ;如果R1為正數(shù),則R1不變;如果R1為負(fù)數(shù),則R1取反SUBR1,R0 ;R1-R0-R1 (R0為全零或全1)第6章 ARM匯編偽指令與偽操作1.在ARM匯編語(yǔ)言程序設(shè)計(jì)中,偽操作與偽指令的區(qū)別是什么?答:偽指令是ARM處理器支持的匯編語(yǔ)言程序里的特殊助記符,它不再處理器運(yùn)行期間由機(jī)器執(zhí)行,只是在匯編時(shí)被合適的機(jī)器指令代替成ARM或Thumb指令,從而實(shí)現(xiàn)真正的指令操作。偽操作是ARM匯編語(yǔ)言程序里的一些特殊的指令助記符,其作用主要是為了完成匯編程序做各種準(zhǔn)備工作,對(duì)源程序運(yùn)行匯編程序處理,而不是在計(jì)算機(jī)運(yùn)行期間由處理器執(zhí)行。也就是說(shuō),這些偽操作只是在匯編過(guò)程中起作用,一旦匯編結(jié)束,偽操作也就隨之消失。2.分析ARM匯編語(yǔ)言偽指令LDR,ADRL,ADR的匯編結(jié)果,說(shuō)明它們之間的區(qū)別。答: LDR偽指令將一個(gè)32位的常數(shù)或者一個(gè)地址值讀取到寄存器中,可以看作是加載寄存器的內(nèi)容。如果加載的常數(shù)符合MOV或MVN指令立即數(shù)的要求,則用MOV或MVN指令替代LDR偽指令。如果加載的常數(shù)不符合MOV或MVN指令立即數(shù)的要求,匯編器將常量放入內(nèi)存文字池,并使用一條程序相對(duì)偏移的LDR指令從內(nèi)存文字池讀出常量。 ADRL偽指令將基于PC相對(duì)偏移的地址值或基于寄存器相對(duì)偏移的地址值讀取到寄存器中,比ADR偽指令可以讀取更大范圍的地址 。在匯編編譯器編譯源程序時(shí),ADRL偽指令被編譯器替換成兩條合適的指令。若不能用兩條指令實(shí)現(xiàn),則產(chǎn)生錯(cuò)誤,編譯失敗。ADR偽指令將基于PC相對(duì)偏移的地址值或基于寄存器相對(duì)偏移的地址值讀取到寄存器中。在匯編編譯器編譯源程序時(shí),ADR偽指令被編譯器替換成一條合適的指令。通常,編譯器用一條ADD指令或SUB指令來(lái)實(shí)現(xiàn)該ADR偽指令的功能,若不能用一條指令實(shí)現(xiàn),則產(chǎn)生錯(cuò)誤,編譯失敗。3.在ADS編譯環(huán)境下,寫出下列操作的偽操作:(1)聲明一個(gè)局部的算術(shù)變量La_var 并將其初始化 0;(2)聲明一個(gè)局部的邏輯變量Ll_var 并將其初始化 FALSE;(3)聲明一個(gè)局部的字符串變量Ls_var 并將其初始化 空串;(4)聲明一個(gè)全局的邏輯變量Gl_var 并將其初始化 FALSE;(5)聲明一個(gè)全局的字符串變量Gs_var 并將其初始化 空串;(6)聲明一個(gè)全局的算術(shù)變量Ga_var 并將其初始化 0xAA;(7)聲明一個(gè)全局的邏輯變量Gl_var 并將其初始化 TRUE;(8)聲明一個(gè)全局的字符串變量Gs_var 并將其初始化 “CHINA”;答:(1)聲明一個(gè)局部的算術(shù)變量La_var 并將其初始化 0;LCLA La_var(2)聲明一個(gè)局部的邏輯變量Ll_var 并將其初始化 FALSE; LCLL Ll_var(3)聲明一個(gè)局部的字符串變量Ls_var 并將其初始化 空串; LCLS Ls_var(4)聲明一個(gè)全局的邏輯變量Gl_var 并將其初始化 FALSE; GCLL Gl_var(5)聲明一個(gè)全局的字符串變量Gs_var 并將其初始化 空串; GCLS Gs_var(6)聲明一個(gè)全局的算術(shù)變量Ga_var 并將其初始化 0xAA; GCLA Ga_var Ga_ var SETA 0xAA(7)聲明一個(gè)全局的邏輯變量Gl_var 并將其初始化 TRUE; GCLL Gl_var Gl_ var SETL TRUE(8)聲明一個(gè)全局的字符串變量Gs_var 并將其初始化 “CHINA”; GCLS Gs_var Gs_ var SETS CHINA4.用ARM開發(fā)工具偽操作將寄存器列表R0-R5,R7,R8的名稱定義為Reglist。答:Reglist RLST R0-R5,R7,R85.完成下列數(shù)據(jù)定義偽操作:(1)申請(qǐng)以data_buffer1為起始地址的連續(xù)的內(nèi)存單元,并依次用半字?jǐn)?shù)據(jù)0x11,0x22,0x33,0x44,0x55進(jìn)行初始化;(2)申請(qǐng)以Str_buffer為起始地址的連續(xù)的內(nèi)存單元,并用字符串“ARM7 and ARM9”進(jìn)行初始化;答:(1) data_buffer1 DCW 0x11,0x22,0x33,0x44,0x55 (2) Str_buffer DCB “ARM7 and ARM9”6.定義一個(gè)結(jié)構(gòu)化的內(nèi)存表,其首地址固定為0x900,該結(jié)構(gòu)化內(nèi)存表包含2個(gè)域,F(xiàn)datal長(zhǎng)度為8個(gè)字節(jié),F(xiàn)data2長(zhǎng)度為160個(gè)字節(jié)。答:MAP 0x900 Fdata1 FIELD 8 Fdata2 FIELD 1607.在GNU-ARM編譯環(huán)境下,寫出實(shí)現(xiàn)下列操作的偽操作:(1)分配一段字節(jié)內(nèi)存單元,并用57,0x11,031,Z,0x76進(jìn)行初始化;(2)分配一段半字內(nèi)存單元,并用0xFFE0,0xAABB,0x12進(jìn)行初始化;(3)分配一段字內(nèi)存單元, 并用0x12345678,0xAABBCCDD進(jìn)行初始化;(4)分配一段內(nèi)存單元,并用長(zhǎng)為8字節(jié)的數(shù)值0x11填充100次;答:(1)分配一段字節(jié)內(nèi)存單元,并用57,0x11,031,Z,0x76進(jìn)行初始化; .byte 57,0x11,031,Z,0x76(2)分配一段半字內(nèi)存單元,并用0xFFE0,0xAABB,0x12進(jìn)行初始化; .hword 0xFFE0,0xAABB,0x12(3)分配一段字內(nèi)存單元, 并用0x12345678,0xAABBCCDD進(jìn)行初始化; .word 0x12345678,0xAABBCCDD(4)分配一段內(nèi)存單元,并用長(zhǎng)為8字節(jié)的數(shù)值0x11填充100次; .fill 100 , 8, 0x118.寫出與GNU-ARM編譯環(huán)境下偽操作.arm , .thumb 功能相同的ARM標(biāo)準(zhǔn)開發(fā)工具編譯環(huán)境下的偽操作。答:.arm 對(duì)應(yīng) ARM 或 CODE32 .thumb 對(duì)應(yīng) THUMB 或 CODE16第7章 匯編語(yǔ)言程序設(shè)計(jì)1.分別寫出ARM集成開發(fā)環(huán)境下ARM匯編語(yǔ)句格式與GNU ARM環(huán)境下ARM匯編語(yǔ)句通用格式,并分析它們的區(qū)別。答:ADS環(huán)境下ARM匯編語(yǔ)句格式如下: symbol instruction ;comment symbol directive ;comment symbol pseudo-instruction ;comment Symbol :標(biāo)號(hào)(地址) Instruction :指令(ARM/Thumb) Directive :偽操作 pseudo-instruction:偽指令GNU環(huán)境下ARM匯編語(yǔ)言語(yǔ)句格式如下: label : instructioncomment label :directivecomment label : pseudo-instructioncomment2.局部標(biāo)號(hào)提供分支指令在匯編程序的局部范圍內(nèi)跳轉(zhuǎn),它的主要用途是什么,并舉一實(shí)例加以說(shuō)明。答:局部標(biāo)號(hào) 局部標(biāo)號(hào)的語(yǔ)法格式如下: n routname (099) 被引用的局部標(biāo)號(hào)語(yǔ)法規(guī)則是: % FB AT n routname 其中: n是局部標(biāo)號(hào)的數(shù)字號(hào)。(099) routname是當(dāng)前局部范圍的名稱。 %表示引用操作。 F指示匯編器只向前搜索。 B指示匯編器只向后搜索。 A指示匯編器搜索宏的所有嵌套層次。 T指示匯編器搜索宏的當(dāng)前層次。 局部標(biāo)號(hào)提供分支指令在匯編程序在局部范圍內(nèi)的跳轉(zhuǎn)3.先對(duì)內(nèi)存地址0xB000開始的100個(gè)字內(nèi)存單元填入0x100000010x10000064字?jǐn)?shù)據(jù),然后將每個(gè)字單元進(jìn)行64位累加,結(jié)果保存于【R9:R8】(R9中存放高32位)。答:解:先對(duì)內(nèi)存地址0xB000開始的100個(gè)字內(nèi)存單元填入0x100000010x10000064字?jǐn)?shù)據(jù),然后將每個(gè)字單元進(jìn)行64位累加,結(jié)果保存于【R9:R8】(R9中存放高32位)。在ARM集成開發(fā)環(huán)境下編程:/*-*寄存器使用說(shuō)明*R0:存放地址值*R2:遞減計(jì)數(shù)器*R9:64位遞加結(jié)果的高32位*R8:64位遞加結(jié)果的低32位*-*/AREAFctrl,CODE,READONLY ;聲明代碼段FctrlENTRY;標(biāo)識(shí)程序入口CODE32;聲明32位ARM指令STARTMOVR0,#0xB000;初始化寄存器MOVR1,#0x10000001MOVR2,#100loop_1;第一次循環(huán)賦值STRR1,R0,#4ADDR1,R1,#1SUBSR2,R2,#1BNEloop_1MOVR0,#0xB000MOVR2,#100MOVR9,#0MOVR8,#0loop_2;第二次循環(huán)累加LDRR1,R0,#4ADDSR8,R1,R8;R8=R8+R1,進(jìn)位影響標(biāo)志位ADDCR9,R9,#0;R9=R9+C,C為進(jìn)位位SUBSR2,R2,#1BNEloop_2StopBStop;文件結(jié)束END4.在GNU環(huán)境下用ARM匯編語(yǔ)言編寫程序,初始化ARM處理器各模式下的堆棧指針SP_mode (R13),各模式的堆棧指針地址如下:.equ _ISR_STARTADDRESS, 0xCFFF000 設(shè)置棧的內(nèi)存基地址.equ
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公家具訂購(gòu)合同范本
- pc構(gòu)件模具合同范本
- 中學(xué)軍訓(xùn)合同范本
- 共同抵押合同范本
- 中介和工廠合同范本
- 華泰期貨合同范本
- 公司簽訂賠償合同范例
- 修假山承攬合同范本
- 中國(guó)石化合同范本
- 亞馬遜產(chǎn)品合同范本
- 北師大版語(yǔ)文選修《蕭蕭》ppt課件1
- 大學(xué)生職業(yè)素養(yǎng)課件-5第五單元學(xué)會(huì)有效溝通-PPT課件
- 《談骨氣》課文閱讀(共2頁(yè))
- 病原生物與免疫學(xué)(中職)緒論P(yáng)PT課件
- 高考成績(jī)證明模板
- 新起點(diǎn)小學(xué)英語(yǔ)一年級(jí)上冊(cè)單詞卡片(共23頁(yè))
- 蝴蝶蘭PPT課件
- 譯林版五下英語(yǔ)1-3單元電子稿
- 賓館做房記錄表
- 工業(yè)管道檢查報(bào)告
- 節(jié)后復(fù)工安全溫馨提示
評(píng)論
0/150
提交評(píng)論