第3章-單片機(jī)程序設(shè)計(jì)_第1頁
第3章-單片機(jī)程序設(shè)計(jì)_第2頁
第3章-單片機(jī)程序設(shè)計(jì)_第3頁
第3章-單片機(jī)程序設(shè)計(jì)_第4頁
第3章-單片機(jī)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第3章單片機(jī)匯編程序設(shè)計(jì)1/14/20231本節(jié)內(nèi)容SingleChipMicrocomputer尋址方式算術(shù)操作類指令邏輯運(yùn)算指令數(shù)據(jù)傳送類指令控制轉(zhuǎn)移類指令

第1節(jié)MCS-51單片機(jī)的指令系統(tǒng)位操作指令1/14/20232

指令系統(tǒng)—單片機(jī)所能執(zhí)行的命令(指令)的集合,就是他的指令系統(tǒng)。

匯編語言—以助記符(用英文名稱或縮寫表示的指令)、符號(hào)地址、標(biāo)號(hào)等書寫程序的語言,稱為匯編語言。

MCS-51指令系統(tǒng)—

共111條基本指令;

單字節(jié)指令49條;雙字節(jié)45條;三字節(jié)17條。

指令執(zhí)行時(shí)間—1個(gè)機(jī)器周期的指令64條;

2個(gè)機(jī)器周期的指令45條;

4個(gè)機(jī)器周期2條(乘、除)。3.1.1指令系統(tǒng)概述1/14/202333.1.2指令格式標(biāo)號(hào):操作碼操作數(shù)或操作數(shù)地址;注釋不同字節(jié)長度指令的表示形式:——指令的表示方法操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0雙字節(jié)指令:單字節(jié)指令:操作碼70三字節(jié)指令:操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0數(shù)據(jù)或?qū)ぶ贩绞?0指令的格式:例如:MOVA,R0例如:MOVA,30H例如:MOVDPTR,#2010H操作碼—用來規(guī)定指令進(jìn)行什么操作。操作數(shù)—是指令操作的對(duì)象。如何區(qū)分指令字節(jié)長度??1/14/20234寄存器尋址直接尋址立即尋址方式寄存器間接尋址變址尋址相對(duì)尋址位尋址

尋址方式—就是在指令中說明操作數(shù)所在地址的方法。

MCS-51單片機(jī)指令系統(tǒng)有7種尋址方式:3.1.3指令系統(tǒng)的尋址方式1/14/20235目的地1、寄存器尋址寄存器操作數(shù)XXHMOVA,Rn;(Rn)→A,n=0~7R0-R7A

B

DPTR

操作數(shù)在寄存器中,指定了寄存器就能得到操作數(shù)。

尋址范圍—32個(gè)工作寄存器,A、B累加器,數(shù)據(jù)指針寄存器DPTR。1/14/20236目的地2、直接尋址內(nèi)部RAM或SFR區(qū)操作數(shù)XXHMOVA,20H;(20H)→A20H注:尋址是尋操作數(shù)的“地址”!指令中操作數(shù)在所給單元地址中,即該單元地址中的內(nèi)容為操作數(shù)。

尋址范圍—內(nèi)部低128個(gè)RAM單元;特殊功能寄存器SFR。注:對(duì)端口的尋址,兩種表示方法MOVA,80H或MOVA,P01/14/202373、寄存器間接尋址MOVA,@Ri;((Ri))→A,i=0,1目的地寄存器操作數(shù)3AH內(nèi)部RAM3AH65H3AHR0R1

DPTR寄存器間接尋址寄存器

寄存器中存放的是操作數(shù)的地址,即先從寄存器中找到操作數(shù)的地址,再按該地址找到操作數(shù)。

1/14/20238尋址范圍—·片內(nèi)低128RAM單元,其通用形式為@RiMOVA,@Ri·片外64kRAM,用DPTR作間址寄存器,即@DPTRMOVXA,@DPTR·片外低256B的RAMMOVXA,@DPTRMOVXA,@Ri1/14/20239目的地#XXH操作數(shù)MOVA,#40H;40H→A#40H4、立即數(shù)尋址

操作數(shù)在指令中直接給出,出現(xiàn)在指令中的操作數(shù)稱為立即數(shù)。1/14/202310MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR目的地寄存器操作數(shù)基址寄存器0012H變址寄存器34H程序存儲(chǔ)器0046H65HADPTRPC0046H5、基址寄存器加變址寄存器間接尋址以DPTR或PC作基址寄存器,以A作變址寄存器,以兩者內(nèi)容相加形成的16位地址作操作數(shù)的地址來進(jìn)行尋址的(多用于訪問數(shù)據(jù)表格)。

注:這種尋址方式只用于讀出程序存儲(chǔ)器中的數(shù)據(jù)到A;三條指令均為單字節(jié)指令。

尋址范圍:64KB1/14/2023116、位尋址方式20H······27H21H28H21H20H100000000想一想:如果想使27H單元的D5位置1,該怎么辦呢?內(nèi)部RAM1/14/202312單元地址2FH2EH2DH2CH2BH2AH29H28H

26H25H24H23H22H21H20H7F776F675F574F47372F271F170F07

MSB

位地址

LSB7E766E665E564E46

362E261E160E067D756D655D554D45352D251D150D057C746C645C544C44

342C241C140C047B736B635B534B43

332B231B130B037A726A625A524A42

322A221A120A027971696159514941

312921191109017870686058504840

30282018100800位尋址地址表例:SETB3DH

3D

3C

3B3F

3E3A

393827H1/14/202313SETB3DH20H······27H21H28H21H20H000000010

內(nèi)部RAM的位尋址的表示方法:

·位地址,如3DH;·單元地址加上位,如(27H).51/14/202314

特殊功能寄存器位尋址的表示方法:·位地址,如0D5H(為PSW的位5的位地址);·位名稱,如F0(PSW位5是F0標(biāo)志位,可直接使用);·單元地址加位數(shù),如0D0H(PSW寄存器)的位5,表示為(0D0H).5;·特殊功能寄存器符號(hào)加位數(shù),如PSW.5

