第3章 80C51單片機指令系統(tǒng)_第1頁
第3章 80C51單片機指令系統(tǒng)_第2頁
第3章 80C51單片機指令系統(tǒng)_第3頁
第3章 80C51單片機指令系統(tǒng)_第4頁
第3章 80C51單片機指令系統(tǒng)_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

教學基本要求:

(1)、了解單片機的指令系統(tǒng)、編程語言等基本概念;(2)、熟悉單片機匯編語言指令格式中符號的意義;(3)、熟悉單片機匯編語言指令系統(tǒng)每條指令的功能;(4)、掌握單片機指令系統(tǒng)的7種尋址方式;(5)、掌握單片機指令系統(tǒng)每類指令的用法。教學重點:(1)、單片機指令系統(tǒng)的尋址方式;(2)、片內(nèi)、外RAM單元之間的數(shù)據(jù)傳送;(3)、加法運算指令組的用法;(4)、邏輯運算指令組的用法;(5)、控制轉移指令組的用法。第3章80C51單片機指令系統(tǒng)教學難點:(1)、寄存器間接尋址、變址尋址、相對尋址等概念;(2)、堆棧操作指令的應用。(3)、十進制調(diào)整指令DAA的應用;(4)、控制轉移指令轉移目的地址、偏移量rel的計算;(5)、子程序調(diào)用、返回指令的用法。3.1單片機指令系統(tǒng)概述1、指令系統(tǒng)概述指令:是供用戶使用的單片機的軟件資源,是單片機所能接受的軟件工作者的命令的最小工作單位。指令系統(tǒng):單片機所能執(zhí)行的指令集合。機器語言:指令以二進制碼來表示。匯編語言:指令以助記符形式來表示。機器語言程序:使用機器語言編寫的程序。匯編語言程序:使用匯編語言編寫的程序。注意:MCS-51單片機指令系統(tǒng)不具有通用性,因此,用其編寫的匯編語言程序也不具有通用性,不能移植。

MCS-51系列單片機的匯編語言指令系統(tǒng)共有111條指令,其中49條為單字節(jié)指令,45條為雙字節(jié)指令,17條為三字節(jié)指令。從指令執(zhí)行的時間來看,單機器周期指令64條,雙機器周期指令45條,四機器周期指令2條。

MCS-51單片機的指令系統(tǒng)共有33個功能,用匯編語言編程時,只需44個助記符。(1)、數(shù)據(jù)傳送類指令(29條)(2)、算術運算類指令(24條)(3)、邏輯運算及移位類指令(24條)(4)、控制轉移類指令(17條)(5)、位操作類指令(17條)2、MCS-51單片機指令格式指令格式:即指令的表示方法,其內(nèi)容包括指令的長度和指令內(nèi)部信息的安排。采用助記符表示的匯編語言指令格式如下:[標號:]操作碼助記符[目的操作數(shù)],[源操作數(shù)][;注釋]

(1)一條指令中標號、操作數(shù)、注釋部分可有可無,但操作碼部分必不可少。(2)標號是程序員根據(jù)編程需要給指令設定的符號地址,標號由1~8個字符組成,不能用系統(tǒng)規(guī)定的寄存器名,也不能用指令系統(tǒng)中的助記符名稱,它的第一個字符必須是英文字,不能是數(shù)字或其它符號,標號后必須用冒號“:”。(3)操作碼表示指令的操作種類,用來規(guī)定指令進行什么操作,常用操作碼的英文名稱或縮寫形式來表示,操作碼后必須有一個或多哥空格“”作間隔符。

例如:MOV表示數(shù)據(jù)傳送操作,ADD表示加法操作。(4)操作數(shù)表示指令操作的對象,它可能是一個具體的數(shù)據(jù),也可能是指出到哪里取得數(shù)據(jù)的地址或符號。一條指令中,可能沒有(RET指令),也可能有一個(CPLA指令)、兩個(MOVA,#00H指令,MOV30H,#50H指令)或三個(CJNEA,#00H,NEXT)操作數(shù)。根據(jù)操作數(shù)的位置的不同,可分為目的(左)操作數(shù)和源(右)操作數(shù),操作數(shù)之間也以逗號“,”相隔(乘法指令MULAB和除法指令DIVAB除外)。(5)注釋是對指令的解釋說明,用以提高程序的可讀性。注釋前必須加分號“;”。

(6)書寫匯編語言指令必須注意以上規(guī)則。

3、指令格式中符號意義說明

Rn:當前寄存器組的8個通用寄存器R0~R7(n=0~7)。

Ri:當前寄存器組中的2個寄存器RO,R1,可作地址指針,即間接尋址的寄存器(i=0,1)。

direct:內(nèi)部RAM的8位地址,既可以是內(nèi)部RAM的低128個單元地址(0~127),也可以是專用寄存器的單元地址或符號,如I/O端口,控制寄存器,狀態(tài)寄存器等(128~255)。

#data:包含在指令中的8位立即數(shù)。

#data16:包含在指令中的16位立即數(shù)。

addr16:表示16位目的地址,只限于在LCALL和LJMP指令中使用,目的地址范圍是64KB的程序存儲器地址空間。

addr11:表示11位目的地址,只限于在ACALL和AJMP指令中使用,目的的地址必須存放在與下一條指令第一個字節(jié)同一個2KB程序存儲器地址空間之內(nèi)。

Rel:相對轉移指令中的偏移量,為8位帶符號補碼數(shù)。

DPTR:數(shù)據(jù)指針,可用作16位的地址寄存器。

Bit:內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺弧?/p>

A:累加器(直接尋址方式的累加器表示為Acc)

B:B寄存器,用于MUL和DIV指令中。

C:進位標志位或布爾處理機中的累加位。

@:為間址寄存器或基址寄存器的前綴標志。

/:位操作數(shù)的前綴,表示對該位狀態(tài)取反。(X):某寄存器或某單元中的內(nèi)容。

((X)):由X間接尋址的單元中的內(nèi)容。←:表示將箭頭右邊的內(nèi)容傳送至箭頭的左邊。3.280C51單片機指令尋址方式

MCS-51單片機指令系統(tǒng)中的大多數(shù)指令執(zhí)行時都需要使用操作數(shù),而在單片機中只有指定了操作數(shù)的存儲單元才能得到操作數(shù),因此,要得到操作數(shù),就只需找到操作數(shù)存放的單元即可。所謂尋址方式:即如何確定參與操作的數(shù)的真正單元。根據(jù)操作數(shù)單元指定方法的不同,就有了不同的尋址方式。

MCS-51單片機共有7種尋址方式。由于指令中的操作數(shù)有目的(左)操作數(shù)和源(右)操作數(shù)之分,因此,在講解尋址方式時,均以源(右)操作數(shù)為例。(1)寄存器尋址方式

a)、寄存器尋址就是指操作數(shù)在寄存器中,因此,指定了寄存器就得到了操作數(shù)。

