版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1
第三章AVR匯編指令2計算機的指令系統(tǒng)是一套控制計算機操作的代碼(二進(jìn)制),稱之為機器語言。計算機只能識別和執(zhí)行機器語言的指令。難記!易出錯!為了便于人們理解、記憶及使用,通常用匯編語言指令來描述計算機的指令系統(tǒng)。匯編語言指令可通過匯編器(軟件,如AVRStudio,51系列的ASM51等)翻譯成計算機能識別的機器語言。相對較易記,不易出錯3CISC結(jié)構(gòu)存在指令系統(tǒng)不等長,指令數(shù)多,CPU利用效率低,執(zhí)行速度慢等缺陷
AVR單片機指令系統(tǒng)是先進(jìn)的RISC體系結(jié)構(gòu),采用了大型快速存取寄存器組(32個通用工作寄存器)、快速的單周期指令系統(tǒng)以及單級流水線等先進(jìn)技術(shù)
16/32位定長指令流水線操作大型快速存取寄存器組
4(1)89條指令器件:AT90S1200,最基本指令;(2)90條指令器件:Attiny11/12/15/22;90條指令=□+89條基本指令(3)118條指令器件:AT90S2313/2323/2343/2333,/4414/4433/4434/8515/90S8534/8535;118條指令=
+90條;(4)121條指令器件:ATmega603/103;121條指令=△+118條;(5)130條指令器件ATmega8535/161等;130條指令=☆+121條567ATmega16共有131條指令,按功能可分為5大類:算術(shù)和邏輯運算指令(28條);比較和跳轉(zhuǎn)指令(36條);數(shù)據(jù)傳送指令(35條);位操作和位測試指令(28條);MCU控制指令(4條)。83.1指令格式3.1.1指令格式AVR的指令的一般格式為:
目的地址
指令的三種表示方式指令的二進(jìn)制表示形式
指令的十六進(jìn)制形式
指令的助記符形式又稱為指令的匯編形式或匯編語句
操作碼第1操作數(shù)或操作數(shù)地址第2操作數(shù)或操作數(shù)地址93.1.2指令集名詞1、狀態(tài)寄存器SREG:狀態(tài)寄存器C:進(jìn)位標(biāo)志位Z:結(jié)果為零標(biāo)志位N:結(jié)果為負(fù)數(shù)標(biāo)志位(結(jié)果的最高位為1)V:2的補碼溢出指示位S:N⊕V,符號測試位H:半進(jìn)位標(biāo)志位T:用于BLD和BST指令傳送位I:全局中斷使能/禁止標(biāo)志位10SREG112、寄存器和操作數(shù)
Rd:目的(或源)寄存器,R0~R31或R16~R31
Rr:源寄存器,R0~R31
R:指令執(zhí)行后的結(jié)果
K:常數(shù)項或字節(jié)數(shù)據(jù)(8位)0~255或-128~+127
k:程序計數(shù)器的常量地址數(shù)據(jù)
b:在寄存器區(qū)中或I/O寄存器中的位(3位)0~7
s:在狀態(tài)寄存器中的位(3位)0~7
X,Y,Z:地址指針寄存器(X=R27:R26,Y=R29:R28,Z=R31:R30)
P(或A):I/O口地址0~63或0~31
q:地址偏移量常數(shù)(6位)0~6312133、堆棧STACK:作為返回地址和壓棧寄存器的堆棧SP:堆棧STACK的指針
143.1.3尋址方式指令的一個重要組成部分是操作數(shù),指令給出參與運算的數(shù)據(jù)的方式稱為尋址方式。AVR單片機指令操作數(shù)的尋址方式有以下幾種:單寄存器直接尋址、雙寄存器直接尋址、I/O寄存器直接尋址、數(shù)據(jù)存儲器直接尋址、帶位移的數(shù)據(jù)存儲器間接尋址、數(shù)據(jù)存儲器間接尋址、帶預(yù)減量的數(shù)據(jù)存儲器間接尋址、帶后增量的數(shù)據(jù)存儲器間接尋址、從程序存儲器取常數(shù)尋址、程序直接尋址、程序間接尋址、程序相對尋址151、單寄存器直接尋址INCRd;Rd←Rd+1162、雙寄存器直接尋址ADDRd,Rr;Rd←Rd+Rr173、I/O寄存器直接尋址INRd,A;Rd←A(A為64個I/O寄存器之一)184、數(shù)據(jù)存儲器直接尋址LDSRd,K;Rd←(K)地址為K的SRAM的內(nèi)容送Rd195、數(shù)據(jù)存儲器間接尋址LDRd,Y;Rd←(Y)注意與數(shù)據(jù)存儲器直接尋址的區(qū)別206、帶后增量的數(shù)據(jù)存儲器間接尋址LDRd,Y+;Rd←(Y),Y=Y+1217、帶預(yù)減量的數(shù)據(jù)存儲器間接尋址LDRd,-Y;Y=Y-1,Rd←(Y)228、帶位移的數(shù)據(jù)存儲器間接尋址LDDRd,Y+q;Rd←(Y+q)0≤q≤63;Y寄存器的內(nèi)容不變!239、從程序存儲器取常數(shù)尋址LPM;R0←(Z)無操作數(shù)LPMR16,Z;R16←(Z)2410、帶后增量的程序存儲器空間
取常數(shù)尋址LPMRd,Z+;R16←(Z),Z←Z+12511、程序存儲器空間寫數(shù)據(jù)尋址用于在系統(tǒng)自編程,如軟件升級SPM;(Z)←R1:R02612、程序存儲器空間直接尋址JMP;mega系列2713、程序存儲器空間間接尋址IJMP;PC←(Z)2814、程序存儲器空間相對尋址RJMP;PC←PC+1+k-2048≤k≤20472915、數(shù)據(jù)存儲器空間SP間接尋址PUSHR0;STACK←R0,SP←SP-1POPR1;SP←SP+1,R1←STACK303.1.4AVR指令對標(biāo)志位的影響在AVR的指令中,一類指令執(zhí)行后要影響到狀態(tài)寄存器中某些標(biāo)志位的狀態(tài),即不論指令執(zhí)行前標(biāo)志位狀態(tài)如何,指令執(zhí)行后總是根據(jù)執(zhí)行結(jié)果的定義形成新的狀態(tài)標(biāo)志。另一類指令在執(zhí)行后不會影響標(biāo)志位,標(biāo)志位原來什么狀態(tài),指令執(zhí)行后標(biāo)志狀態(tài)還是保持不變。由于AVR的CPU響應(yīng)中斷時,硬件不保護(hù)狀態(tài)寄存器,所以在編寫中斷服務(wù)處理程序時,應(yīng)注意將狀態(tài)寄存器進(jìn)行保護(hù)(如用PUSH指令壓入到堆棧),在中斷返回前還要恢復(fù)狀態(tài)寄存器在進(jìn)入中斷前時的標(biāo)志狀態(tài)(如用POP指令從堆棧中彈出)31標(biāo)志(Flags)
在AVR指令集文件中,指令對SREG的標(biāo)志位的影響表示如下:?:標(biāo)志受指令的影響Flagaffectedbyinstruction,在指令表“標(biāo)志”欄寫出相應(yīng)字母0:標(biāo)志被指令清零Flagclearedbyinstruction,寫出相應(yīng)字母并標(biāo)以下標(biāo)01:標(biāo)志被指令置位Flagsetbyinstruction,寫出相應(yīng)字母并標(biāo)以下標(biāo)1-:標(biāo)志不受指令影響Flagnotaffectedbyinstruction,不寫出相應(yīng)字母323.2算術(shù)和邏輯指令3.2.1加法指令A(yù)DD–AddwithoutCarry33例子34Example:
;AddR1:R0toR3:R2addr2,r0;Addlowbyteadcr3,r1;AddwithcarryhighbyteADC–AddwithCarry353.字加立即數(shù)ADIW–AddImmediatetoWordAddsanimmediatevalue(0-63)toaregisterpairandplacestheresultintheregisterpair.Thisinstructionoperatesontheupperfourregisterpairs,andiswellsuitedforoperationsonthepointerregisters.寄存器對與立即數(shù)(0~63)相加,結(jié)果放到寄存器對中36ADIWRd,K;Rd+1:Rd←Rd+1:Rd+K,d∈{24,26,28,30},0≤K≤63,PC←PC+1Example:
adiwr24,1;Add1tor25:r24
adiwZL,63;Add63totheZ-pointer(r31:r30)374.增1指令I(lǐng)NC–IncrementINCRd;Rd←Rd+10≤d≤31寄存器Rd的內(nèi)容加1,結(jié)果送目的寄存器Rd中。該操作不改變SREG中的C標(biāo)志,所以允許INC指令在多倍字長計算中用作循環(huán)計數(shù)當(dāng)對無符號數(shù)操作時,僅BREQ(相等跳轉(zhuǎn))和BRNE(不為零跳轉(zhuǎn))指令有效(即跟所期望的一樣)。當(dāng)對二進(jìn)制補碼值操作時,所有的帶符號跳轉(zhuǎn)指令都有效384.增1指令I(lǐng)NC–IncrementExample:
clrr22;clearr22loop:incr22;incrementr22...cpir22,$4F;Comparer22to$4fbrneloop;Branchifnotequalnop;Continue(donothing)練習(xí)1+2+3+…+1039403.2.2減法指令1.不帶進(jìn)位減法SUB–SubtractwithoutCarrySUBRd,Rr;Rd←Rd–Rr,0≤d≤31,0≤r≤31,PC←PC+1Example:subr13,r12;Subtractr12fromr13brnenoteq;Branchifr12<>r13...noteq:nop;Branchdestination(donothing)412.立即數(shù)減法(字節(jié))SUBI–SubtractImmediateSUBIRd,K;Rd←Rd–K,16≤d≤31,0≤K≤255,PC←PC+1注意:沒有立即數(shù)加法(字節(jié))指令!Example:subir22,$11;Subtract$11fromr22brnenoteq;Branchifr22<>$11...noteq:nop;Branchdestination(donothing)423.帶進(jìn)位減法SBC–SubtractwithCarrySBCRd,Rr;Rd←Rd–Rr–C,0≤d≤31,0≤r≤31,PC←PC+1Example:;Subtractr1:r0fromr3:r2subr2,r0;Subtractlowbytesbcr3,r1;Subtractwithcarryhighbyte434.帶進(jìn)位立即數(shù)減法
SBCI–SubtractImmediatewithCarrySBCIRd,K;Rd←Rd–K–C,16≤d≤31,0≤K≤255,PC←PC+1注意:沒有帶進(jìn)位立即數(shù)加法指令!Example:;Subtract$4F23fromr17:r16subir16,$23;Subtractlowbytesbcir17,$4F;Subtractwithcarryhighbyte445.立即數(shù)減法(字)
SBIW–SubtractImmediatefromWord寄存器對與立即數(shù)(0~63)相減,結(jié)果放到寄存器對中SBIWRd,K;Rd+1:Rd←Rd+1:Rd-K,d∈{24,26,28,30},0≤K≤63,PC←PC+1Example:sbiwr24,1;Subtract1fromr25:r24
sbiwYL,63;Subtract63fromtheY-pointer(r29:r28)456.減1指令DEC–DecrementDECRd;Rd←Rd–1,0≤d≤31,PC←PC+1寄存器Rd的內(nèi)容減1,結(jié)果送目的寄存器Rd中.該操作不改變SREG中的C標(biāo)志,所以允許DEC指令在多倍字長計算中用作循環(huán)計數(shù).當(dāng)對無符號值操作時,僅有BREQ(不相等跳轉(zhuǎn))和BRNE(不為零跳轉(zhuǎn))指令有效。當(dāng)對二進(jìn)制補碼值操作時,所有的帶符號跳轉(zhuǎn)指令都有效46Example:
ldir17,$10;Loadconstantinr17loop:addr1,r2;Addr2tor1decr17;Decrementr17brneloop;Branchifr17<>0nop;Continue(donothing)473.2.3取反碼指令COM–取反碼One’sComplement(1的補碼)COMRd;Rd←$FF–Rd,0≤d≤31,PC←PC+1Example:comr4;Takeone’scomplementofr4breqzero;Branchifzero...zero:nop;Branchdestination(donothing)483.2.4取補指令NEG–取補碼Two’sComplement(2的補碼)注意:值$80不改變NEGRd;Rd←$00–Rd,0≤d≤31,PC←PC+1Example:subr11,r0;Subtractr0fromr11brplpositive;Branchifresultpositivenegr11;Taketwo’scomplementofr11positive:nop;Branchdestination(donothing)493.2.5比較指令1、寄存器比較CP–CompareCPRd,Rr;Rd–Rr,0≤d≤31,0≤r≤31,PC←PC+1該指令完成兩個寄存器Rd和Rr相比較操作,而寄存器的內(nèi)容不改變。該指令后能使用所有條件跳轉(zhuǎn)指令(根據(jù)SREG中的相關(guān)標(biāo)志位)50Example:lp:cpr24,r19;單步執(zhí)行到此行,開始時在調(diào)試窗口的對應(yīng)寄存器輸入數(shù)據(jù)
;第一次操作設(shè):(r24)=$AA,(r19)=$55;第二次操作設(shè):(r14)=$11,(r19)=$55brshlp1;(r24)≥(r19)則轉(zhuǎn)lp1,(r24)小于(r19)順執(zhí)rjmplp2;lp1:subr24,r19;(r24)相減(r19)brnelp;(r24)不為0轉(zhuǎn),為0順執(zhí)lp2:adiwr24,$11;立即數(shù)加,要求d∈{24,26,28,30},0≤K≤63rjmplp;反復(fù)測試513.2.5比較指令2、帶進(jìn)位比較CPC–ComparewithCarryCPCRd,Rr;Rd–Rr–C,0≤d≤31,0≤r≤31,PC←PC+1該指令完成兩個寄存器Rd和Rr相比較操作,并考慮了前面的進(jìn)位(借位)C,而寄存器的內(nèi)容不改變。該指令后能使用所有條件跳轉(zhuǎn)指令(根據(jù)SREG中的相關(guān)標(biāo)志位)52Example:cpr2,r0
;單步執(zhí)行到此行,開始時在調(diào)試窗口的對應(yīng)寄存器輸入數(shù)據(jù)
;設(shè):(R2)=$AA,(R0)=$55lp:sec;(c)=1cpcr3,r1
;第一次操作設(shè):(r3)=$11,(r1)=$10,
;第二次操作設(shè):(R3)=$12,(R1)=$10,brnelp1;比較不相等跳轉(zhuǎn),相等順執(zhí)
rjmplp2;相對跳轉(zhuǎn)
lp1:incr1;+1rjmplplp2:decr1;-1rjmplp;反復(fù)測試
533.2.5比較指令3、與立即數(shù)比較CPI–ComparewithImmediateCPIRd,K;Rd–K,16≤d≤31,0≤K≤255,PC←PC+1該指令完成寄存器Rd和常數(shù)的比較操作,而寄存器的內(nèi)容不改變。該指令后能使用所有條件跳轉(zhuǎn)指令(根據(jù)SREG中的相關(guān)標(biāo)志位)54Example:LP:CPIR19,3
;單步執(zhí)行到此行,開始時在調(diào)試窗口的對應(yīng)寄存器輸入數(shù)據(jù)
;設(shè)(R19)=4BRNELP1;不相等轉(zhuǎn),相等順執(zhí)
INCR19
;(R19)+1
RJMPLP;反復(fù)測試
LP1:DECR19
;(R19)-1
RJMPLP;反復(fù)測試編程實現(xiàn)Ifr16>r20R16++Elseif(r16<$10)R20++;ElseR20--55563.2.6邏輯與指令1、寄存器邏輯與AND–LogicalAND
ANDRd,Rr;Rd←Rd?Rr
,0≤d≤31,0≤r≤31,PC←PC+1寄存器Rd和寄存器Rr的內(nèi)容位邏輯與,結(jié)果送目的寄存器Rd。應(yīng)用:清0,使某位為0,用0去與;保留,用1去邏輯與;代替硬件與門57Example:addr2,r3
;設(shè):(R2)=0B10000000,(R3)=0B00010011LDIR16,1;(R16)=0B00000001,andr2,r16;(R2)=?583.2.6邏輯與指令2、帶立即數(shù)與ANDI–LogicalANDwithImmediateANDIRd,K;Rd←Rd?K
,16≤d≤31,0≤K≤255,PC←PC+1寄存器Rd的內(nèi)容與常數(shù)邏輯與,結(jié)果送目的寄存器Rd。應(yīng)用:清0,使某位為0,用0去與;保留,用1去邏輯與;代替硬件與門59Example:andir17,$0F
;設(shè):(r17)=$F0,(R18)=$EF,(R19)=$FF,單步執(zhí)行后,(R17)=andir18,$10;(R18)=andir19,$AA;(R19)=603.2.6邏輯與指令3、寄存器位清零CBR–ClearBitsinRegisterCBRRd,K;Rd←Rd?($FF-K),16≤d≤31,0≤K≤255,PC←PC+1清除寄存器Rd中的指定位。利用寄存器Rd的內(nèi)容與常數(shù)表征碼(constantmask)K的補碼(反碼!)相與完成的,其結(jié)果放在寄存器Rd中。61Example:lp:cbrR16,$F0;單步執(zhí)行到此行,在調(diào)試窗口的對應(yīng)寄存器輸入數(shù)據(jù)
;(r16)=$FF,Clearuppernibbleofr16CBRR18,1;(r18)=$80,Clearbit0inr18RJMPlp;反復(fù)測試623.2.6邏輯與指令4、測試寄存器為零或負(fù)TST–TestforZeroorMinus
TSTRd;Rd←Rd?Rd
,0≤d≤31,PC←PC+1測試寄存器是否是零或是負(fù)。完成同一寄存器之間的邏輯與操作,而寄存器內(nèi)容不改變。63Example:subr0,r2;單步執(zhí)行到此行,在調(diào)試窗口的對應(yīng)寄存器輸入數(shù)據(jù)
;并打開狀態(tài)寄存器SREG觀察窗口
;(r0)=$aa,(r2)=$aa
;(r0)=$77,(r2)=$80lp:tstr0;測試寄存器r0是否是零或是負(fù),breqlp1;如果零標(biāo)志(Z)位為1,則跳轉(zhuǎn),為0順執(zhí)decr0;-1rjmplp;再測試lp1:incr0;+1rjmplp;再測試643.2.7邏輯或指令1、寄存器邏輯或OR–LogicalORORRd,Rr;Rd←RdvRr
,0≤d≤31,0≤r≤31,PC←PC+1完成寄存器Rd與寄存器Rr的內(nèi)容邏輯或操作,結(jié)果進(jìn)目的寄存器Rd中。應(yīng)用:置數(shù),使某位為1,用1去邏輯或;保留,用0去邏輯或;代替硬件或門
65Example:orr19,r16;邏輯或,單步執(zhí)行到此行,在調(diào)試窗口的對應(yīng)寄存器輸入數(shù)據(jù)
;(R19)=$AA,(R16)=$44,(R18)=0B01001111=$4F
;(R18)=0B00001111=$0FLP:bstr18,6;R18中的6位內(nèi)容到SREG中T標(biāo)志,觀察SREG中T標(biāo)志的變化brtsok;SREG中標(biāo)志為1跳轉(zhuǎn),為0順執(zhí)SERR18;置位R18RJMPLP;反復(fù)測試ok:CLRR18;清零R18RJMPLP;反復(fù)測試663.2.7邏輯或指令2、帶立即數(shù)或ORI–LogicalORwithImmediateORIRd,K;Rd←RdvK
,16≤d≤31,0≤K≤255,PC←PC+1寄存器Rd的內(nèi)容與常數(shù)邏輯或,結(jié)果送目的寄存器Rd。應(yīng)用:置數(shù),使某位為1,用1去或;保留,用0去邏輯或;代替硬件或門
67Example:LP:orir19,$F0
;立即數(shù)或,單步執(zhí)行到此行,在調(diào)試窗口的對應(yīng)寄存器輸入數(shù)據(jù)
;(R19)=$A0,(R17)=$45
;(R19)=0B01101111=$6F,(R17)=0B11110000=$F0;Sethighnibbleofr19orir17,1
;立即數(shù)或
;Setbit0ofr17RJMPLP;反復(fù)測試683.2.7邏輯或指令3、置寄存器位SBR–SetBitsinRegisterSBRRd,K;Rd←RdvK,16≤d≤31,0≤K≤255,PC←PC+1對寄存器Rd中指定位置位。完成寄存器Rd和常數(shù)表征碼K之間的邏輯直接數(shù)或(ORI),結(jié)果送目的寄存器Rd。機器碼與功能均同ORI69Example:;設(shè):(R16)=$F0,(R17)=$80lp:sbrr16,3;對R16的(0B00000011)第1、0位置1,執(zhí)行后(R16)=sbrr17,$17;對R17的(0B00010111)第4、2、1、0位置1,執(zhí)行后(R17)=
RJMPlp;反復(fù)測試703.2.7邏輯或指令4、置寄存器為$FFSER–SetallBitsinRegisterSERRd;Rd←$FF,16≤d≤31,PC←PC+1直接裝入$FF到寄存器Rd。71Example:LP:CLRR16;(R16)清零serr17;(R17)置$FFout$18,r16;輸出到B口,打開I/O寄存器窗口看$18變化nop;Delay(donothing)out$18,r17;輸出到B口,打開I/O寄存器窗口看$18變化
RJMPlp;反復(fù)測試723.2.8邏輯異或指令1、寄存器邏輯異或EOR–ExclusiveOREORRd,Rr;Rd←Rd⊕Rr
,0≤d≤31,0≤r≤31,PC←PC+1完成寄存器Rd與寄存器Rr的內(nèi)容邏輯異或操作,結(jié)果進(jìn)目的寄存器Rd中。輸入相同輸出為0,輸入不同輸出為173Example:LP:eorr4,r4;設(shè):(R4)=0B10100011,相同數(shù)異或為清零
eorr0,r22;設(shè):(R0)=0B10100101設(shè):(R22)=0B01010011RJMPLP;反復(fù)測試743.2.8邏輯異或指令2、清除寄存器CLR–ClearRegister
CLRRd;Rd←Rd⊕Rd
,0≤d≤31,PC←PC+1寄存器清零。該指令采用寄存器Rd與自己的內(nèi)容相異或?qū)崿F(xiàn)的,寄存器的所有位都被清零75Example:clrr18;clearr18loop:incr18;increaser18...cpir18,$50;Comparer18to$50brneloop763.2.9乘法指令Mega系列才有此指令(需兩個時鐘周期)1、無符號數(shù)乘法MUL–MultiplyUnsignedMULRd,Rr;R1:R0←Rd×Rr(unsigned←unsigned×unsigned),0≤d≤31,0≤r≤31,PC←PC+1該指令完成8位X8位→16位的無符號數(shù)乘法操作。被乘數(shù)Rd和乘數(shù)Rr是兩個寄存器,16位結(jié)果放在R1(高字節(jié))和R0(低字節(jié))中。注意:如果被乘數(shù)和乘數(shù)選擇了R0或R1,則當(dāng)進(jìn)行乘法后原操作數(shù)將被覆蓋77Example:
lp:ldir6,$04ldir5,#05mulr6,r5;乘法
movr6,r1;保存乘積高位
movr5,r0;保存乘積低位
rjmplp783.2.9乘法指令2、有符號數(shù)乘法MULS–MultiplySignedMULSRd,Rr;R1:R0←Rd×Rr(signed←signed×signed),16≤d≤31,0≤r≤31,PC←PC+1該指令完成8位X8位→16位的有符號數(shù)乘法操作。被乘數(shù)Rd和乘數(shù)Rr是兩個寄存器,16位結(jié)果放在R1(高字節(jié))和R0(低字節(jié))中。Example:
mul r5,r4 ;Multiplyunsignedr5andr4
movw r4,r0 ;Copyresultbackinr5:r4 muls r21,r20;Multiplysignedr21andr20
movw r20,r0;Copyresultbackinr21:r20793.2.9乘法指令3、有符號數(shù)與無符號數(shù)乘法MULSU–MultiplySignedwithunsignedMULSURd,Rr;R1:R0←Rd×Rr(signed←signed×unsigned),16≤d≤23,16≤r≤23,PC←PC+1該指令完成8位(Rd,有符號)X8位(Rr,無符號)→16位(有符號)的乘法操作。16位結(jié)果放在R1(高字節(jié))和R0(低字節(jié))中。80Example: ;******************************************************************************
;*DESCRIPTION
;*Signedmultiplyoftwo16-bitnumberswith32-bitresult.
;*USAGE
;*r19:r18:r17:r16=r23:r22*r21:r20
;******************************************************************************
muls16x16_32:
clr r2
muls r23,r21 ;(signed)ah*(signed)bh movw r19:r18,r1:r0
mul r22,r20 ;al*bl
movw r17:r16,r1:r0
mulsu r23,r20 ;(signed)ah*bl
sbc r19,r2
add r17,r0
adc r18,r1
adc r19,r2
mulsu r21,r22 ;(signed)bh*al
sbc r19,r2
add r17,r0
adc r18,r1
adc r19,r2
ret813.2.9乘法指令4、無符號定點小數(shù)乘法FMUL–FractionalMultiplyUnsignedFMULRd,Rr;R1:R0←Rd×Rr(unsigned(1.15)←unsigned(1.7)×unsigned(1.7)),16≤d≤23,16≤r≤23,PC←PC+1該指令完成8位無符號數(shù)X8位無符號數(shù)的乘法操作,并將結(jié)果左移1位后保存在R1(高字節(jié))和R0(低字節(jié))中。82Example: ;******************************************************************************
;*DESCRIPTION
;*Signedfractionalmultiplyoftwo16-bitnumberswith32-bitresult.
;*USAGE
;*r19:r18:r17:r16=(r23:r22*r21:r20)<<1
;******************************************************************************
fmuls16x16_32:
clr r2
fmuls r23,r21 ;((signed)ah*(signed)bh)<<1
movw r19:r18,r1:r0
fmul r22,r20 ;(al*bl)<<1
adc r18,r2
movw r17:r16,r1:r0
fmulsu r23,r20 ;((signed)ah*bl)<<1
sbc r19,r2
add r17,r0
adc r18,r1
adc r19,r2
fmulsu r21,r22 ;((signed)bh*al)<<1
sbc r19,r2
add r17,r0
adc r18,r1
adc r19,r2 ret833.2.9乘法指令5、有符號定點小數(shù)乘法FMULS–FractionalMultiplySignedFMULSRd,Rr;R1:R0←Rd×Rr(signed(1.15)←signed(1.7)×signed(1.7)),16≤d≤23,16≤r≤23,PC←PC+1該指令完成8位有符號數(shù)X8位有符號數(shù)的乘法操作,并將結(jié)果左移1位后保存在R1(高字節(jié))和R0(低字節(jié))中。84Example:
fmuls r23,r22
;Multiplysignedr23andr22in(1.7)format,resultin(1.15)format
movw r23:r22,r1:r0
;Copyresultbackinr23:r22853.2.9乘法指令6、有符號定點小數(shù)和無符號定點小數(shù)乘法FMULSU–FractionalMultiplySignedwithUnsignedFMULSURd,Rr;R1:R0←Rd×Rr(signed(1.15)←signed(1.7)×unsigned(1.7)),16≤d≤23,16≤r≤23,PC←PC+1該指令完成8位有符號數(shù)X8位無符號數(shù)的乘法操作,并將結(jié)果左移1位后保存在R1(高字節(jié))和R0(低字節(jié))中。86Example: ;******************************************************************************
;*DESCRIPTION
;*Signedfractionalmultiplyoftwo16-bitnumberswith32-bitresult.
;*USAGE
;*r19:r18:r17:r16=(r23:r22*r21:r20)<<1
;******************************************************************************
fmuls16x16_32:
clr r2
fmuls r23,r21 ;((signed)ah*(signed)bh)<<1
movw r19:r18,r1:r0
fmul r22,r20 ;(al*bl)<<1
adc r18,r2
movw r17:r16,r1:r0
fmulsu r23,r20 ;((signed)ah*bl)<<1
sbc r19,r2
add r17,r0
adc r18,r1
adc r19,r2
fmulsu r21,r22 ;((signed)bh*al)<<1
sbc r19,r2
add r17,r0
adc r18,r1
adc r19,r2 ret練習(xí)16位乘法運算中為什么需要sbc r19,r2
和adc r19,r2?請舉例說明使用匯編實現(xiàn)N!8788893.3跳轉(zhuǎn)指令3.3.1無條件跳轉(zhuǎn)指令1、相對跳轉(zhuǎn)RJMP–RelativeJumpRJMPk;-2K≤k<2K(負(fù)數(shù)用補碼表示),PC←PC+k+1相對跳轉(zhuǎn)到PC-2K+1和PC+2K(字)范圍內(nèi)的地址。對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)90Example:cpir16,$42;Comparer16to$42brneerror;Branchifr16<>$42rjmp
ok;Unconditionalbrancherror:addr16,r17;Addr17tor16incr16;Incrementr16ok:nop;Destinationforrjmp(donothing)好處:作為子程序模塊搬家(移動)較方便,不必修改里面的跳轉(zhuǎn)指令,缺點:子程序大小限在PC←PC+k+1912、間接跳轉(zhuǎn)IJMP–IndirectJumpIJMP;無操作數(shù),PC←Z(15~0)間接跳轉(zhuǎn)到由寄存器區(qū)中的Z(16位)指針寄存器指向的地址。Z指針寄存器是16位寬,允許在當(dāng)前程序存儲器空間64K字(128K字節(jié))內(nèi)跳轉(zhuǎn)。對SREG的標(biāo)志位無影響優(yōu)點:跳轉(zhuǎn)范圍大。缺點:作為子程序模塊,移植時需修改跳轉(zhuǎn)地址,希望在子程序中不要使用!不要給自已帶來麻煩!
92Example:movr30,r0;Setoffsettojumptableijmp;Jumptoroutinepointedtoby(r31:r30)3、直接跳轉(zhuǎn)JMP–Jump(mega系列等)JMPk;0≤k<4M,PC←k在整個程序存儲空間4M字地址內(nèi)跳轉(zhuǎn)。優(yōu)點:可跳轉(zhuǎn)到程序存儲器空間4M字任何地方;缺點:不適宜子程序摸塊中使用;933.3.2條件跳轉(zhuǎn)指令條件跳轉(zhuǎn)指令是依某種特定的條件跳轉(zhuǎn)的指令。條件滿足則跳轉(zhuǎn),條件不滿足時則順序執(zhí)行下面的指令1、測試條件符合跳轉(zhuǎn)指令(1)狀態(tài)寄存器SREG中的位置位跳轉(zhuǎn)BRBS–BranchifBitinSREGisSetBRBSs,k;0≤s≤7,-64≤k≤+63IfSREG(s)=1thenPC←PC+k+1,elsePC←PC+1。對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)94Example:LP:bstr0,3;設(shè):(R0)=0B00001000;R0中第3位到SREG中的T標(biāo)志
;設(shè):(R0)=0B01000100;R0中第3位SREG中的T標(biāo)志brbs6,LP1;SREG中的6位被置位(T=1)則跳轉(zhuǎn),若為零順執(zhí)SET;置T標(biāo)志為1RJMPLP;反復(fù)測試LP1:CLT;T標(biāo)志清RJMPLP;反復(fù)測試95(2)狀態(tài)寄存器SREG中的位清零跳轉(zhuǎn)BRBC–BranchifBitinSREGisClearedBRBCs,k;0≤s≤7,-64≤k≤+63IfSREG(s)=0thenPC←PC+k+1,elsePC←PC+1。對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)96Example:CPIR20,5;R20中內(nèi)容與立即數(shù)05比,設(shè)(R20)=6或(R20)=5LP:BRBC1,LP1;SREG中位被清零則跳轉(zhuǎn),為1順執(zhí)CLZ;Z=0RJMPLP;反復(fù)測試LP1:SEZ;Z=1RJMPLP;反復(fù)測試97(3)相等跳轉(zhuǎn)BREQ–BranchifEqualBREQk;-64≤k≤+63IfRd=Rr(Z=1)thenPC←PC+k+1,elsePC←PC+1。如果在執(zhí)行CP、CPI、SUB或SUBI指令后立即執(zhí)行該指令,當(dāng)且僅當(dāng)寄存器Rd中無符號或有符號二進(jìn)制數(shù)與寄存器Rr中無符號或有符號二進(jìn)制數(shù)相等時,跳轉(zhuǎn)將發(fā)生(相當(dāng)于BRBS1,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)98Example:lp:cpr1,r2;設(shè):(R1)=$AA.(R2)=$AAbreqlp1;相等跳轉(zhuǎn),不相等順執(zhí),請同時觀察Z標(biāo)志incr1;+1rjmplp;反復(fù)驗證lp1:decr1;-1RJMPLP;反復(fù)驗證99(4)不相等跳轉(zhuǎn)BRNE–BranchifNotEqualBRNEk;-64≤k≤+63IfRd≠Rr(Z=0)
thenPC←PC+k+1,elsePC←PC+1。如果在執(zhí)行CP、CPI、SUB或SUBI指令后立即執(zhí)行該指令,當(dāng)且僅當(dāng)寄存器Rd中無符號或有符號二進(jìn)制數(shù)與寄存器Rr中無符號或有符號二進(jìn)制數(shù)不相等時,跳轉(zhuǎn)將發(fā)生(相當(dāng)于BRBC1,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)100Example:eorr27,r27;Clearr27loop:incr27;Increaser27...cpir27,5;Comparer27to5brneloop;Branchifr27<>5nop;Loopexit(donothing)101(5)進(jìn)位標(biāo)志位C置位跳轉(zhuǎn)BRCS–BranchifCarrySetBRCSk;-64≤k≤+63IfC=1
thenPC←PC+k+1,elsePC←PC+1。(相當(dāng)于BRBS0,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)102Example:SEC;C=1,請同時觀察C標(biāo)志LP:BRCSLP1;C=1轉(zhuǎn),C=0順執(zhí)
SEC;C=1RJMPLP;重復(fù)試驗LP1:CLC;C=0RJMPLP;重復(fù)試驗103(6)進(jìn)位標(biāo)志位C清除跳轉(zhuǎn)BRCC–BranchifCarryClearedBRCCk;-64≤k≤+63IfC=0
thenPC←PC+k+1,elsePC←PC+1。(相當(dāng)于BRBC0,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)104Example:addr22,r23;Addr23tor22brccnocarry;Branchifcarrycleared...nocarry:nop;Branchdestination(donothing)105(7)大于或等于跳轉(zhuǎn)(無符號數(shù))BRSH–BranchifSameorHigher(Unsigned)BRSHk;-64≤k≤+63IfRd≥Rr(C=0)
thenPC←PC+k+1,elsePC←PC+1。如果在執(zhí)行CP、CPI、SUB或SUBI指令后立即執(zhí)行該指令,當(dāng)且僅當(dāng)在寄存器Rd中無符號二進(jìn)制數(shù)大于或等于寄存器Rr中無符號二進(jìn)制數(shù)時,跳轉(zhuǎn)將發(fā)生(相當(dāng)于BRBC0,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)106Example:subir19,4;Subtract4fromr19brshhighsm;Branchifr19>=4(unsigned)...highsm:nop;Branchdestination(donothing)107(8)小于跳轉(zhuǎn)(無符號數(shù))BRLO–BranchifLower(Unsigned)BRLOk;-64≤k≤+63IfRd<Rr(C=1)
thenPC←PC+k+1,elsePC←PC+1。如果在執(zhí)行CP、CPI、SUB或SUBI指令后立即執(zhí)行該指令,當(dāng)且僅當(dāng)在寄存器Rd中無符號二進(jìn)制數(shù)小于寄存器Rr中無符號二進(jìn)制數(shù)時,跳轉(zhuǎn)將發(fā)生(相當(dāng)于BRBS0,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)108Example:eorr19,r19;Clearr19loop:incr19;Increaser19...cpir19,$10;Comparer19with$10brloloop;Branchifr19<$10(unsigned)nop;Exitfromloop(donothing)109(9)結(jié)果為負(fù)跳轉(zhuǎn)BRMI–BranchifMinusBRMIk;-64≤k≤+63IfN=1
thenPC←PC+k+1,elsePC←PC+1。測試負(fù)號標(biāo)志N,如果N被置位,則跳轉(zhuǎn)(相當(dāng)于BRBS2,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)110Example:subir18,4;Subtract4fromr18brminegative;Branchifresultnegative...negative:nop;Branchdestination(donothing)111(10)結(jié)果為正跳轉(zhuǎn)BRPL–BranchifPlusBRPLk;-64≤k≤+63IfN=0
thenPC←PC+k+1,elsePC←PC+1。測試負(fù)號標(biāo)志N,如果N被清零,則跳轉(zhuǎn)(相當(dāng)于BRBC2,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)112Example:subir26,$50;Subtract$50fromr26brplpositive;Branchifr26positive...positive:nop;Branchdestination(donothing)113(11)大于或等于跳轉(zhuǎn)(符號數(shù))BRGE–BranchifGreaterorEqual(Signed)BRGEk;-64≤k≤+63IfRd≥Rr(N⊕V=0)
thenPC←PC+k+1,elsePC←PC+1。(注:S=N⊕V)如果在執(zhí)行CP、CPI、SUB或SUBI指令后立即執(zhí)行該指令,當(dāng)且僅當(dāng)在寄存器Rd中符號二進(jìn)制數(shù)大于或等于寄存器Rr中符號二進(jìn)制數(shù)時,跳轉(zhuǎn)將發(fā)生(相當(dāng)于BRBC4,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)114Example:cpr11,r12
;Compareregistersr11andr12brgegreateq;Branchifr11≥r12(signed)...greateq:nop
;Branchdestination(donothing)115(12)小于跳轉(zhuǎn)(符號數(shù))BRLT–BranchifLessThan(Signed)BRLTk;-64≤k≤+63IfRd<Rr(N⊕V=1)
thenPC←PC+k+1,elsePC←PC+1。(注:S=N⊕V)如果在執(zhí)行CP、CPI、SUB或SUBI指令后立即執(zhí)行該指令,當(dāng)且僅當(dāng)在寄存器Rd中符號二進(jìn)制數(shù)小于寄存器Rr中符號二進(jìn)制數(shù)時,跳轉(zhuǎn)將發(fā)生(相當(dāng)于BRBS4,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)116Example:cpr11,r12
;Compareregistersr11andr12brltless;Branchifr11≥r12(signed)...less:nop
;Branchdestination(donothing)117(13)半進(jìn)位標(biāo)志H置位跳轉(zhuǎn)BRHS–BranchifHalfCarryFlagisSetBRHSk;-64≤k≤+63IfH=1
thenPC←PC+k+1,elsePC←PC+1。測試半進(jìn)位標(biāo)志H,如果H被置位,則跳轉(zhuǎn)(相當(dāng)于BRBS5,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)118Example:lp:addr10,r11;加法設(shè):(r10)=5,(r11)=5,(r12)=5brhslp1;半進(jìn)位標(biāo)志(H)=1跳轉(zhuǎn)
;(H)=0順序執(zhí)行decr10;(R10)-1decr10rjmplp;反復(fù)實驗lp1:addr10,r12;加法rjmplp;反復(fù)實驗119(14)半進(jìn)位標(biāo)志H清零跳轉(zhuǎn)BRHC–BranchifHalfCarryFlagisClearedBRHCk;-64≤k≤+63IfH=0
thenPC←PC+k+1,elsePC←PC+1。測試半進(jìn)位標(biāo)志H,如果H被清零,則跳轉(zhuǎn)(相當(dāng)于BRBC5,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)120Example:lp:addr10,r11;加法設(shè):(r10)=5,(r11)=5,(r12)=5brhclp1;半進(jìn)位標(biāo)志(H)=0跳轉(zhuǎn)
;(H)=1順序執(zhí)行decr10;(R10)-1decr10rjmplp;反復(fù)實驗lp1:addr10,r12;加法rjmplp;反復(fù)實驗121(15)標(biāo)志T置位跳轉(zhuǎn)BRTS–BranchiftheTFlagisSetBRTSk;-64≤k≤+63IfT=1
thenPC←PC+k+1,elsePC←PC+1。測試標(biāo)志T,如果T被置位,則跳轉(zhuǎn)(相當(dāng)于BRBS6,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)122Example:bstr3,5;Storebit5ofr3inTFlagbrtstset;Branchifthisbitwasset...tset:nop;Branchdestination(donothing)123(16)標(biāo)志T清零跳轉(zhuǎn)BRTC–BranchiftheTFlagisClearedBRTCk;-64≤k≤+63IfT=0
thenPC←PC+k+1,elsePC←PC+1。測試標(biāo)志T,如果T被清零,則跳轉(zhuǎn)(相當(dāng)于BRBC6,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)124Example:bstr3,5;Storebit5ofr3inTFlagbrtctclear;Branchifthisbitwascleared...tclear:nop;Branchdestination(donothing)125(17)溢出標(biāo)志V置位跳轉(zhuǎn)BRVS–BranchifOverflowSetBRVSk;-64≤k≤+63IfV=1
thenPC←PC+k+1,elsePC←PC+1。測試溢出標(biāo)志V,如果V被置位,則跳轉(zhuǎn)(相當(dāng)于BRBS3,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)126Example:addr3,r4;Addr4tor3
brvsoverfl;Branchifoverflow
...overfl:nop;Branchdestination(donothing)127(18)溢出標(biāo)志V清零跳轉(zhuǎn)BRVC–BranchifOverflowClearedBRVCk;-64≤k≤+63IfV=0
thenPC←PC+k+1,elsePC←PC+1。測試溢出標(biāo)志V,如果V被清零,則跳轉(zhuǎn)(相當(dāng)于BRBC3,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)128Example:addr3,r4;Addr4tor3
brvcnoover;Branchifnooverflow
...noover:nop;Branchdestination(donothing)129(19)全局中斷使能跳轉(zhuǎn)BRIE–BranchifGlobalInterruptisEnabledBRIEk;-64≤k≤+63IfI=1
thenPC←PC+k+1,elsePC←PC+1。測試全局中斷標(biāo)志I,如果I被置位,則跳轉(zhuǎn)(相當(dāng)于BRBS7,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)130Example:LP:BRIELP1;全局中斷標(biāo)志(I)=1跳轉(zhuǎn),
;(I)=0順執(zhí)
SEI;(I)=1RJMPLP;反復(fù)測試LP1:CLI;(I)=0RJMPLP;反復(fù)測試
131(20)全局中斷禁止跳轉(zhuǎn)BRID–BranchifGlobalInterruptisDisabledBRIDk;-64≤k≤+63IfI=0
thenPC←PC+k+1,elsePC←PC+1。測試全局中斷標(biāo)志I,如果I被清零,則跳轉(zhuǎn)(相當(dāng)于BRBC7,k)對SREG的標(biāo)志位無影響在匯編程序中,用目標(biāo)地址的標(biāo)號替代跳轉(zhuǎn)字?jǐn)?shù)k(即由匯編器幫我們計算k)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建師范大學(xué)《多媒體信息編輯》2023-2024學(xué)年第一學(xué)期期末試卷
- 河北省承德市隆化縣第二中學(xué)2023-2024學(xué)年九年級上學(xué)期期中考試道德與法治試題
- 運動會開幕式主持詞
- 部分非常規(guī)作業(yè)許可證(樣表)易燃易爆介質(zhì)臨時接管線
- 畢業(yè)典禮活動小結(jié)
- 2024屆云南省鹽津縣第三中學(xué)高三沖刺模擬考試(5月)數(shù)學(xué)試題
- 2024屆四川省成都市經(jīng)開區(qū)實驗中學(xué)高考數(shù)學(xué)試題5月沖刺題
- 水循環(huán)課件新人教版
- 2024年宿遷道路旅客運輸駕駛員從業(yè)資格模擬試題
- 2024年陜西客運資格證考試題
- 2023年貴州大方富民村鎮(zhèn)銀行招聘考試真題
- 物聯(lián)網(wǎng)安裝調(diào)試員職業(yè)技能競賽考試題庫(含答案)
- 七年級上冊語文統(tǒng)編版 10 《往事依依》活動型公開課一等獎創(chuàng)新教學(xué)設(shè)計(表格式)
- 2021-2022學(xué)年北京市房山區(qū)九年級(上)期中數(shù)學(xué)試卷【含解析】
- DB11∕1450-2017 管道燃?xì)庥脩舭踩矙z技術(shù)規(guī)程
- 北京市海淀區(qū)2023-2024學(xué)年七年級下學(xué)期期末數(shù)學(xué)練習(xí)試題(解析版)
- 室上性心動過速-醫(yī)學(xué)課件
- 游泳自由泳教案(表格式)
- 《第五課-放映幻燈片》優(yōu)教課件
- Java Web程序設(shè)計智慧樹知到期末考試答案章節(jié)答案2024年青島職業(yè)技術(shù)學(xué)院
- CTF信息安全競賽理論知識考試題庫大全-下(多選、判斷題)
評論
0/150
提交評論