位尋址范圍:128個(gè)內(nèi)部RAM位地址,83個(gè)特殊功能寄存器位地址。1/14/2023157、相對(duì)尋址用于程序轉(zhuǎn)移操作而設(shè)置的尋址方式。相對(duì)轉(zhuǎn)移指令多為2字節(jié),個(gè)別為3字節(jié)。指令中,給出的操作數(shù)是地址偏移量rel,因而目的地址為:

目的地址=轉(zhuǎn)移指令所在的地址+轉(zhuǎn)移指令的字節(jié)數(shù)+rel

注:rel是帶符號(hào)的8位二進(jìn)制數(shù)補(bǔ)碼數(shù),表示范圍為-128~+1271/14/202316目的地XXH操作數(shù)SJMP54HPC+2+54HPC2000H······2000H+2=2056HPC2056H1/14/202317尋址比較MOVA,R0③地址是寄存器R0MOVA,@R0②地址在寄存器R0里MOVA,20H④地址是內(nèi)存20HMOVA,#20H①直接將20H這個(gè)數(shù)送A錯(cuò)!錯(cuò)!錯(cuò)!MOVA,R0對(duì)!1/14/202318尋址比較MOVA,R0③地址是寄存器R0MOVA,@R0②地址在寄存器R0里面MOVA,20H④地址是內(nèi)存20HMOVA,#20H①直接將20H這個(gè)數(shù)送A錯(cuò)!錯(cuò)!錯(cuò)!MOVA,@R0對(duì)!1/14/202319尋址比較MOVA,R0③地址是寄存器R0MOVA,@R0②地址在寄存器R0里面MOVA,20HMOVA,#20H①直接將20H這個(gè)數(shù)送A錯(cuò)!錯(cuò)!錯(cuò)!MOVA,20H對(duì)!④地址是內(nèi)存20H1/14/202320尋址比較MOVA,R0③地址是寄存器R0MOVA,@R0②地址在寄存器R0里MOVA,20H④地址是內(nèi)存20HMOVA,#20H①直接將20H這個(gè)數(shù)送A錯(cuò)!錯(cuò)!錯(cuò)!MOVA,#20H對(duì)!1/14/2023213.1.4MCS-51指令系統(tǒng)分類介紹指令描述約定符號(hào)含義Rn表示當(dāng)前選定寄存器組的工作寄存器R0~R7Ri表示作為間接尋址的地址指針R0~R1#data表示8位立即數(shù),即00H~FFH#data16表示16位立即數(shù),即0000H~FFFFHaddr16表示16位地址,用于64K范圍內(nèi)尋址addr11表示11位地址,用于2K范圍內(nèi)尋址direct8位直接地址,可以是內(nèi)部RAM區(qū)的某一單元或某一專用功能寄存器的地址Rel帶符號(hào)的8位偏移量(-128~+127)Bit位尋址區(qū)的直接尋址位(X)X地址單元中的內(nèi)容,或X作為間接尋址寄存器時(shí)所指單元的內(nèi)容←將←后面的內(nèi)容傳送到前面去1/14/202322MCS-51的指令1數(shù)據(jù)傳送指令(29條)

2算術(shù)運(yùn)算指令(24條)3邏輯運(yùn)算指令(24條)4控制轉(zhuǎn)移指令(17條)5位操作指令(17條)1/14/202323目的地址源地址數(shù)據(jù)MOV<目的操作數(shù)>,<源操作數(shù)>MOVA,#20H;20H→A,ARndirect1@RiARndirect2@Ri#dataARndirect2@Ri#dataMOVRnA#datadirect2direct1ARndirect2@Ri#data@RiAdirect2#data20HA3.1.4.1數(shù)據(jù)傳送指令(29條)

——8位數(shù)據(jù)傳送指令(15條)(1,2,3,4)

例MOVA,R6;(R6)→A

MOVA,@R0;((R0))→A

MOVA,20H;

(20H)→A

MOV20H,A;

(A)→20H1/14/202324——16位數(shù)據(jù)傳送指令(1條)(5)

MOVDPTR,#data16——外部數(shù)據(jù)傳送指令(4條)(7)MOVX<目的操作數(shù)>,<源操作數(shù)>,A@DPTR@RiMOVXA@DPTR@Ri@DPTRA@Ri@DPTRA@RiA1/14/202325——交換和查表類指令(9條)

(6,8,9,10,),AXCHRndirect@RiRnAdirect@Ri1)字節(jié)交換指令(3條)

2)低半字節(jié)交換指令(1條)

XCHDA,@Ri

(A)←→(Rn),n=0~7

(A)←→(direct)

(A)←→((Ri)),i=0,1

(A)0~3←→(Rn)0~3,n=0~71/14/2023263)查表指令(2條,單字節(jié))

MOVCA,@A+PC;((A)+PC+1)→AMOVCA,@A+DPTR;((A)+(DPTR))→A4)堆棧操作指令(2條)

PUSHdirect;(SP)+1→SP,(direct)→SPPUSHA;(SP)+1→SP,(A)→SP(direct可以是直接地址,也可以是SFR)POPdirect;((SP))→direct,(SP)-1→SPPOPA;((SP))→A,(SP)-1→SP1/14/202327directdirect3.1.4.2算術(shù)操作類指令(24條)

1、加法指令(4條)

A,Rn@Ri#dataADDRn@Ri#data

(A)+(Rn)→A,n=0~7(A)+(direct)→A(A)+((Ri))→A,i=0,1(A)+#data→APSW

加法指令A(yù)結(jié)果對(duì)標(biāo)志位的影響:

·位7有進(jìn)位,置1Cy,否則清0Cy;

·位3有進(jìn)位,置1Ac,否則清0Ac;

·位6有進(jìn)位,位7無進(jìn)位,或,位7有進(jìn)位,位6無進(jìn)位,則OV置1,否則清0OV。A1/14/202328directdirectA,Rn@Ri#dataADDCRn@Ri#data2、帶進(jìn)位加法指令(4條)