b)寄存器尋址的指令中,以符號名稱來表示寄存器。例:假設原來(A)=30H,(R1)=40H,現(xiàn)執(zhí)行指令MOVA,R1;指令功能:將R1中的內(nèi)容(操作數(shù))送A中;

指令執(zhí)行過程:A←(R1);

指令執(zhí)行結果:(A)=(R1)=40H。

c)尋址范圍:1)當前工作寄存器組R0~R7;

2)部分專用寄存器A,AB,DPIR等。例:MOVP1,A;將累加器A的內(nèi)容送到P1口

MOVP1,R4;將寄存器R4的內(nèi)容送到P1口

CLRA;將累加器A清0CPLA;將累加器A中的內(nèi)容取反

MULAB;將累加器A的內(nèi)容與寄存器B的內(nèi)容相乘(2)直接尋址方式

a)直接尋址即指令所需的操作數(shù)直接以操作數(shù)存放的單元地址的形式給出。例:假設內(nèi)部RAM3AH單元的內(nèi)容是88H,累加器A的內(nèi)容是10H,現(xiàn)執(zhí)行指令MOVA,3AH。指令功能:將3AH中的內(nèi)容(操作數(shù))送A中;

指令執(zhí)行過程:A←(3AH);指令執(zhí)行結果:(A)=(3AH)=88H。

b)采用直接尋址的指令一般是雙字節(jié)或三字節(jié)指令。

c)直接尋址是訪問專用寄存器的唯一方法。

d)尋址范圍:

1)內(nèi)部RAM低128個單元,低128單元地址在指令中須以直接單元地址形式給出;

2)專用寄存器,專用寄存器除以單元地址形式給出外,還可以以寄存器符號的形式給出。例:MOVP1,20H;將內(nèi)部RAM20H單元的內(nèi)容傳送到P1口

MOVA,P0;將P0口的內(nèi)容傳送到AMOVA,80H;將P0口的內(nèi)容傳送到A(3)寄存器間接尋址方式

a)寄存器間接尋址是指指令所需的操作數(shù)是通過寄存器間接得到的,寄存器中存放的則是操作數(shù)存放的單元地址。例:假設內(nèi)部RAM3AH單元的內(nèi)容是65H,寄存器R0的內(nèi)容是3AH,現(xiàn)執(zhí)行指令MOVA,@R0。指令功能:先將R0的內(nèi)容3AH作為內(nèi)部RAM的單元地址,再將內(nèi)部RAM單元地址為3AH中的內(nèi)容65H(操作數(shù))送A中。

指令執(zhí)行過程:A←((R0))或A←(3AH)指令執(zhí)行結果:(A)=((R0))=(3AH)=65H。

b)間址寄存器:R0、R1、DPTR、SP。

指令中應在間址寄存器名之前加前綴@,SP除外。

c)尋址范圍:

1)內(nèi)部RAM低128單元,可使用R0,R1作間址寄存器,其通用形式為@Ri(I=0或1)。例:MOVA,@R1;將R1指示的地址單元中內(nèi)容傳送至A中。假設(R1)=40H,(40H)=90H,即把內(nèi)部RAM中40H單元中的內(nèi)容90H送到A。

2)外部(片外)RAM64KB單元,可使用DPTR作間址寄存器,其形式為@DPTR。例:MOVXA,@DPTR;將DPTR指示的外部RAM地址單元中的內(nèi)容傳送至A。假設(DPTR)=1000H,(1000H)=80H,即把外部RAM1000H單元中的內(nèi)容80H送到A。

3)外部(片外)RAM的低256單元(0000H~00FFH),它是一個特殊的尋址區(qū),既可以使用DPTR作間址寄存器尋址,也可以使用R0或R1作間址寄存器尋址。例:假設外部RAM0020H單元中的內(nèi)容是45H,現(xiàn)需將其送A中。

MOVDPTR,#0020H;MOVXA,@DPTR

或MOVR0,#20H;MOVXA,@R0;

4)在執(zhí)行堆棧操作指令(PUSH,POP)時,也算為寄存器間接尋址,即以堆棧指針(SP)作間址寄存器的間接尋址方式。

例:PUSHACC;將A中的內(nèi)容壓入堆棧

POPACC;將堆棧中的內(nèi)容彈出,送到A(4)立即尋址方式

a)立即尋址即指令所需的操作數(shù)已在指令中直接給出。通常,把直接出現(xiàn)在指令中的操作數(shù)稱之為立即數(shù)。為了與直接尋址指令中的直接單元地址相區(qū)別,一般應在立即數(shù)前面加“#”標志。

b)采用立即尋址的指令,一般為雙字節(jié)。第一個字節(jié)為指令的操作碼,第二個字節(jié)為立即數(shù)。

c)尋址范圍:程序存儲器空間。

例:MOVA,#40H;指令功能:將程序存儲器中某單元的內(nèi)容3AH(立即數(shù))送A中

指令執(zhí)行過程:A←3AH

指令執(zhí)行結果:(A)=3AHd)除8位立即數(shù)外,MCS-51指令系統(tǒng)中還有一條16位立即尋址指令,即:MOVDPTR,#data16,其功能是把16位立即數(shù)送數(shù)據(jù)指針DPTR。

例:MOVDPTR,#1000H;指令功能:將程序存儲器中某單元的內(nèi)容1000H(立即數(shù))送DPTR中

MOVP1,#55H ;將立即數(shù)55H送P1口

MOV 20H,#55H ;將立即數(shù)55H送20H單元

MOV R0,#20H;將立即數(shù)20H送寄存器R0(5)變址尋址方式