(A)+(Rn)+C→A,n=0~7(A)+(direct)+C→A(A)+((Ri))+C→A,i=0,1(A)+#data+C→APSW

加法指令A(yù)結(jié)果對(duì)標(biāo)志位的影響:

·位7有進(jìn)位,置1Cy,否則清0Cy;

·位3有進(jìn)位,置1Ac,否則清0Ac;

·位6有進(jìn)位,位7無進(jìn)位,或,位7有進(jìn)位,位6無進(jìn)位,則OV置1,否則清0OV。A1/14/202329助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期INCA00000100A(A)+1影響PSW的P標(biāo)志1INCRn00001rrrRn(Rn)+1n=0~7,rrr=000~1111INCdirect0101directdirect(direct)+1

1INC@Ri0000011i(Ri)((Ri))+1i=0,11INCDPTR10100011DPTR(DPTR)+1

2DECA00010100A(A)-1影響PSW的P標(biāo)志1DECRn00011rrrRn(Rn)-1n=0~7,rrr=000~1111DECdirect00010101directdirect(direct)+1

1DEC@Ri0001011i(Ri)((Ri))-1i=0,113、加1減1指令(3,6)1/14/2023304、十進(jìn)制(BCD碼)調(diào)整指令(1條)

DAA注意:DAA指令只能跟在ADD或ADDC加法指令后,不適用于減法指令。用于對(duì)BCD碼十進(jìn)制數(shù)加法運(yùn)算結(jié)果的內(nèi)容修正。1/14/2023315、帶借位的減法指令(4條)

directdirectA,Rn@Ri#dataSUBBRn@Ri#data

(A)-(Rn)-Cy→A,n=0~7(A)-(direct)-Cy→A(A)-((Ri))-Cy→A,i=0,1(A)-#data-Cy→APSW

加法指令A(yù)結(jié)果對(duì)標(biāo)志位的影響:

·位7有借位,置1Cy,否則清0Cy;

·位3有借位,置1Ac,否則清0Ac;

·位6有借位,位7無借位,或,位7有借位,位6無借位,則OV置1,否則清0OV。1/14/2023327、乘法指令(1條)

MULAB;A×B→BA8、除法指令(1條)

DIVAB;A/B→A(商),余數(shù)→B

乘法指令中,乘積BA對(duì)標(biāo)志位OV的影響:

·積大于255,置1溢出標(biāo)志位OV,否則清0OV位;

·進(jìn)位標(biāo)志位Cy總是清0。

除法指令中,商、除數(shù)對(duì)標(biāo)志位OV的影響:

·B的內(nèi)容(除數(shù))不為0,計(jì)算后,清0Cy和溢出標(biāo)志位OV;

·如除數(shù)(B的內(nèi)容)為0,則存放結(jié)果的A、B的內(nèi)容不定,并置1溢出標(biāo)志位OV。1/14/2023331、累加器A清0和取反指令助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期CLRA11100100A00HA中內(nèi)容清0,影響P標(biāo)志不影響Cy、Ac、OV標(biāo)志位1CPLA11110100A中內(nèi)容按位取反,影響P標(biāo)志不影響其它標(biāo)志位1AA3.1.4.3邏輯運(yùn)算指令

1/14/202334A.0A.7A.0A.7A.0A.7A.0A.7CYCY

RLA;左環(huán)移

RRA;右環(huán)移

RLCA;帶進(jìn)位左環(huán)移

RRCA;帶進(jìn)位右環(huán)移注意:執(zhí)行帶進(jìn)位的循環(huán)移位指令之前,必須給CY置位或清零。2、循環(huán)移位指令(2、3、4、5)1/14/2023353、累加器半字節(jié)交換指令SWAPA;(Acc.7~Acc.4)

←→(Acc.3~Acc.0)

A1/14/202336助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期ANLA,direct01010101directA(A)∧(direct)按位相與1ANLA,Rn01011rrrA(A)∧(Rn),n=0~7n=0~7,rrr=000~1111ANLA,@Ri0101011iA(A)∧((Ri)),i=0,1i=0,11ANLA,#data01010100dataA(A)∧#data

1ANLdirect,A01010010directdirect(direct)∧(A)不影響PSW的P標(biāo)志1ANLdirect,#data01010011directdatadirect(direct)∧#data不影響PSW的P標(biāo)志24、邏輯與指令(6條)

1/14/2023375、邏輯或指令(6條)

01000011directdata助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期ORLA,direct01000101directA(A)∨(direct)按位相或1ORLA,Rn01001rrrA(A)∨(Rn)n=0~7,rrr=000~1111ORLA,@Ri0100011iA(A)∨((Ri))i=0,11ORLA,#data01000100dataA(A)∨#data

1ORLdirect,A01000010directdirect

(direct)∨(A)不影響PSW的P標(biāo)志1ORLdirect,#datadirect(direct)∨#data不影響PSW的P標(biāo)志21/14/2023386、邏輯異或指令(6條)

助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期XRLA,direct01100101directA(A)(direct)按位相異或1XRLA,Rn01101rrrA(A)(Rn)n=0~7,rrr=000~1111XRLA,@Ri0110011iA(A)((Ri))i=0,11XRLA,#data01100100dataA(A)#data

1XRLdirect,A01100010directdirect(direct)(A)不影響PSW的P標(biāo)志1XRLdirect,#data01100011directdatadirect(direct)#data不影響PSW的P標(biāo)志21/14/202339PC高5位(保持不變)PC低11位A10A9A800001A7A6A5A4A3A2A1A0操作碼(第一字節(jié))操作數(shù)(第二字節(jié))11位轉(zhuǎn)移地址的形成示意圖程序計(jì)數(shù)器PCAJMPaddr11;PC+2PC,addr11PC.10~PC.03.1.4.4控制轉(zhuǎn)移類指令

1、無條件轉(zhuǎn)移指令1/14/202340PC2002H2003H0000H0001H······2004H2005H2006HPCPCPC2006H2003HPC0002HPC2、相對(duì)轉(zhuǎn)移指令