a)變址尋址用于訪問程序存儲器中的常數(shù)或數(shù)據(jù)表格。變址尋址即是以DPTR或PC作為基址寄存器,以累加器A為變址寄存器,并以兩者的內(nèi)容相加形成16位地址作為目的操作數(shù)地址,以達到訪問程序存儲器中的常數(shù)或數(shù)據(jù)表格的目的。

b)尋址范圍:程序存儲器空間。

c)指令數(shù)目:三條,均為一字節(jié)指令

MOVCA,@A+DPTR;指令執(zhí)行過程:A←((A)+(DPTR))

指令執(zhí)行結果:(A)=((A)+(DPTR))

MOVCA,@A+PC;指令執(zhí)行過程:A←((A)+(PC))指令執(zhí)行結果:(A)=((A)+(PC))

JMP@A+DPTR

指令執(zhí)行過程:PC←((A)+(DPTR))指令執(zhí)行結果:(PC)=((A)+(DPTR))

d)注意:三條指令中A的內(nèi)容均為8位二進制無符號數(shù)。

(6)位尋址方式

a)位尋址即對二進制數(shù)據(jù)位進行尋址。

b)尋址范圍:

1)、內(nèi)部RAM中的位尋址區(qū)(單元地址20H~2FH),128個位,位地址是00H~7FH。位地址區(qū)中的位有兩種表示方法:

直接使用位地址表示;單元地址加位數(shù)表示例:MOVC,20H;將位地址為20H的位狀態(tài)傳送給累加位C。

例:MOVC,24H.0;將位地址為20H的位狀態(tài)傳累加位C。例:SETB3DH;將內(nèi)部RAM位尋址區(qū)中的3DH位置1。假設內(nèi)部RAM27H單元的內(nèi)容是00H,執(zhí)行SETB3DH后,由于3DH對應內(nèi)部RAM27H的第5位,因此該位變?yōu)?,也就是27H單元的內(nèi)容變?yōu)?0H。該指令的執(zhí)行過程如圖所示。

2)、專用寄存器的可尋址位可供位尋址的專用寄存器有11個,PSW,IPIE,PO,P1,P2,P3,SCON,A,TCON,B,實有可尋址位83位。專用寄存器的可尋址位有四種表示方法:

直接使用位地址表示例:MOVC,D5H;將PSW中位地址為D5H的位狀態(tài)傳給累加位C

單元地址加位數(shù)表示例:MOVC,D0H.5;將PSW中位地址為D5H的位狀態(tài)傳給累加位C

位名稱表示例:MOVC,F(xiàn)0;將PSW中位地址為D5H的位狀態(tài)傳給累加位C

專用寄存器符號加位數(shù)表示例:MOVC,PSW.5;將PSW中位地址為D5H的位狀態(tài)傳給累加位C(7)相對尋址方式

a)相對尋址是為解決程序轉移而設置的,為轉移指令所用。

相對尋址是將程序計數(shù)器PC的當前值與指令中給出的地址偏移量(rel)相加,其和為轉移指令的目的地址。注意:PC當前值是指執(zhí)行完該轉移指令后的PC值,即轉移指令的PC值加上轉移指令的字節(jié)數(shù)。轉移指令轉移到的目的地址=轉移指令PC當前值+偏移量rel=轉移指令首地址+轉移指令字節(jié)數(shù)+rel。偏移量rel是一個帶符號的8位二進制補碼數(shù),所能表示數(shù)的范圍為-128~+127。

b)尋址范圍:程序存儲器空間具體地說,相對轉移是以轉移指令所在地址為基點,向前(地址增加方向)最大可轉移(127+轉移指令字節(jié)數(shù))個單元地址,向后(地址減少方向)最大可轉移(128-轉移指令字節(jié)數(shù))個單元地址。3.380C51單片機指令分類介紹

MCS-51單片機指令系統(tǒng)包括111條指令,按功能可以劃分為以下5類:數(shù)據(jù)傳送類指令(29條);

算術運算類指令(24條);邏輯運算類指令(24條);控制轉移類指令(17條);位操作類指令(17條);3.3.1數(shù)據(jù)傳送類指令

a)指令數(shù)目:29條;

b)指令通用格式:助記符操作碼目的操作數(shù),源操作數(shù);

c)指令功能:數(shù)據(jù)傳送,屬于數(shù)據(jù)復制性質(zhì);

d)助記符類型(8種):

MOV,MOVC,MOVX

XCH,XCHD,SWAP,PUSH,POPe)尋址方式源操作數(shù):寄存器,寄存器間接、直接、立即、變址尋址;目的操作數(shù):寄存器,寄存器間接、直接尋址1、內(nèi)部RAM數(shù)據(jù)傳送指令組

a)立即數(shù)傳送指令指令格式相應操作操作結果說明MOVA,#dataA←data(A)=dataMOVdirect,#datadirect←data(direct)=dataMOVRn,#dataRn←data

(Rn

)=datan=0~7MOV@Ri,#data(Ri)←data((Ri))=datai=0,1MOVDPTR,#data16DPTR←data16(DPTR)=data16例:MOVA,#20H;指令執(zhí)行后(A)=20H例:MOV20H,#20H;指令執(zhí)行后(20H)=20H例:MOVSP,#60H;指令執(zhí)行后(SP)=60H例:MOVB,#30H;指令執(zhí)行后(B)=30H例:MOVR1,#20H;指令執(zhí)行后(R1)=20H例:MOVR0,#20H;指令執(zhí)行后(R0)=20HMOV@R0,#30H;指令執(zhí)行后((R0))=30H或(20H)=30H例:MOVDPTR,#1020H;指令執(zhí)行后(DPTR)=1020H;(DPH)=10H,(DPL)=20H

本指令是三字節(jié)指令,第一個字節(jié)是操作碼信息,第二、第三字節(jié)分別是操作數(shù)(立即數(shù))的高、低8位信息,其二進制目標代碼存放格式如下:操作碼10010000程序存儲器立即數(shù)高8位(DPH)00010000立即數(shù)低8位(DPL)00100000

b)內(nèi)部RAM單元之間的數(shù)據(jù)傳送指令指令格式相應操作操作結果MOVdirect2,direct1direct2←(direct1)(direct2)=(direct1)MOVdirect,Rndirect←(Rn)(direct)=(Rn)MOVRn,directRn←(direct)(Rn)=(direct)MOVdirect,@Ridirect←((Ri))(direct)=((

Ri))MOV@Ri,direct(Ri)←(direct)((Ri))=(direct)例:MOV30H,20H;指令執(zhí)行后(30H)=(20H)例:MOVP1,20H;指令執(zhí)行后(P1)=(20H)例:MOVP2,P0;指令執(zhí)行后(P2)=(P0)例:MOV40H,P3;指令執(zhí)行后(40H)=(P3)例:MOV0A0H,R7;指令執(zhí)行后(P2)=(R7)例:MOVPSW,R1;指令執(zhí)行后(PSW)=(R1)例:MOVR2,20H;指令執(zhí)行后(R2)=(20H)例:MOVR3,B;指令執(zhí)行后(R3)=(B)例:MOV40H,@R0;指令執(zhí)行后(40H)=((R0))例:MOVP0,@R1;指令執(zhí)行后(P0)=((R1))例:MOV@R0,0A0H;指令執(zhí)行后((R0))=(P2)例:MOV@R1,30H;指令執(zhí)行后((R1))=(30H)

c)通過累加器的數(shù)據(jù)傳送指令指令格式相應操作操作結果MOVA,RnA←(Rn)(A)=(Rn)MOVRn,ARn←(A)(Rn)=(A)MOVA,directA←(direct)(A)=(direct)MOVdirect,Adirect←(A)(direct)=(A)MOVA,@Ri

A←((Ri))(A)=((Ri))MOV@Ri,A(Ri)←(A)((Ri))=(A)例:MOVA,R0;

指令執(zhí)行后(A)=(R0)例:MOVR3,A;指令執(zhí)行后(R3)=(A)例:MOVA,B;

指令執(zhí)行后(A)=(B)例:MOVA,40H;指令執(zhí)行后(A)=(40H)例:MOVPSW,A;指令執(zhí)行后(PSW)=(A)例:MOV60H,A;指令執(zhí)行后(60H)=(A)例:MOVA,@R0;指令執(zhí)行后(A)=((R0))例:MOV@R1,A;指令執(zhí)行后((R1))=(A)(3)外部RAM數(shù)據(jù)傳送指令組指令格式相應操作操作結果MOVXA,@DPTRA←((DPTR))(A)=((DPTR))MOVX@DPTR,A(DPTR)←(A)((DPTR))=(A)MOVXA,@RiA←((Ri))(A)=((Ri))MOVX@Ri,A(Ri)←(A)((Ri))=(A)例:將外部RAM2000H單元的內(nèi)容20H送至A中。

MOVDPTR,#2000H;外部RAM2000H單元地址作為16位立即數(shù)送數(shù)據(jù)指針DPTRMOVXA,@DPTR;外部RAM2000H單元的內(nèi)容20H送A

(A)=((DPTR))=(2000H)=20H例:將累加器A中的內(nèi)容40H送至外部RAM4000H單元中。

MOVDPTR,#4000H;外部RAM4000H單元地址作為16位立即數(shù)送數(shù)據(jù)指針DPTRMOVX@DPTR,A;A的內(nèi)容40H送外部RAM4000H單元((DPTR))=(4000H)=(A)=40H例:將外部RAM0050H單元的內(nèi)容20H送至A中。

a)MOVDPTR,#0050H;外部RAM0050H單元地址作為16位立即數(shù)送數(shù)據(jù)指針DPTRMOVXA,@DPTR;外部RAM0050H單元的內(nèi)容20H送A

(A)=((DPTR))=(2000H)=20Hb)MOVR0,#50H;外部RAM0050H單元地址作為8位立即數(shù)送間址寄存器R0MOVXA,@R0;外部RAM0050H單元的內(nèi)容20H送A

(A)=((R0))=(50H)=20H例:將累加器A中的內(nèi)容40H送至外部RAM0050H單元中。

a)MOVDPTR,#0050H;外部RAM0050H單元地址作為16位立即數(shù)送數(shù)據(jù)指針DPTR

MOVX@DPTR,A;A的內(nèi)容40H送外部RAM0050H單元((DPTR))=(0050H)=(A)=40Hb)MOVR1,#50H;外部RAM0050H單元地址作為8位立即數(shù)送間址寄存器R1MOVX@R1,A;A的內(nèi)容40H送外部RAM0050H單元((R1))=(50H)=(A)=40H例:將內(nèi)部RAM60H單元的內(nèi)容40H送至外部RAM4000H單元中。

MOVA,60H;將60H單元的內(nèi)容40H先送A中,(A)=40HMOVDPTR,#4000H;外部RAM4000H單元地址送DPTRMOVX@DPTR,A;A的內(nèi)容40H送外部RAM4000H單元((DPTR))=(4000H)=(A)=40H例:將外部RAM4000H單元的內(nèi)容40H送至內(nèi)部RAM60H單元中。

MOVDPTR,#4000H;外部RAM4000H單元地址送DPTRMOVXA,@DPTR;外部RAM4000H單元的內(nèi)容40H送A

(A)=((DPTR))=(4000H)==40HMOV60H,A;將A的內(nèi)容40H送60H單元,(60H)=40H例:將外部RAM4000H單元內(nèi)容40H送至外部RAM0050H單元中。

MOVDPTR,#4000H;外部RAM4000H單元地址送DPTRMOVXA,@DPTR;外部RAM4000H單元的內(nèi)容40H送A

(A)=((DPTR))=(4000H)=40HMOVR0,#50H;外部RAM0050H單元地址送間址寄存器R0MOVX@R0,A;外部RAM(0050H)=(A)=40H例:將內(nèi)部RAM60H單元內(nèi)容40H送至內(nèi)部RAM50H單元中。

a)MOV50H,60H;內(nèi)部RAM60H單元內(nèi)容40H送至內(nèi)部RAM50H單元中,(50H)=(60H)=40Hb)MOVA,60H;先將內(nèi)部RAM60H單元內(nèi)容40H送A,(A)=40HMOV50H,A;再將A的內(nèi)容送內(nèi)部RAM50H單元,(50H)=40H注意:

1)外部RAM與外部RAM單元之間、外部RAM與內(nèi)部RAM單元之間的數(shù)據(jù)傳送必須采用寄存器間接尋址的方式,而且必須通過累加器A進行;