SJMPrel;rel為相對(duì)偏移量,在128~-127之間例:SJMP03H03H03H就是當(dāng)前PC值與目的PC值相對(duì)差PC

注:在編寫程序時(shí),只需在相對(duì)轉(zhuǎn)移指令中直接寫上要轉(zhuǎn)向的目標(biāo)地址標(biāo)號(hào)即可。

例:LOOP:MOVA,R6

﹕SJMPLOOP1/14/2023413、長跳轉(zhuǎn)指令

LJMPaddr16

;

AAAAHPCPC=0000HPC=AAAAH0000H0001H······AAA9HAAAAH0002H假設(shè)執(zhí)行該指令前,PC的值為0000H。注意:該指令可以轉(zhuǎn)移到64KB程序存儲(chǔ)器中的任意位置。1/14/2023424、間接跳轉(zhuǎn)指令

JMP@A+DPTR;DPTR內(nèi)容為基址,A內(nèi)容為變址。

注:本指令不改變A和DPTR的內(nèi)容,不影響標(biāo)志位。1/14/2023435、條件轉(zhuǎn)移指令

助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期JZrel0110000若A=0,則PCPC+rel,程序執(zhí)行轉(zhuǎn)移,否則程序順序執(zhí)行

2JNZrel01110000若A≠0,則PCPC+rel,程序執(zhí)行轉(zhuǎn)移,否則程序順序執(zhí)行21/14/2023446、比較不相等轉(zhuǎn)移指令(4條)助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期CJNEA,#data,rel10110100datarel若(A)≠#data,則PCPC+rel,否則順序執(zhí)行;若A<#data,則CY=1,否則CY=02CJNERn,#data,rel10111rrrdatarel若(Rn)≠#data,則PCPC+rel,否則順序執(zhí)行;若(Rn)<#data,則CY=1,否則CY=02CJNE@Ri,#data,rel1011011idatarel若((Ri))≠#data,則PCPC+rel,否則順序執(zhí)行;若((Ri))<#data,則CY=1,否則CY=02CJNEA,direct,rel10110101directrel若(A)≠(direct),則PCPC+rel,否則順序執(zhí)行;若(A)<(direct),則CY=1,否則CY=021/14/2023457、減1非零轉(zhuǎn)移指令(2條)助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期DJNZRn,rel;n=0~711011rrrrelRn(Rn)-1,若(Rn)≠0,則PCPC+rel,否則順序執(zhí)行2DJNZdirect,rel11010101directreldirect(direct)-1,若(direct)≠0,則PCPC+rel,否則順序執(zhí)行21/14/202346條件轉(zhuǎn)移類指令范例——方案一還有什么方法實(shí)現(xiàn)循環(huán)的終止?將00H~0FH這16個(gè)數(shù)順序地置入片內(nèi)RAM20H~2FH單元中。MOVR0,#20H MOVR7,#0FH CLRALOOP:MOV@R0,AINCAINCR0DJNZR7,LOOPSJMP$SJMP$意義:原地循環(huán) 等待1/14/202347條件轉(zhuǎn)移類指令范例——方案二MOVR0,#20HMOVR7,#0FHCLRALOOP:MOV@R0,AINCAINCR0CJNEA,#0FH,LOOPSJMP$1/14/202348條件轉(zhuǎn)移類指令范例——方案三

MOVR0,#20HMOVA,#0FHMOV30H,#00HLOOP:MOV@R0,30HINC30HINCR0DECAJNZLOOPSJMP$1/14/202349條件轉(zhuǎn)移類指令范例——方案四

MOVR0,#20HMOVA,#0FH MOV30H,#00HLOOP:MOV@R0,30HINC30HINCR0SUBBA,#01HJNCLOOPSJMP$1/14/2023508、調(diào)用子程序指令

1)短調(diào)用指令助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期ACALLaddr11a10a9a810001addr7~0PCPC+2SPSP+1,(SP)PC0~7SPSP+1,(SP)PC8~15PC0~10addr1122)長調(diào)用指令助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期LCALLaddr1600010010addr15~8addr7~0PCPC+3SPSP+1,SPPC0~7SPP+1,SPPC8~15PCaddr1621/14/2023519、子程序的返回和中斷返回指令(9、10)助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期RET00100010PC8~15

(SP),SPSP-1PC0~7(SP),SPSP-1子程序返回指令2RETI00110010PC8~15

SP,SPSP-1PC0~7SP,SPSP-1中斷返回指令2助記符格式機(jī)器碼(B)相應(yīng)操作指令說明NOP00000000空操作PC(PC)+1消耗1個(gè)機(jī)器周期程序中用于等待或時(shí)間延遲。10、空操作(11)1/14/2023523.1.4.5位操作指令單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07

MSB

位地址

LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM位尋址區(qū)位地址表1/14/202353助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期MOVC,bit10100010bitCybit位傳送指令,結(jié)果影響CY標(biāo)志2MOVbit,C10010010bitbitCy位傳送指令,結(jié)果不影響PSW21.數(shù)據(jù)位傳送指令

注:指令中一個(gè)操作數(shù)必須是進(jìn)位標(biāo)志位,另一個(gè)可以是任何直接尋址位。1/14/2023542.位置位和位清零指令助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期CLRC11000011CY0位清0指令,結(jié)果影響CY標(biāo)志1CLRbit11000010bitbit0位清0指令,結(jié)果不影響PSW1SETBC11010011CY1位置1指令,結(jié)果影響CY標(biāo)志1SETBbitbit1位置1指令,結(jié)果不影響PSW111010010bit助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期CPLC10110011CyCyCy求反1CPLbit10110010bitbit位取反指令,結(jié)果不影響Cy11/14/202355助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期ANLC,bit10000010bitCYCY∧bit位與指令2

ANLC,/bit10110010bitCYCY∧bit位與指令23.位變量邏輯與指令4.位變量邏輯或指令助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期ORLC,bit01110010bitCyCy∨bit位或指令2