2)MCS-51指令系統(tǒng)中沒有專用的存儲器讀寫指令,實際上外部數(shù)據(jù)存儲器數(shù)據(jù)傳送指令就是外部RAM的讀寫指令;

3)內(nèi)部RAM單元之間的數(shù)據(jù)傳送可有多種尋址方式。(4)程序存儲器數(shù)據(jù)傳送指令組程序存儲器數(shù)據(jù)傳送指令組既可用于內(nèi)部程序存儲器,也可用于外部程序存儲器。程序存儲器數(shù)據(jù)傳送指令組的指令只有兩條,均為單字節(jié)指令,采用變址尋址方式。數(shù)據(jù)只能從程序存儲器單向讀出,而且也必須通過累加器A進行傳送。

MOVCA,@A+DPTR;

MOVCA,@A+PC

這兩條指令用于訪問程序存儲器中的數(shù)據(jù)表格,因此也稱之為查表指令。其功能非常重要,將在第四章匯編語言程序設計中講解。(5)數(shù)據(jù)交換指令組數(shù)據(jù)交換主要在內(nèi)部RAM單元與A之間、A的高、低4位之間進行,有整字節(jié)和半字節(jié)兩種交換。指令類型指令格式相應操作整字節(jié)交換XCHA,

Rn(A)?(Rn)XCHA,direct(A)?(direct)XCHA,@Ri(A)?((Ri))半字節(jié)交換XCHDA,@Ri(A)3~0?((Ri))3~0A高低半字節(jié)交換SWAPA(A)3~0?(A)7~4例:假設(A)=38H,(R0)=54H,執(zhí)行指令XCHA,R0;結果為(A)=54H,(R0)=38H。例:假設(A)=88H,(30H)=45HH,執(zhí)行指令XCHA,30H;

結果為(A)=45H,(30H)=88H。例:假設(A)=34H,(R1)=50H,(50H)=56H,執(zhí)行指令XCHA,@R1;

結果為(A)=56H,((R1))=(50H)=34H。例:假設(A)=34H,(R1)=50H,(50H)=56H,執(zhí)行指令XCHDA,@R1;

結果為(A)=36H,((R1))=(50H)=54H。例:假設(A)=34H,執(zhí)行指令SWAPA;結果為(A)=43H。思考題:分析下列程序段執(zhí)行的過程及結果:假設內(nèi)部RAM2AH、2BH單元中連續(xù)存放有4個BCD碼(1個BCD碼占4個二進制位)2AH單元2BH單元a3a2a1a0

MOVR0,#2AH;

MOVA,@R0;

SWAPA;

MOV@R0,A;

MOVR1,#2BH;

MOVA,@R1;

SWAPA;

XCHA,@R0;

MOV@R1,A;程序段執(zhí)行后的最終結果:(2AH)=;(2BH)=;(A)=;思考題:解

MOVR0,#2AH;(R0)=2AHMOVA,@R0;(A)=a3a2SWAPA;(A)=a2a3MOV@R0,A;((R0))=(2AH)=a2a3MOVR1,#2BH;(R1)=2BHMOVA,@R1;(A)=a1a0SWAPA;(A)=a0a1XCHA,@R0;(A)=a2a3,((R0))=(2AH)=a0a1MOV@R1,A;((R1))=(2BH)=(A)=a2a3程序段執(zhí)行后的最終結果:(2AH)=a0a1

;(2BH)=a2a3

;(A)=a2a3

;(6)堆棧操作指令組堆棧操作指令組只有兩條指令:進棧指令和出棧指令。

a)進棧指令:PUSHdirect;功能:為內(nèi)部RAM低128單元或?qū)S眉拇嫫鲀?nèi)容送至棧頂單元。

指令操作過程:SP←(SP)+1;(SP)←(direct)

b)出棧指令:POPdirect;

功能:棧頂單元內(nèi)容送內(nèi)部RAM低128單元或?qū)S眉拇嫫鳌?/p>

指令操作過程:direct←((SP));(SP)←(SP)-1

注意:進棧指令和出棧指令均采用寄存器間接尋址方式,間址寄存器是SP,例:將片外RAM2500H單元的內(nèi)容88H送到片內(nèi)RAM40H單元,MOVDPTR,#2500H;(DPTR)=2500HMOVXA,@DPTR;(A)=((DPTR))=88HMOVSP,#60H;(SP)=60HPUSHACC;(SP)=61H,(61H)=88HPOP40H;(40H)=88H,(SP)=60H例:分析以下程序段的執(zhí)行結果

MOVSP,#60H;(SP)=60HMOVA,#30H;(A)=30HMOVB,#40H;(B)=40HPUSHACC;

PUSHBPOPDPH;

POPDPL;執(zhí)行結果:(DPH)=

(DPL)=例:單片機應用系統(tǒng)程序設計時,經(jīng)常需要用到中斷服務程序和各類子程序,在執(zhí)行中斷服務程序和子程序前,常常需要把程序狀態(tài)寄存器PSW、累加器A、數(shù)據(jù)指針DPTR的內(nèi)容保護起來(現(xiàn)場進棧保護),在中斷服務程序和子程序執(zhí)行結束之前,再恢復它們的內(nèi)容(現(xiàn)場出?;謴停?。以下程序段可實現(xiàn)上述功能。

MOVSP,#60H;

PUSHPSW;

PUSHACC;

PUSHDPL;

PUSHDPH;

…………………………

POPDPH;

POPDPL;

POPACC;

POPPSW;注意:堆棧深度、堆棧平衡,數(shù)據(jù)進棧、出棧的先后次序。3.3.2算術運算類指令

a)指令數(shù)目:24條;

b)指令通用格式:助記符操作碼目的操作數(shù),源操作數(shù);

c)指令功能:數(shù)據(jù)算術運算(加減乘除),此類指令對程序狀態(tài)字PSW的進位位(CY),輔助進位位(AC),溢出位(OV)三種標志位有影響,即對它們自動置位或復位,但是,加1和減1指令不影響這些標志;

d)助記符類型(8種):

ADD、ADDC、SUBB、INC、DEC、DA、MUL、DIVe)注意:算術運算類指令都是針對8位二進制無符號數(shù)的。(1)加法指令組指令格式相應操作操作結果ADDA,

RnA←(A)+(Rn)(A)=(A)+(Rn)ADDA,directA←(A)+(direct)(A)=(A)+(direct)ADDA,@RiA←(A)+((Ri))(A)=(A)+((Ri))ADDA,#dataA←(A)+data(A)=(A)+data

a)將A中的數(shù)與源操作數(shù)所指出的內(nèi)容相加,其相加結果仍存在A中。

b)8位二進制數(shù)加法運算指令的一個加數(shù)總是累加器A。

c)運算影響PSW的位狀態(tài)相加過程中,若位3有進位,則AC置1,否則,AC清0,若位7有進位,則CY置1,否則,CY清0。

d)、對于無符號數(shù)相加,若CY置位,說明和產(chǎn)生溢出,即大于255。

e)、對于有符號數(shù)相加,當位6或位7之中只有一位進位時,溢出標志位OV置位,說明和產(chǎn)生了溢出,結果出錯。

OV位只對有符號數(shù)加法有意義,對于無符號數(shù)加法無意義。

溢出表達式:OV=D6cy⊕D7cyD6cy:位6向位7的進位

D7cy:位7向cy的進位例:假設(A)=C2H,(R0)=A9H,執(zhí)行ADDA,R011000010

+10101001

1←01101011

OV=D6cy⊕D7cy=0⊕1=1

若C2H,A9H為無符號數(shù),則(A)=6BH,(AC)=0,(CY)=1,則表示溢出,結果大于255。若C2H,A9H為有符號數(shù),則OV=1,表示有溢出,結果出錯,因為兩個負數(shù)相加不可能得到正數(shù)的和。例:假設(A)=78H,(10H)=64H,執(zhí)行指令ADDA,10H,求兩無符號數(shù)之和,并說明PSW的有關標志位狀態(tài)。

01111000

+)0110010011011100PSW:OV=D6cy⊕D7cy=1⊕0=1,CY=0,AC=0。練習題:(A)=53H,(R0)=FCH,執(zhí)行指令:ADDA,R0

(2)帶進位加法指令組指令格式相應操作操作結果ADDCA,RnA←(A)+(Rn)+(CY)(A)=(A)+(Rn)+(CY)ADDCA,directA←(A)+(direct)+(CY)(A)=(A)+(direct)+(CY)ADDCA,@RiA←(A)+((Ri))+(CY)(A)=(A)+((Ri))+(CY)ADDCA,#dataA←(A)+data+(CY)(A)=(A)+data+(CY)

a)把源操作數(shù)所指示的內(nèi)容和A中的內(nèi)容及進位標志CY相加,結果存入A中。運算前一個加數(shù)必定在A中,運算后和存于A中。

b)此類指令運算結果同樣對PSW中相關位有影響,影響規(guī)則與加法指令組相同。

c)它一般用于多字節(jié)數(shù)的加法運算,低字節(jié)相加的和可能產(chǎn)生進位,可通過帶進位加法指令將低字節(jié)的進位加到高字節(jié)上去,高字節(jié)求和時,必須使用帶進位的加法指令。例:假設(A)=AEH,(20H)=81H,(CY)=1,求兩數(shù)之和,及PSW相關位內(nèi)容,執(zhí)行指令ADDCA,20H。

1010111010000001

+)11←00110000OV=D6cy⊕D7cy=0⊕1=1;CY=1AC=1(A)=30H練習題:假設(A)=85H,(20H)=FFH,CY=1求兩數(shù)之和,及PSW相關位內(nèi)容,執(zhí)行指令ADDCA,20H。(3)帶減位加法指令組指令格式相應操作操作結果SUBBA,RnA←(A)-(Rn)-(CY)(A)=(A)-(Rn)-(CY)SUBBA,directA←(A)-(direct)-(CY)(A)=(A)-(direct)-(CY)SUBBA,@RiA←(A)-((Ri))-(CY)(A)=(A)-((Ri))-(CY)SUBBA,#dataA←(A)-data-(CY)(A)=(A)-data-(CY)

a)把A中的內(nèi)容和源操作數(shù)所指示的內(nèi)容及進位標志CY相減,結果存入A中。運算前被減數(shù)必定在A中,運算后差存于A中。

b)此類指令運算結果同樣對PSW中相關位有影響,影響規(guī)則與加法指令組相同。其中,OV位只對有符號數(shù)減法有意義。

c)減法運算只有帶借位減法指令,而沒有不帶借位減法指令。如需進行不帶借位的減法運算,只需在用SUBB指令前先用CLRC指令把CY清0即可。例:假設(A)=C9H,(R2)=54H,(CY)=1,求兩數(shù)之差,及PSW相關位內(nèi)容,執(zhí)行指令SUBBA,R2。

11001001

01010100

-)101110100

OV=D6cy⊕D7cy=1⊕0=1

若C9H,54H為無符號數(shù),則由于CY=0,無溢出,結果正確。若C9H,54H為有符號數(shù),則由于OV=1,有溢出,結果出錯。

練習題:假設(A)=DBH,(R4)=73H,(CY)=1,求兩數(shù)之差,及PSW相關位內(nèi)容,執(zhí)行指令SUBBA,R4。(4)加1指令組指令格式相應操作操作結果INCAA←(A)+1(A)=(A)+1INCRnRn←(Rn)+1(Rn)=(Rn)+1INCdirectdirect←(direct)+1(direct)=(direct)+1INC@Ri(Ri)←((Ri))+1((Ri))=((Ri))+1INCDPTRDPTR←(DPTR)+1(DPTR)=(DPTR)+1

a)將操作數(shù)所指定單元或寄存器中的內(nèi)容加1,其結果送回原操作數(shù)單元。

b)此組指令的操作不影響PSW的狀態(tài)。

例:假設(A)=FFH,(DPTR)=10FFH,(CY)=0,執(zhí)行指令:

INCA;(A)=00H,(CY)=0INCDPTR;(DPTR)=1100H;(CY)=0(5)減1指令組指令格式相應操作操作結果DECAA←(A)-1(A)=(A)-1DECRnRn←(Rn)-1(Rn)=(Rn)-1DECdirectdirect←(direct)-1(direct)=(direct)-1DEC@Ri(Ri)←((Ri))-1((Ri))=((Ri))-1