ORLC,/bit10100010bitCyCy∨bit位或指令21/14/2023565.條件轉(zhuǎn)移類位操作指令助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期JBbit,rel00100000bitrel若bit=1,則PCPC+rel,否則順序執(zhí)行2JNBbit,rel00110000bitrel若bit=0,則PCPC+rel,否則順序執(zhí)行2JBCbit,rel00010000bitrel若bit=1,則PCPC+rel,bit0,否則順序執(zhí)行2助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期JCrel01000000若Cy=0,PCPC+rel,否則順序執(zhí)行2JNCrel01010000若Cy≠0,PCPC+rel,否則順序執(zhí)行21/14/202357練習(xí)1

設(shè)內(nèi)部RAM中33H單元中內(nèi)容為44H,34H單元中內(nèi)容為0AFH,R0中內(nèi)容為33H,R1中內(nèi)容為00H,給出以下每一條指令執(zhí)行后A中的值和PSW中P的值。 MOVA,#34H MOVA,34H MOVA,R1 MOVA,@R0

注意:對(duì)PSW中P標(biāo)志的影響。1/14/202358練習(xí)2設(shè)內(nèi)部RAM30H單元中內(nèi)容為52H,請(qǐng)給出以下每條指令執(zhí)行后的結(jié)果:

MOVA,#30H MOVA,30H MOVR0,#30H MOVA,@R0 MOV30H,#30H設(shè)P1口內(nèi)容為0AAH(P1口地址為90H),請(qǐng)給出以下程序結(jié)果:

MOVR0,#30H MOV10H,P1 MOVA,10H MOV@R0,A MOV40H,@R01/14/202359本節(jié)主要知識(shí)點(diǎn)指令的七種尋址方式。難點(diǎn):寄存器間接尋址各類指令的主要功能。難點(diǎn):查表指令難點(diǎn):條件轉(zhuǎn)移指令作業(yè):1/14/202360本節(jié)內(nèi)容SingleChipMicrocomputer概述匯編語言實(shí)用程序設(shè)計(jì)子程序設(shè)計(jì)匯編語言源程序的匯編查表程序設(shè)計(jì)第2節(jié)MCS-51匯編語言程序設(shè)計(jì)分支轉(zhuǎn)移程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)常用程序設(shè)計(jì)方法1/14/2023613.2.1匯編語言程序設(shè)計(jì)概述最早人們只能用機(jī)器語言(二進(jìn)制)編寫程序;為了方便記憶,人們開始用助記符形式的匯編語言編寫程序,稱為低級(jí)語言。然后再用匯編系統(tǒng)將其翻譯成機(jī)器語言,該過程稱為匯編;為了用更接近人的語言編寫程序,程序設(shè)計(jì)師們發(fā)明了高級(jí)語言,如:BASIC、FORTRAN、PASCAL、C、JAVA然后再用編譯系統(tǒng)將其翻譯成機(jī)器語言,該過程稱為編譯;機(jī)器只能識(shí)別機(jī)器語言。所以必須用編譯系統(tǒng)將高級(jí)語言編寫的源程序編譯成機(jī)器語言,用匯編系統(tǒng)將用匯編語言編寫的源程序匯編成機(jī)器語言;由低級(jí)或高級(jí)語言構(gòu)成的程序稱為源程序,由機(jī)器語言構(gòu)成的程序稱作目標(biāo)程序;1/14/202362

源程序目標(biāo)程序

低級(jí)語言機(jī)器語言匯編高級(jí)語言機(jī)器語言編譯1/14/2023633.2.1.2匯編語言語句的種類和格式標(biāo)號(hào)字段:操作碼字段操作數(shù)字段(雙操作數(shù)用“,”隔開);注釋字段語句的格式:例如:

START:

MOVA,#00H;0→AMOVR1,#10;10→R1

MOVR2,#00000011B;3→R2LOOP:ADDA,R2;(A)+(R2)→A

DJNZR1,LOOP;R1的內(nèi)容減1不為0,則循環(huán)NOPHERE:SJMPHERE(也可為SJMP$)語句的種類:指令語句偽指令語句1/14/2023643.2.1.3常用偽指令

偽指令作用--在匯編語言源程序中,用于向匯編程序發(fā)出指示信息,引導(dǎo)匯編程序如何完成匯編工作(也稱為匯編程序控制命令)。

功能—控制匯編程序的輸入輸出、定義數(shù)據(jù)和符號(hào)、條件匯編、分配存儲(chǔ)空間等。1/14/2023651、定位偽指令ORG—匯編起始地址命令ORG2000HSTART:MOVA,#00H

注:在一個(gè)程序中多次使用ORG命令時(shí),地址應(yīng)從小到大排列。

ORG2000H

﹕ORG2500H

ORG3000H1/14/202366

2、匯編終止命令END

用于終止源程序的匯編工作(整個(gè)源程序中只能有一條END,位于程序的最后)

3、定義字節(jié)命令DB

用于從指定的地址開始,在程序存儲(chǔ)器的連續(xù)單元中定義字節(jié)數(shù)據(jù)。例如:

ORG2000HDB30H,40H,24,“C”

匯編后:(2000H)=30H(2001H)=40H(2002H)=18H(2003H)=43H1/14/2023674、定義數(shù)據(jù)字命令DW

用于從指定的地址開始,在程序存儲(chǔ)器的連續(xù)單元中定義16位的數(shù)據(jù)字。例如:ORG2000HDW1246H,7BH,10

匯編后:(2000H)=12H(2001H)=46H(2002H)=00H(2003H)=7BH(2004H)=00H(2005H)=0AH1/14/2023685、賦值命令EQU

用于給標(biāo)號(hào)賦值。賦值后,其標(biāo)號(hào)值在整個(gè)程序有效。例如:TESTEQU2000H1/14/2023693.2.1.4匯編語言程序設(shè)計(jì)步驟分析問題,確定算法根據(jù)算法,畫出程序框圖分配內(nèi)存及端口編制源程序仿真、上機(jī)調(diào)試程序固化程序1/14/2023703.2.2匯編語言源程序的匯編匯編分—手工匯編,機(jī)器匯編1、手工匯編過程:用助記符寫出源程序→查指令的機(jī)器代碼表,把助記符指令翻譯成機(jī)器代碼→調(diào)試和運(yùn)行。即,人工查表翻譯指令的方法為手工匯編。