a)將操作數(shù)所指定單元或寄存器中的內(nèi)容減1,其結果送回原操作數(shù)單元。

b)此組指令的操作不影響PSW的狀態(tài)。

c)沒有DPTR減1指令。例:假設(40H)=00H,(R1)=50H,(50H)=60H,(CY)=1執(zhí)行指令:DEC40H;(40H)=0FFH,(CY)=1DEC@R1;((R1))=(50H)=5FH,(CY)=1例:內(nèi)部RAM40H和41H單元分別存放兩個8位二進制無符號加數(shù),求兩數(shù)相加之和,和存放在內(nèi)部RAM42H單元中。假設兩數(shù)之和仍是8位二進制數(shù)。解:例:內(nèi)部RAM40H和41H單元分別存放兩個8位二進制無符號加數(shù),求兩數(shù)相加之和,和存放在內(nèi)部RAM42H單元中。假設兩數(shù)之和仍是8位二進制數(shù)。(注意比較兩種編程方法的優(yōu)劣性)解(1)MOVA,40H;(A)=(40H)

ADDA,41H;(A)=(40H)+(41H)

MOV42H,A;(42H)=(40H)+(41H)(2)MOVR0,#40H;設置數(shù)據(jù)指針,(R0)=40HMOVA,@R0;取第一個加數(shù),(A)=(40H)

INCR0;修改數(shù)據(jù)指針,(R0)=41HADDA,@R0;兩數(shù)相加(A)=(40H)+(41H)

INCR0;修改數(shù)據(jù)指針,(R0)=42HMOV@R0,A;存兩數(shù)和(42H)=(40H)+(41H)例:兩個三字節(jié)二進制無符號數(shù)相加,被加數(shù)放在內(nèi)部RAM20H~22H單元(低字節(jié)存放在低地址單元,高字節(jié)存放在高地址單元,即低位在前,高位在后),加數(shù)放在2AH~2CH單元,和放在20H~22H單元,最高位如有進位,則放在23H單元中。解:數(shù)據(jù)類型(二、十進制數(shù),有、無符號數(shù));數(shù)據(jù)結構(升、降序排列)被加數(shù)(N1)加數(shù)(N2)和(N3)20H單元低字節(jié)(8位)2AH單元低字節(jié)(8位)20H單元低字節(jié)(8位)21H單元中字節(jié)(8位)2BH單元中字節(jié)(8位)21H單元中字節(jié)(8位)22H單元高字節(jié)(8位)2CH單元高字節(jié)(8位)22H單元高字節(jié)(8位)23H單元進位位被加數(shù)(N1)高字節(jié)(8位)中字節(jié)(8位)低字節(jié)(8位)加數(shù)(N2)高字節(jié)(8位)中字節(jié)(8位)低字節(jié)(8位)被加數(shù)N1高字節(jié)(8位)中字節(jié)(8位)低字節(jié)(8位)加數(shù)N2高字節(jié)(8位)中字節(jié)(8位)低字節(jié)(8位)

+)進位位(CY)進位位(CY)進位位(CY)

和N3進位高字節(jié)(8位)中字節(jié)(8位)低字節(jié)(8位)

MOVA,20H;(A)=被加數(shù)N1低字節(jié)

ADDA,2AH;(A)=被加數(shù)N1低字節(jié)+加數(shù)N2低字節(jié)

低字節(jié)和的進位在CY中

MOV20H,A;(20H)=和N3低字節(jié)

MOVA,21H;(A)=被加數(shù)N1中字節(jié)

ADDCA,2BH;(A)=被加數(shù)N1中字節(jié)+加數(shù)N2中字節(jié)+

低字節(jié)和的進位,中字節(jié)和的進位在CY中

MOV21H,A;(21H)=和N3中字節(jié)

MOVA,22H;(A)=被加數(shù)N1高字節(jié)

ADDCA,2CH;

MOV22H,A;(22H)=和N3高字節(jié)

MOVA,#00H;

ADDCA,#00H;高字節(jié)和的進位位處理

MOV23H,A;保存處理后的高字節(jié)和的進位思考題:

1)如果N1、N2、N3的數(shù)據(jù)結構為高字節(jié)存放在低地址單元,低字節(jié)存放在高地址單元,應如何修改程序?

2)上述程序,如果利用數(shù)據(jù)指針,采用寄存器間接尋址的方式,應如何修改程序?思考題:1)被加數(shù)(N1)高字節(jié)(8位)中字節(jié)(8位)低字節(jié)(8位)加數(shù)(N2)高字節(jié)(8位)中字節(jié)(8位)低字節(jié)(8位)解:MOVA,22H;(A)=被加數(shù)N1低字節(jié)

ADDA,2CH;(A)=被加數(shù)N1低字節(jié)+加數(shù)N2低字節(jié)低字節(jié)和的進位在CY中

MOV22H,A;(22H)=和N3低字節(jié)

MOVA,21H;(A)=被加數(shù)N1中字節(jié)被加數(shù)(N1)加數(shù)(N2)和(N3)20H單元高字節(jié)(8位)2AH單元高字節(jié)(8位)20H單元高字節(jié)(8位)21H單元中字節(jié)(8位)2BH單元中字節(jié)(8位)21H單元中字節(jié)(8位)22H單元低字節(jié)(8位)2CH單元低字節(jié)(8位)22H單元低字節(jié)(8位)1FH單元進位位

ADDCA,2BH;(A)=被加數(shù)N1中字節(jié)+加數(shù)N2中字節(jié)+

低字節(jié)和的進位,中字節(jié)和的進位在CY中

MOV21H,A;(21H)=和N3中字節(jié)

MOVA,20H;(A)=被加數(shù)N1高字節(jié)

ADDCA,2AH;(A)=被加數(shù)N1高字節(jié)+加數(shù)N2高字節(jié)+

中字節(jié)和的進位,高字節(jié)和的進位在CY中

MOV20H,A;(20H)=和N3高字節(jié)

ADDCA,#00H;高字節(jié)和的進位位處理

MOV1FH,A;保存處理后的高字節(jié)和的進位思考題:2)解:MOVR0,#20H;設置被加數(shù)N1數(shù)據(jù)指針,(R0)=20HMOVR1,#2AH;設置加數(shù)N2數(shù)據(jù)指針,(R1)=2AHMOVA,@R0;取被加數(shù)N1低字節(jié),(A)=(20H)