缺點(diǎn):遇相對(duì)轉(zhuǎn)移指令時(shí),偏移量計(jì)算麻煩且易出錯(cuò)。例:MOVA,R1;E8HMOV80H,A;F5H,80H1/14/2023712、機(jī)器匯編

借助于微計(jì)算機(jī)代替手工匯編的方法。

過程:在微計(jì)算機(jī)上用編輯軟件編輯源程序→生成ASCII碼文件(擴(kuò)展名為“.ASM”)→在微計(jì)算機(jī)上運(yùn)行匯編程序,把匯編語言源程序翻譯成機(jī)器代碼→通過微計(jì)算機(jī)的串(并)行口把匯編后的機(jī)器代碼傳送到用戶樣機(jī),進(jìn)行調(diào)試和運(yùn)行。例:匯編語言源程序匯編后的機(jī)器代碼標(biāo)號(hào)助記符指令地址(16進(jìn)制)機(jī)器代碼(16進(jìn)制)START:MOVA,#08H2000H74H08HMOVB,#76H2002H75HF0H76HADDA,A2005H25HE0HADDA,B2007H25HF0LJMPSTART2009H02H20H00H1/14/2023723.2.3匯編語言實(shí)用程序設(shè)計(jì)

3.2.3.1匯編語言程序的基本結(jié)構(gòu)形式

單片機(jī)程序設(shè)計(jì)方法--結(jié)構(gòu)化方法

常采用的程序結(jié)構(gòu)–

順序結(jié)構(gòu),分支結(jié)構(gòu),循環(huán)結(jié)構(gòu),子程序和中斷服務(wù)子程序。

順序結(jié)構(gòu)—程序逐條執(zhí)行,由上至下。

分支結(jié)構(gòu)—程序中含轉(zhuǎn)移指令(有條件或無條件)。

循環(huán)結(jié)構(gòu)—程序中含有可以反復(fù)執(zhí)行的程序段(循環(huán)體)。

子程序—設(shè)計(jì)時(shí),將需多次應(yīng)用的、完成相同的某種基本運(yùn)算操作的程序段單獨(dú)編為一個(gè)程序段,需要時(shí)通過指令調(diào)用,這樣的程序段為子程序。返回指令RET。中斷服務(wù)子程序—響應(yīng)中斷源請(qǐng)求的獨(dú)立子程序段,返回用RETI。1/14/202373主要內(nèi)容:

1.簡單程序設(shè)計(jì)

2.子程序的設(shè)計(jì)3.查表程序設(shè)計(jì)4.分支轉(zhuǎn)移程序設(shè)計(jì)5.循環(huán)程序設(shè)計(jì)6.其他1/14/202374簡單程序設(shè)計(jì)

結(jié)構(gòu)特點(diǎn):按指令的先后順序依次執(zhí)行。例1:有兩組BCD碼分別存放在23H、22H單元和33H、32H單元,求它們的和并送入43H、42H單元中去。(高位在前,低位在后)(如:1183H和5678H)分析:·········32H33H42HA22H23H43H···00111000011001010001000110000111BCD碼83HBCD碼11H1/14/202375例1:有兩組BCD碼(如:1183H和5678H),分別存放在23H、22H單元和33H、32H單元,求它們的和,并送入43H、42H單元中去。(高位在前,低位在后)解:流程圖(框圖)如何?請(qǐng)同學(xué)們自己繪制流程圖。

開始(22H)A(32H)+AA十進(jìn)制調(diào)整(33H)+AAA(43H)結(jié)束A(42H)(23H)A

十進(jìn)制調(diào)整1/14/202376ORG0000HMOVA,22HADDA,32HDAAMOV42H,AMOVA,23HADDCA,33HDAAMOV43H,ASJMP$END

此條加法指令可否改用帶進(jìn)位的(ADDC)?開始(22H)A(32H)+AA十進(jìn)制調(diào)整(33H)+AAA(43H)結(jié)束A(42H)(23H)A

十進(jìn)制調(diào)整1/14/202377ORG2000HCLRCMOVA,22HADDA,32HDAAMOV42H,AMOVA,23HADDCA,33HDAAMOV43H,AEND·········32H33H42HA22H23H43H···100000110101011000010001011110001000001101111000+111110110110000100010001010101100110011101101000PCPCPCPCPCPCPCPCPC1111101101100001PC01101000PC011001111/14/2023783.2.3.2子程序設(shè)計(jì)

子程序用于完成特定任務(wù),其資源為所有調(diào)用程序共享–獨(dú)立性,通用性。

(1)子程序第一條指令地址為入口地址,其前應(yīng)有標(biāo)號(hào)。

(2)注意保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場。保護(hù)現(xiàn)場,恢復(fù)現(xiàn)場。

(3)子程序返回主程序時(shí),最后一條指令必須是RET指令。(4)子程序可以嵌套。(5)子程序調(diào)用時(shí),要注意參數(shù)傳遞的問題–調(diào)用子程序時(shí),主程序應(yīng)先把有關(guān)參數(shù)放到某些約定的位置,子程序運(yùn)行時(shí),可以從約定位置得到這些參數(shù);自程序結(jié)束前也應(yīng)把運(yùn)算結(jié)果送到約定位置,返回主程序后,可從約定位置獲得這些結(jié)果.分入口參數(shù)(子程序需要的原始參數(shù)),出口參數(shù)(運(yùn)行后的結(jié)果參數(shù))。子程序設(shè)計(jì)注意事項(xiàng)1/14/202379

(6)調(diào)用指令:ACALLaddr11絕對(duì)調(diào)用指令LCALLaddr16長調(diào)用指令注意:1.入口參數(shù)和出口參數(shù)的位置2.現(xiàn)場的保護(hù)與恢復(fù)。主要內(nèi)容:

1.主程序與子程序的關(guān)系(子程序的結(jié)構(gòu))2.子程序嵌套3.子程序的調(diào)用與返回1/14/202380主程序與子程序的關(guān)系子程序SUB主程序MAIN返回LCALLSUB調(diào)用子程序子程序入口地址RET1/14/202381范例:計(jì)算平方和c=a2+b2。a2在31H單元中,b2在32H單元中,計(jì)算結(jié)果c放33H中。主程序段:ORG 1000H ;主程序MOV SP,#3FH;設(shè)置棧底MOV A,31H ;取數(shù)a存放到累加器A中作為入口參數(shù)LCALLSQR;計(jì)算a2MOV R1,A ;出口參數(shù)——平方值存放在A中MOV A,32H ;取數(shù)b存放到累加器A中作為入口參數(shù)LCALLSQR;計(jì)算b2ADD A,R1 ;求和MOV 33H,A ;存放結(jié)果SJMP $

注意:子程序的參數(shù)傳遞1/14/202382子程序段:;子程序:SQR;功能:通過查表求出平方值y=x2;入口參數(shù):x存放在累加器A中;出口參數(shù):求得的平方值y存放在A中;占用資源:累加器A,數(shù)據(jù)指針DPTRSQR:PUSHDPH;保護(hù)現(xiàn)場,將主程序中DPTR的高八位放入堆棧

PUSHDPL;保護(hù)現(xiàn)場,將主程序中DPTR的低八位放入堆棧MOVDPTR,#TABLE;子程序中使用DPTR,表首地址→DPTRMOVCA,@A+DPTR;查表

POPDPL ;恢復(fù)現(xiàn)場,將主程序中DPTR的低八位彈出堆棧

POPDPH ;恢復(fù)現(xiàn)場,將主程序中DPTR的高八位彈出堆棧RETTABLE:DB0,1,4,9,16,25,36,49,64,81注意:現(xiàn)場保護(hù)和恢復(fù)現(xiàn)場1/14/202383子程序嵌套(非重點(diǎn))

子程序嵌套(或稱多重轉(zhuǎn)子)是指在子程序執(zhí)行過程中,還可以調(diào)用另一個(gè)子程序。

子程序SUB1

主程序MAINLCALLSUB1RET

子程序SUB2RETLCALLSUB21/14/202384子程序的調(diào)用與返回問題:子程序怎樣調(diào)用、返回到主程序中的正確位置,并接著執(zhí)行主程序中的后續(xù)指令呢?為了解決這個(gè)問題,我們采用了堆棧技術(shù)。

子程序SUB1

主程序MAINRET

子程序SUB2RET20102013211021132100220020132013PC21131321堆棧指針SP堆棧LCALLSUB1LCALLSUB21/14/202385重點(diǎn):1、偽指令;2、運(yùn)用指令編寫簡單程序;3、子程序編寫方法—入口地址;入口參數(shù)、出口參數(shù);現(xiàn)場保護(hù)、恢復(fù)現(xiàn)場。1/14/2023863.2.3.3查表程序表格是事先存放在ROM中的,一般為一串有序的常數(shù),例如平方表、字型碼表等。表格可通過偽指令DB來確定。通過查表指令MOVCA,@A+DPTRMOVCA,@A+PC來實(shí)現(xiàn)。注:MOVCA,@A+DPTR—表格可設(shè)在64KBROM空間內(nèi)任何地方;如DPTR已被使用,則在查表前必須保護(hù)DPTR,結(jié)束后恢復(fù)DPTR。MOVCA,@A+PC—表格只能存放在這條指令后00~FFH之間。

1/14/202387例3.2-5子程序功能:根據(jù)累加器A的數(shù)x(0~9)查x的平方y(tǒng)(x、y均為單字節(jié))。用指令MOVCA,@A+PC

地址子程序Y3Y2Y1Y0ADDA,#01H;#01H為偏移量。Y3Y2Y1Y0+2MOVCA,@A+PC

Y3Y2Y1Y0+3RETY3Y2Y1Y0+4DB00H,01H,04H,09H,10HDB19H,24H,31H,40H,51H偏移量=表首地址-(查表指令所在的地址+1)

=

Y3Y2Y1Y0+4

-((Y3Y2Y1Y0+2

)+1)=11/14/202388用MOVCA,@A+DPTR指令:PUSHDPHPUSHDPLMOVDPTR,#TAB1MOVCA,@A+DPTRPOPDPLPOPDPH

RETTAB1:DB00H,01H,04H,09H,10HDB19H,24H,31H,40H,51H

1/14/202389例3.2-7設(shè)有一巡回檢測報(bào)警裝置,需對(duì)16路輸入進(jìn)行檢測,每路有1個(gè)最大允許值,為雙字節(jié)。裝置運(yùn)行時(shí),需根據(jù)測量的路數(shù),找出每路的最大允許值,看輸入值是否大于最大允許值,如大于就報(bào)警。設(shè)計(jì)一個(gè)查表程序。路數(shù)放在R2種,查表后最大值放在R3R4中。用指令MOVCA,@A+PC

TB3:MOVA,R2

ADDA,R2MOVR3,AADDA,#6;加偏移量MOVCA,@A+PCXCHA,R3;(1)(A)=2(R2),(R3)查表結(jié)果ADDA,#3;(2)MOVCA,@A+PC;(1)MOVR4,A;(1)

RET;(1)TAB3:DW1520,3721,42645,7580…1/14/202390查表程序重點(diǎn)、難點(diǎn):1、表數(shù)據(jù)在程序存儲(chǔ)器某地址單元中;2、查表指令(2條)--查表時(shí),只是到相應(yīng)表地址取數(shù),取數(shù)后程序繼續(xù)進(jìn)行;3、查表程序編寫方法—注意偏移量的計(jì)算。1/14/2023913.2.3.7分支轉(zhuǎn)移程序設(shè)計(jì)結(jié)構(gòu)特點(diǎn):程序中含有轉(zhuǎn)移指令,不一定按指令的先后順序依次運(yùn)行程序,程序的流向有兩個(gè)或兩個(gè)以上分支,根據(jù)指定條件選擇程序的流向。種類:無條件轉(zhuǎn)移,有條件轉(zhuǎn)移,單分支轉(zhuǎn)移,多分支轉(zhuǎn)移1、單分支有條件轉(zhuǎn)移