ADDA,@R1;N1低字節(jié)和N2低字節(jié)相加

MOV@R0,A;和的低字節(jié)存于20HINCR0;修改N1數(shù)據(jù)指針,(R0)=21HINCR1;修改N2數(shù)據(jù)指針,(R1)=2BHMOVA,@R0;取被加數(shù)N1中字節(jié),(A)=(21H)

ADDCA,@R1;N1、N2中字節(jié)、低字節(jié)進位相加

MOV@R0,A;和的中字節(jié)存于21HINCR0;修改N1數(shù)據(jù)指針,(R0)=22H

INCR1;修改N2數(shù)據(jù)指針,(R1)=2CHMOVA,@R0;取被加數(shù)N1高字節(jié),(A)=(22H)

ADDCA,@R1;N1、N2高字節(jié)、中字節(jié)進位相加

MOV@R0,A;和的高字節(jié)存于22HADDCA,#00H;高字節(jié)和的進位位處理

INCR0;

MOV@R0,A;保存處理后的高字節(jié)和的進位

思考題:

3)上述程序,如果改變N1、N2、N3的數(shù)據(jù)結構(高字節(jié)存放在低地址單元,低字節(jié)存放在高地址單元),應如何修改程序?被加數(shù)(N1)加數(shù)(N2)和(N3)20H單元高字節(jié)(8位)2AH單元高字節(jié)(8位)20H單元高字節(jié)(8位)21H單元中字節(jié)(8位)2BH單元中字節(jié)(8位)21H單元中字節(jié)(8位)22H單元低字節(jié)(8位)2CH單元低字節(jié)(8位)22H單元低字節(jié)(8位)1FH單元進位位思考題:3)解:MOVR0,#22H;設置被加數(shù)N1數(shù)據(jù)指針,(R0)=22HMOVR1,#2CH;設置加數(shù)N2數(shù)據(jù)指針,(R1)=2CHMOVA,@R0;取被加數(shù)N1低字節(jié),(A)=(22H)

ADDA,@R1;N1低字節(jié)和N2低字節(jié)相加

MOV@R0,A;和的低字節(jié)存于22HDECR0;修改N1數(shù)據(jù)指針,(R0)=21HDECR1;修改N2數(shù)據(jù)指針,(R1)=2BH

MOVA,@R0;取被加數(shù)N1中字節(jié),(A)=(21H)

ADDCA,@R1;N1、N2中字節(jié)、低字節(jié)進位相加

MOV@R0,A;和的中字節(jié)存于21HDECR0;修改N1數(shù)據(jù)指針,(R0)=20HDECR1;修改N2數(shù)據(jù)指針,(R1)=2AHMOVA,@R0;取被加數(shù)N1高字節(jié),(A)=(20H)

ADDCA,@R1;N1、N2高字節(jié)、中字節(jié)進位相加

MOV@R0,A;和的高字節(jié)存于20HADDCA,#00H;高字節(jié)和的進位位處理

DECR0;

MOV@R0,A;保存處理后的高字節(jié)和的進位(6)乘除指令組

a)乘法指令

MULAB1)實現(xiàn)兩個8位無符號二進制數(shù)的乘法操作,被乘數(shù)在A中,乘數(shù)在B中,乘積為16位,高8位送B,低8位送A。

2)此指令影響PSW的狀態(tài),CY位總被清0,當乘積大于255,則OV=1,否則清0。

例:(A)=4EH,(B)=5DH,執(zhí)行指令MULAB

01001110

×)010111011110001010110

∴(B)=1CH(A)=56H,OV=1,CY=0

b)乘法指令DIVAB1)實現(xiàn)兩個8位無符號二進制數(shù)除法,被除數(shù)在A,除數(shù)在B,A←商,B←余數(shù)。

2)此指令影響PSW位狀態(tài),CY位總被清0。當除數(shù)為0(B=0)OV=1,表示除法沒有意義。例:(A)=11H,(B)=04H,執(zhí)行指令DIVAB

其結果(A)=01H,B=1,CY=OV=0(7)十進制調(diào)整指令DAA

指令功能:用于對BCD碼十進制數(shù)加法運算的結果進行修正。

a)十進制調(diào)整問題指令系統(tǒng)中,只有針對二進制數(shù)的加法指令(ADD、ADDC),而沒有專門用于十進制數(shù)(BCD碼)的加法指令,因此,十進制數(shù)(BCD碼)的加法運算只能借助于二進制數(shù)的加法指令,但二進制數(shù)加法指令不能完全適用于十進制數(shù)(BCD碼)加法運算。

6+3=98+7=158+9=17011010001000

+)0011

+)0111

+)1001100111111←0001

(9)(11)

12+34=4618+26=4471+64=13595+87=18200010010000110000111000110010101+)00110100

+)00100110

+)01100100

+)100001110100011000111110110101011←00011100

(46)

b)出錯原因

BCD碼是4位二進制編碼,4位二進制數(shù)共有16個編碼,但BCD碼只用了其中10個(0000~1001),剩下6個(1010~1111)沒用,為無效碼。

在BCD碼加法運算中,凡結果進入或者跳過無效編碼區(qū)時,其結果就是錯誤的。

c)調(diào)整方法:

1)1位BCD碼加法運算出錯調(diào)整

1位BCD碼加法運算出錯情況有兩種:相加結果大于9,進入無效編碼區(qū);相加結果有進位(AC),跳過無效編碼區(qū)。以上兩種情況均使相加結果比正確值小6,調(diào)整方法就是加6。

6+3=98+7=158+9=17011010001000

+)0011

+)0111

+)1001100111111←0001

+)0110(6)

+)0110(6)

1←0101(15)1←0111(17)

2)2位(字節(jié))BCD碼加法運算出錯調(diào)整

2位(字節(jié))BCD碼加法運算出錯情況有三種:相加結果高4位或低4位大于9,進入無效編碼區(qū);相加結果高4位或低4位產(chǎn)生進位,跳過無效編碼區(qū);相加結果高4位為9,低4位大于9,這樣低位加6修正時產(chǎn)生的進位會使高位大于9,進入無效編碼區(qū)。A的低4位大于9或(AC)=1,則進行低4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論