例3.2-11求單字節(jié)有符號(hào)數(shù)的二進(jìn)制補(bǔ)碼(有條件單分支轉(zhuǎn)移)

CMPT:JNBACC.7,RETURNMOVC,ACC.7CPLAADDA,#1MOVACC.7,CRETURN:RET(A)<0?Y返回N開始(A)+1→A1/14/202392單分支轉(zhuǎn)移程序結(jié)構(gòu)類型滿足?Y

結(jié)束N程序段1

程序段2開始滿足?Y

返回N程序段1

程序段2開始

分支程序1

分支程序21/14/2023932、多分支有條件轉(zhuǎn)移結(jié)構(gòu)多分支選擇指令:JMP@A+DPTR;間接轉(zhuǎn)移指令

CJNEA,direct,rel;比較轉(zhuǎn)移指令

CJNEA,#data,rel

CJNERn,#data,relCJNE@Ri,#data,rel

程序設(shè)計(jì)方法:逐次比較法根據(jù)內(nèi)容選擇處理程序的多分支程序設(shè)計(jì)方法1/14/202394

逐次比較法例3.2-12求符號(hào)函數(shù)的值,其定義為X存放在40H單元,Y存放在41H單元。程序框圖:源程序:SIGNFUC:MOVA,40H

CJNEA,#00H,NZEARAJMPNEGTNZEAR:JBACC.7,POSIMOVA,#01HAJMPNEGTPOSI:MOVA,#81HNEGT:MOV41H,AEND開始

XAA=–1

A=1存結(jié)果結(jié)束YYNNA>0?A=0?1/14/202395書中程序框圖:Y

結(jié)束N1→YX=0?

0→Y開始X>0?-1→YYN1/14/202396根據(jù)內(nèi)容選擇處理程序的多分支程序:例3.2-13根據(jù)寄存器R2的內(nèi)容,轉(zhuǎn)向各個(gè)處理程序PRGX(X=0~n)。(R2)=0,轉(zhuǎn)PRG0;(R2)=1,轉(zhuǎn)向PRG1;……(R2)=n,轉(zhuǎn)向PRGn。程序框圖:源程序:JMP6:MOVDPTR,#TAB5MOVA,R2MOVB,#03HMULAB;結(jié)果存入BA中MOVR6,A;低8位存入R6中MOVA,B;高8位送A中ADDA,DPH;高8位相加MOVA,R6;取出低8位JMP@A+DPTR;TAB5:LJMPPRG0;(3字節(jié)指令)LJMPPRG1LJMPPRGn

結(jié)束PRG0PRGn選擇參數(shù)→A

開始(A)=?1/14/202397分支轉(zhuǎn)移程序重點(diǎn)、難點(diǎn):1、分支轉(zhuǎn)移程序的結(jié)構(gòu)、種類(無條件、有條件、單分支、多分支);2、有條件單分支轉(zhuǎn)移程序,有條件多分支轉(zhuǎn)移程序的設(shè)計(jì)方法(逐次比較法—最常用,根據(jù)內(nèi)容選分支程序的方法);

1/14/2023983.2.3.8循環(huán)程序設(shè)計(jì)結(jié)構(gòu)特點(diǎn):利用轉(zhuǎn)移指令反復(fù)運(yùn)行需要多次重復(fù)的程序段。實(shí)例:50ms的延時(shí)程序:(DELAY)

DEL:MOVR7,#200DEL1:MOVR6,#125DEL2:DJNZR6,DEL2;125*2=250μsDJNZR7,DEL1;0.25ms*200=50msRET循環(huán)程序的結(jié)構(gòu):

1.初始化部分(設(shè)定循環(huán)次數(shù)等)。2.循環(huán)體(重復(fù)執(zhí)行的部分,用于完成實(shí)際操作)3.循環(huán)控制(不斷修改和判別循環(huán)變量,直至結(jié)束)。4.循環(huán)結(jié)束處理(有時(shí)省略)?!鲅h(huán)結(jié)構(gòu)的控制:循環(huán)計(jì)數(shù)控制,條件控制■

循環(huán)控制指令:

DJNZRn,relDJNZdirect,relCJNE@Rn,#data,rel;4條CJNE指令1/14/202399處理部分

結(jié)束部分初始化

結(jié)束修改控制變量

循環(huán)結(jié)束?YN處理部分

結(jié)束部分初始化

結(jié)束修改控制變量

循環(huán)結(jié)束?YN計(jì)數(shù)循環(huán)控制結(jié)構(gòu)條件控制結(jié)構(gòu)循環(huán)控制循環(huán)控制循環(huán)體循環(huán)體1/14/2023100計(jì)數(shù)控制循環(huán)程序例3.2-15(P93)

xi為單字節(jié)數(shù),其按i的順序存放在片內(nèi)RAM從50H開始的單元里,共有n個(gè)數(shù),求這n個(gè)數(shù)的和。(n放入R2,和放在R3R4中)源程序:

ADD1:MOVR2,#n;加法次數(shù)n送R2MOVR3,#0MOVR4,#0;R4做和地址的低8位MOVR0,#50H;數(shù)據(jù)首地址存入R0單元LOOP:MOVA,R4ADDA,@R0;求和MOVR4,A;和存入R4中INCR0;數(shù)據(jù)地址加1CLRA;ADDCA,R3;Cy+(R3)→AMOVR3,A;和的高8位存入R3中DJNZR2,LOOP;判斷循環(huán)次數(shù)END1/14/2023101

R4中放字符串長度,R1中放字符串地址。源程序:

MOVR4,#0FFH;初始化

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論