微型計算機系統(tǒng)原理及應用 第二章 指令系統(tǒng)_第1頁
微型計算機系統(tǒng)原理及應用 第二章 指令系統(tǒng)_第2頁
微型計算機系統(tǒng)原理及應用 第二章 指令系統(tǒng)_第3頁
微型計算機系統(tǒng)原理及應用 第二章 指令系統(tǒng)_第4頁
微型計算機系統(tǒng)原理及應用 第二章 指令系統(tǒng)_第5頁
已閱讀5頁,還剩139頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微型計算機系統(tǒng)原理及應用第二章指令系統(tǒng)第2章微型計算機指令系統(tǒng)2.1尋址方式2.28086指令系統(tǒng)2一、概述指令:指令是指示計算機完成特定操作的命令指令系統(tǒng):指令系統(tǒng)是計算機能夠執(zhí)行全部命令的集合,它取決于計算機的硬件設計。指令系統(tǒng)因機而異,沒有通用性。指令中應包含的信息:執(zhí)行的運算運算結果的去向運算數(shù)據(jù)的來源3指令格式:操作碼[操作數(shù)],[操作數(shù)]執(zhí)行何種操作目的操作數(shù)源操作數(shù)參加操作的數(shù)據(jù)源操作數(shù):指令加工之前的數(shù)據(jù)目的操作數(shù):指令加工之后形成的數(shù)據(jù)4指令中的操作數(shù)表征方法:

表征參加操作的數(shù)據(jù)本身立即數(shù)

表征數(shù)據(jù)存放的地址寄存器存儲器5指令中的操作數(shù)表征方法:

表征參加操作的數(shù)據(jù)本身立即數(shù)

表征數(shù)據(jù)存放的地址寄存器存儲器61、立即數(shù)操作數(shù):表示參加操作的數(shù)據(jù)本身,可以是8位或16位例:MOVAX,1234H;AX1234HMOVBL,22H注意:1)立即數(shù)只能用作源操作數(shù),如

MOVAL,86H∨

MOV86H,AL× 2)立即數(shù)必須和其他操作數(shù)位數(shù)相等

MOVAL,3456H×

MOVAX,34H∨ 3)立即數(shù)不能直接送段寄存器72、寄存器操作數(shù):表示參加運算的數(shù)存放在指令給出的寄存器中,可以是16位或8位。例:MOVAX,BXMOVDL,CH83、存儲器操作數(shù)表示當前參加運算的操作數(shù)存放在內(nèi)存數(shù)據(jù)區(qū)中,指令中直接或間接的給出此操作數(shù)的地址。操作數(shù)的物理地址=段地址+偏移地址=段基址×16+偏移地址段基址一般由數(shù)據(jù)段寄存器DS的內(nèi)容來確定;段內(nèi)偏移地址(有效地址EA)由指令的操作數(shù)部分指明。EA是不帶符號的16位數(shù),表示操作數(shù)所在地址與所在段的首址之間的字節(jié)距離。9例:MOVAX,[1200H] MOVAL,[1200H]

MOVAL,[BX]22H11H1200H偏移地址AHAL┇

不允許源操作數(shù)和目標操作數(shù)同時為存儲器操作數(shù)注意存儲器操作數(shù)類型存儲單元個數(shù)字節(jié)字雙字1個2個4個102.1尋址方式:尋找指令中操作數(shù)所在地址的方法1.立即尋址指令操作數(shù)部分直接給出指令的操作數(shù),它與指令操作碼相接,順序存放在代碼段中。例1

:MOVAH,36H ;AH立即數(shù)36HMOVCX,2A50H ;CX立即數(shù)2A50H11注意:(1)立即數(shù)尋址方式只能用于源操作數(shù),主要用于給寄存器或存儲單元賦值。(2)立即數(shù)尋址方式不執(zhí)行總線周期,執(zhí)行速度快。2.寄存器尋址方式操作數(shù)放在寄存器內(nèi),由指令直接給出某個寄存器的名字,以寄存器的內(nèi)容作為操作數(shù)。寄存器可以是16位的AX、BX、CX、DX、SI、DI、SP、BP寄存器,也可以是8位的AH、AL、BH、BL、CH、CL、DH、DL寄存器。12例2:MOV AX,CX DEC AL 注意:

(1)寄存器尋址方式的指令操作在CPU內(nèi)部執(zhí)行,不需要執(zhí)行總線周期,執(zhí)行速度快。(2)寄存器尋址方式既適用于指令的源操作數(shù),也適用于目的操作數(shù),并且可同時用于源操作數(shù)和目的操作數(shù)。133.直接尋址方式操作數(shù)在存儲器中,指令中直接給出操作數(shù)所在存儲單元的有效地址EA,即段內(nèi)偏移地址,表示操作數(shù)所在存儲單元距離段首址的字節(jié)數(shù)。有效地址是一個無符號的16位二進制數(shù)。例3:MOV AH,[2100H];將DS段中2100H單元的內(nèi)容送給AHMOV AX,[2100H];將DS段中2100H單元的內(nèi)容送給AL;2101H單元的內(nèi)容送給AH。MOV[1000H],AH;DS:1000H←(AH)

14DS=3000HMOVAX,[2000H]15注意:(1)直接尋址方式的操作數(shù)所在存儲單元的段地址一般在數(shù)據(jù)段寄存器DS中。(2)如果操作數(shù)在其他段,則需要在指令中用段超越前綴指出相應的段寄存器名。例4:MOVAH,ES∶[2000H]將附加段寄存器ES的內(nèi)容乘16,再加上2000H作為操作數(shù)所在存儲單元的地址,取出該存儲單元的內(nèi)容送到寄存器AH中。164.寄存器間接尋址方式操作數(shù)在存儲器中,指令中寄存器的內(nèi)容作為操作數(shù)所在存儲單元的有效地址EA(偏移地址)。寄存器僅限于BX、BP,SI、DI。當使用BX、SI、DI作為間址寄存器時,操作數(shù)所在存儲單元的段地址存在數(shù)據(jù)段寄存器DS中,當使用BP時,操作數(shù)所在存儲單元的段地址存在堆棧段寄存器SS中。[SI][DI][BX][BP]EA=17MOVBX,[SI]18例5:已知:DS=2100H,DI=2000H指令:MOVAX,[DI]解:物理地址=16×DS+DI=16×2100H+2000H=23000H指令執(zhí)行結果是將23000H和23001H單元的內(nèi)容送入寄存器AX中。注意:1.只有SI,DI,BX,BP可作為間址寄存器,如

MOVAX,[CX]╳

2.若操作數(shù)所在存儲單元不在數(shù)據(jù)段DS中,需要在指令中用段超越前綴表明其所在段的段名。195.變址尋址方式操作數(shù)在存儲器內(nèi),指令將變址寄存器SI、DI內(nèi)容與指令指定的位移量之和作為操作數(shù)所在存儲單元的有效地址EA(偏移地址)。段地址規(guī)定為DS的內(nèi)容。[SI]8位或16位[DI]位移量EA=+例7:DS=3000H,SI=1000H,COUNT=2000H指令:MOVAX,COUNT[SI]

解:物理地址=16×DS+SI+16位偏移量=30000H+1000H+2000H=33000H指令執(zhí)行結果是將33000H和33001H單元的內(nèi)容送入寄存器AX中。20MOVAX,2[DI];AX←(DS:(DI)+2)MOVAX,[DI+2];AX←(DS:(DI)+2)MOVBX,COUNT[SI]216.基址尋址方式操作數(shù)在存儲器內(nèi),指令中寄存器(BX或BP)的內(nèi)容與指令指定的位移量之和作為操作數(shù)所在存儲單元的有效地址EA(偏移地址)。使用BX時,段地址為DS的內(nèi)容;使用BP時,段地址為SS的內(nèi)容。[BX]8位或16位[BP]位移量EA=+22例6:

SS=2000H,BP=1000H,COUNT=2000H(16位偏移量)指令:MOVAX,COUNT[BP]

解:物理地址=16×SS+BP+16位偏移量=20000H+1000H+2000H=23000H指令執(zhí)行結果是將23000H和23001H單元的內(nèi)容送入寄存器AX中。MOVBL,2[BX]或MOVBL,[BX+2];(DS:[BX+2])BL237.基址加變址尋址方式操作數(shù)在存儲器內(nèi)。指令將基址寄存器BX、BP與變址寄存器SI、DI的內(nèi)容之和再加上偏移量(8位或16位),得到操作數(shù)所在存儲單元的有效地址EA。當使用BX時,段寄存器為DS。當使用BP時,段寄存器為SS。[BX][SI]8位或16位[BP][DI]位移量EA=++24例8:已知:DS=2000H,BX=1000H,SI=0500H,MK=1120H指令:MOVAX,[MK+BX+SI]解:物理地址=20000H+1000H+0500H+1120H=22620H指令執(zhí)行結果是將22620H、22621H單元的內(nèi)容送入寄存器AX中。25MOVAX,[BX][SI]26例:設BX=0158H,DI=10A5H,位移量=1B57H,DS=2100H,求各尋址方式下,有效地址和物理地址。①MOVAX,[1B57H]直接尋址:②MOVAX,[BX]寄存器間接尋址(寄存器為BX):③MOVAX,[BX+1B57H]基址尋址:

有效地址=1B57H物理地址=21000H+1B57H=22B57H有效地址=0158H物理地址=21000H+0158H=21158H有效地址=0158H+1B57H=1CAFH物理地址=21000H+1CAFH=22CAFH27④MOVAX,[DI]變址尋址(寄存器為DI):

⑤MOVAX,[DI+1B57H]

變址尋址:

⑥MOVAX,[BX+DI+1B57H]基址加變址的尋址(BX為基址寄存器,DI為變址寄存器):

EA=10A5H物理地址=21000H+10A5H=220A5H

EA=10A5H+1B57H=2BFCH物理地址=21000H+2BFCH=23BFCH

EA=0158H+10A5H+1B57H=2D54H物理地址=21000H+2D54H=23D54H28尋址方式舉例例:MOVAX,1000H ;AX=1000HMOV DS,AX ;DS=1000H MOV AX,3000H ;AX=3000HMOV SS,AX ;SS=3000HMOV AX,22A0H ;AX=22A0H MOV BX,AX ;BX=22A0HMOV BP,AX ;BP=22A0HMOV SI,AX ;SI=22A0HMOV DI,AX ;DI=22A0HMOV AX,[22A0H] ;AX=2010HMOV AX,SS∶[22A0H];AX=6050H MOV AX,[BX+100H];AX=4030HMOV AX,[BP+100H] ;AX=8070HMOV AX,[DI+100H] ;AX=4030H MOV AX,[BP+DI+100H];AX=90H┇122A0H122A1H┇123A0H123A1H┇322A0H322A1H┇323A0H323A1H┇34640H34641H10H20H┇30H40H┇50H60H┇70H80H┇90H00H292.28086的指令系統(tǒng)指令系統(tǒng)包括九大類、133種基本指令,通過尋址方式的變化與數(shù)據(jù)形式(字節(jié)、字型)的組合,可構成上千條指令。指令系統(tǒng)按功能分為數(shù)據(jù)傳送類、算術運算類、邏輯運算與移位類、串操作類、控制轉移類、處理機控制類,本節(jié)將分別說明。目標:熟練掌握8086系統(tǒng)常用指令及各類尋址方式讀懂簡單的程序30數(shù)據(jù)傳送指令數(shù)據(jù)傳送類指令實現(xiàn)CPU內(nèi)部寄存器之間、CPU與存儲器之間、CPU與I/O端口之間的數(shù)據(jù)傳送。1.通用數(shù)據(jù)傳送指令包括MOV、進棧、出棧指令、交換指令和換碼指令。(1)一般數(shù)據(jù)傳送指令MOV(8位/16位)格式:MOVOP目,OP源功能:OP源 OP目

要求:OP目可以是寄存器(除CS外)、存儲器OP源可以是寄存器、存儲器和立即數(shù)3132例:MOVAL,BL;BL寄存器的內(nèi)容送AL MOVSP,2AC0H;立即數(shù)2AC0H送SP MOV[DI],AX;AX中的16位數(shù)送DI和DI+1單元

MOVSI,ES:[BP] ;附加段中BP所指向的兩個單元的內(nèi)容送SI寄存器

33注意:MOV指令的兩個操作數(shù)(源、目的)均可采用不同的尋址方式。源操作數(shù)和目的操作數(shù)的類型必須一致不允許把立即數(shù)作目的操作數(shù),也不允許向段寄存器直接送立即數(shù)。不允許在段寄存器之間、存儲器單元之間直接傳送數(shù)據(jù)。CS、IP寄存器不能用作目的操作數(shù)。MOVCS,AX╳

一般傳送指令不影響標志位。34例:判斷下列指令正確與否:

MOVAL,BLMOVCX,BX

MOVDX,34H

MOVES,AXMOV[SI],CXMOV[DI],[SI]MOV2000H,AXMOVDS,1234HMOVBX,DLMOVCS,BX35(2)堆棧操作指令堆棧:是按“先進后出”原則工作的一段存儲器區(qū)域。堆棧寄存器SS——段地址堆棧指針SP——始終指向當前棧頂所在的存儲單元地址,即最新入棧數(shù)據(jù)所在的存儲單元的地址。壓棧操作:PUSHOP功能:把OP字數(shù)據(jù)壓入棧中,結果SP-2SP原則:高字節(jié)壓在高地址,低字節(jié)壓在低地址執(zhí)行過程:SP←SP-1;[SP]←OPHSP←SP-1;[SP]←OPL36例:MOVAX,3456HPUSHAXSP-1SP,壓AH(2)SP-1SP,壓ALSP

SPSP-1SP

3456SPSP-13456AXAHAL37出棧操作:POPOP

功能:從棧中彈出數(shù)據(jù)

OP,結果SP+2SP

執(zhí)行過程:OPL←[SP];SP←SP+1OPH←[SP];SP←SP+1例:POPDX

彈出AL

DL,SP+1SP(2)彈出AH

DH,SP+1SPSP

SPSP+1SPSP+1SP

3456DXDHDL563438例:將CX的內(nèi)容壓入堆棧,然后,彈出棧頂至CX中,已知(SS)=0200H,(SP)=0008H,(CX)=12FAH。3940例:已知:AX=1122H,BX=3344H,SP=1010H執(zhí)行指令:PUSHAXPUSHBXPOP AX POPBX

執(zhí)行后AX,BX,SP的結果?解:執(zhí)行結果為AX=3344HBX=1122HSP=1010H41注意:堆棧操作總是按字(16位)進行的。操作數(shù)可以是存儲器、寄存器或段寄存器操作數(shù)(CS不能用于POP),不能是立即數(shù)。PUSHCS√POPCS×PUSH1200H×POP2300H×這兩條指令主要用來進行現(xiàn)場保護和恢復,以保證子程序調(diào)用或中斷程序的正常返回。42(3)數(shù)據(jù)交換指令(8/16位)格式:XCHGOP1,OP2

功能:實現(xiàn)OP1和OP2內(nèi)容的相互交換。操作數(shù):通用寄存器或存儲器,但不能均為內(nèi)存單元。注意:段寄存器和IP不能作為交換指令的操作數(shù)。例:XCHGAX,BX√XCHGBH,BL√XCHGAX,1122H×XCHGDS,AX×XCHG[SI],BP√XCHG[SI],[DI]×4346(4)換碼指令(查表指令、翻譯指令)格式:XLAT功能:(BX+AL)

ALEA說明:將BX和AL內(nèi)容相加作為有效地址EA,在一個表格中找出此單元中的內(nèi)容

AL中。

BX——表格的首地址

AL——相對于表格首地址的位移量(要轉換的代碼)

44例:數(shù)據(jù)段中存放有一張16進制數(shù)的ASCII碼轉換表,設首地址為2000H,查表查出第10個元素’A’的ASCII碼(設DS=4000H)。303132...394142...4546...42000H+042000H+10‘0’‘1’‘2’‘9’‘A’‘B’‘E’‘F’可用如下指令實現(xiàn):MOVBX,2000H;BX←表首地址MOVAL,0AH;AL←序號XLAT;查表轉換

執(zhí)行后得到:AL=41H452.輸入輸出指令

CPU對外設端口有兩種尋址方式,即直接尋址和間接尋址。直接尋址范圍為00H—FFH個端口;間接尋址范圍為0000H—0FFFFH共64K個端口。間接尋址時,只能用DX作間址寄存器。1.輸入指令

格式::IN累加器,端口功能:把一個字節(jié)/字由輸入端口傳送到AL/AX中.例:INAL,21H ;將端口21H的8位數(shù)讀到AL中

INAX,21H

MOVDX,201H INAL,DX

INAX,DX 462.輸出指令格式:OUT 端口,累加器功能:把AX中的16位數(shù)或AL中的8位數(shù)輸出到指定端口。例:OUT22H,AL ;將AL中的數(shù)傳到22H端口

MOVDX,511H OUTDX,AX

473.目標地址傳送指令此類指令的功能是將操作數(shù)所在存儲器的地址送入目標寄存器。注意:1.OP源必須是存儲器操作數(shù),

OP目必須是16位的通用寄存器。2.地址傳送指令不影響狀態(tài)標志位。(1)取有效地址EA指令:

格式:LEAOP目,OP源

功能:將源操作數(shù)的有效地址EA送到目的操作數(shù)。

例:LEAAX,[5678H];AX←5678H

LEA BX,[BP+SI];BX←BP+SI48┇

DATA112H34H1100H88H77HBX=1100H注意區(qū)分下列指令:LEASI,DATA1MOVSI,DATA1MOVSI,OFFSETDATA1

MOVBX,[BX]LEABX,[BX]符號地址49(2)指針送寄存器和DS指令

格式:LDSOP目,OP源功能:把OP源指定的4個字節(jié)內(nèi)容取出,低地址的兩字節(jié)

OP目,高地址的兩字節(jié)

DS。例:LDSDI,[2130H];2130H和2131H單元中的內(nèi)容

DI;2132H和2133H單元中的內(nèi)容

DS2130H2131H2132H2133HDI=1234HDS=5678H34H12H78H56H50(3)指針送寄存器和ES指令

格式:LES OP目,OP源功能:本指令與LDS指令的操作基本相同,所不同的是將OP源4個字節(jié)中高地址的兩字節(jié)

ES。例:LESDI,[2130H];2130H和2131H單元中的內(nèi)容

DI;2132H和2133H單元中的內(nèi)容

ES2130H2131H2132H2133HDI=1234HES=5678H34H12H78H56H514.標志傳送指令讀取標志指令

格式:LAHF;AH←標志寄存器低8位特點:此指令操作結果不影響標志寄存器。(2)設置標志指令

格式:SAHF;標志寄存器低8位←AH

特點:此指令直接為標志寄存器的低8位賦值。SFPFAFZFCF….AH標志寄存器D15D7D052(3)對標志寄存器的堆棧操作指令

格式:PUSHF;將標志寄存器的值壓棧。 POPF;從棧頂彈出一個字送標志寄存器。特點:1.PUSHF不影響標志寄存器,而POPF直接為標志寄存器賦值。2.通常兩指令成對出現(xiàn),用來保護和恢復標志寄存器的內(nèi)容。

532.2.2算術運算指令8086的算術運算類指令能夠對二進制或十進制(BCD碼)數(shù)進行加、減、乘、除運算,操作數(shù)的數(shù)據(jù)形式可以是8位或16位的無符號數(shù)或帶符號數(shù)。1.加法指令加法指令對操作數(shù)的要求與MOV指令相同(1)不帶進位的加法指令:格式:ADDOP目,OP源;

功能:OP目←OP源+OP目,根據(jù)結果設置標志位例:ADDAL,50H;AL+50H

ALADDDI,SI;DI+SI

DIADDAX,[DI];((DI)+1:(DI))+AX

AXADDAX,DATA[BX]54ADD[BX+DI],AX;(BX+DI)和(BX+DI+1)2個單元的內(nèi)容+AX,結果放在BX+DI和BX+DI+1所指單元

ADDAX,[BX+2000H];BX+2000H和BX+2001H所指單元內(nèi)容和AX的內(nèi)容相加,結果在AX中注意:兩操作數(shù)的類型相同,類型明確,不能同為存儲器55例:判斷下列指令正確與否

ADDAL,BX×ADDCL,CH√ADDAX,[BX]√ADD[BX],28×ADD[BX],[SI]×ADD1000H,AX×ADD[SI],BX√ADDDS,BX×56

(2)進位的加法指令:

格式:ADCOP目,OP源;

功能:OP目←OP源+OP目+CF,置標志位CF為前面指令產(chǎn)生的CF說明:主要用于多字節(jié)運算,多字節(jié)運算時低位字節(jié)產(chǎn)生的進位應加到高位。例:ADCAX,SI;AX+SI+CF

AX例:兩個雙字(32位)相加。123FAB5H+0ABC212AH

MOVDX,0123HMOVAX,0FAB5HADDAX,212AH;先加低字,CF=1AX=1BDFHADCDX,0ABCH;高字帶進位加CF=0DX=0BE0H0123FAB5+0ABC212A0BE01BDF57(3)加1指令

格式:INCOP

功能:OP←OP+1說明:常用于修改偏移地址和計數(shù)次數(shù)。操作數(shù)可以是8/16位通用寄存器或存儲器,不能為立即數(shù)。

例:INC AL

;AL←AL+1

INCBYTEPTR[BX+DI];[BX+DI]←[BX+DI]+1INCWORDPTR[BX+DI]

例:判斷對錯INCCL√INC[DI]×INCBYTEPTR[DI]√INC2000H×58注意:①INC指令不影響CF位,影響標志位AF、OF、PF、SF和ZF。②操作數(shù)視為無符號數(shù)。總結:以上三條指令(ADD、ADC、INC)運算結果將影響狀態(tài)標志位,但INC不影響標志CF。59例:00000001+01111111=10000000以上運算可用兩條指令實現(xiàn):MOV AH,01HADD AH,7FH 二進制數(shù) 00000001+) 01111111 10000000 十六進制數(shù) 01H +) 7FH 80H視為無符號數(shù) 1+)127 128視為帶符號數(shù) +1 +)(+127) +128由結果可知:CF=0OF=1ZF=0SF=1AF=1PF=060BCD碼:二進制編碼的十進制數(shù),又稱為二—十進制數(shù)。非組合(非壓縮)BCD碼:用一個字節(jié)表示一位十進制數(shù)。組合(壓縮)BCD碼:用一個字節(jié)表示二位十進制數(shù)。000001010000001101010011例:53

非組合BCD碼組合BCD碼535361由于BCD碼是四位二進制編碼,四位二進制數(shù)共有16個編碼,BCD碼只用其中的10個,其余沒用的編碼1010~1111稱為無效碼。BCD碼運算結果進入或跳過無效碼區(qū)時,都會出現(xiàn)錯誤。為了得到正確結果,必須進行調(diào)整。例:18+27=4500011000+)0010011100111111---低4位〉9+)00000110---加6調(diào)整01000101調(diào)整原則:運算結果

9或D3(D7)向高位有進位(借位),進行加6(或減6)調(diào)整。62(4)加法的ASCII調(diào)整指令(非組合BCD碼的加法調(diào)整指令)格式:AAA功能:對AL中的由兩個非壓縮BCD碼相加的和進行調(diào)整,結果(非壓縮BCD碼)存于AX中。

調(diào)整過程:若AL的低4位大于9或AF=1,則AL←AL+6,AF←1,CF←1,AH←AH+1,AL←AL&0FH(清除AL的高四位);否則清除AL的高4位以及AF和CF標志;63(5)組合BCD碼的加法調(diào)整指令格式:DAA功能:對AL中的由兩個組合BCD碼相加的和進行調(diào)整,將結果(組合BCD碼)存于AL中。調(diào)整過程:調(diào)整方法與AAA類似,只是此指令要分別考慮AL的高4位和低4位。若AL低4位大于9或AF=1,則AL+6→AL,置AF=1;若AL高4位大于9或CF=1,則AL+60H→AL,置AF=1

注意:AAA,DAA使用時必須緊跟在ADD或ADC之后。642.減法指令(1)不帶借位的減法指令格式:SUBOP目,OP源功能:OP目←OP目-OP源,并根據(jù)結果設置標志例:

SUBBX,CX;BX-CX

BXSUBAL,[SI+2];AL-(SI+2)單元中的數(shù)

AL

SUB[BP+2],CL;將(BP+2)單元中值-CL

BP+2所指的堆棧單元中

SUBAL,20;AL-20

AL65(2)帶借位的減法指令格式:SBBOP目,OP源功能:OP目←OP目-OP源-CF,根據(jù)結果設置標志說明:主要用于多字節(jié)數(shù)據(jù)相減的運算例:SBBAX,2030H;AX-2030H-CF

AX

SBBWORDPTR[DI+2],1000H;將DI+2和DI+3所指兩單元的內(nèi)容-1000H-CF,結果存在DI+2和DI+3所指的單元66(3)減1指令

格式:DECOP

功能:OP←OP-1;根據(jù)結果置標志位,不影響CF。說明:在循環(huán)程序中常用來修改循環(huán)次數(shù)。例:DECAX;AX-1

AX

DECBL;BL-1

BLDECBYTEPTR[DI+2];將DI+2所指單元的內(nèi)容減1,結果送回此單元67(4)取補指令格式:NEGOP功能:0-OP→OP,將操作數(shù)取補后送回源操作數(shù)

OP可以是8/16位通用寄存器和存儲器操作數(shù),不能為立即數(shù)。說明:利用NEG指令可以得到負數(shù)的絕對值

例:NEGAL;0-AL

AL

MOVAX,1;AX=0001H

NEGAX;AX=0FFFFH68(5)比較指令:

格式:CMPOP目,OP源

功能:OP目-OP源,不回送結果,只根據(jù)結果置標志位。

例:CMP

AX,BX;AX-BX,根據(jù)結果置標志位CMPAL,20H;AL-20H,根據(jù)結果置標志位說明:本指令主要通過比較(相減)結果置標志位,表示兩個操作數(shù)的關系,指令執(zhí)行的結果不影響目標操作數(shù)。用途:用于比較兩個數(shù)的大小,可作為條件轉移指令轉移的條件69比較有以下幾種情況(以CMPA,B示例說明)1.判斷兩個操作數(shù)是否相等:

根據(jù)ZF判斷2.判斷兩個操作數(shù)的大小,可分兩種情況:(1)判斷兩個無符號操作數(shù)的大小:

根據(jù)CF判斷ZF=1,A=BJZZF=0,A≠BJNZCF=1,A<BJCCF=0,A≥BJNC70(2)判斷兩個帶符號操作數(shù)的大小

A.兩操作數(shù)符號相同根據(jù)SF判斷

B.兩操作數(shù)符號不同

根據(jù)SF、OF判斷

SF=1,A<BJSSF=0,A≥BJNSSF⊕OF=1,A<BSF⊕OF=0,A≥B71P82例2.9在內(nèi)存數(shù)據(jù)段從DATA開始的存儲單元中分別存放了兩個8位無符號數(shù),比較大小,將大數(shù)傳送到MAX單元。 LEABX,DATA MOVAL,[BX] INCBX CMPAL,[BX] JNCDONE MOVAL,[BX]DONE: MOVMAX,AL72(6)非組合BCD碼的減法調(diào)整指令

格式:AAS 功能:對AL中由兩個非組合BCD碼相減的差進行調(diào)整,將結果(非組合BCD碼)存于AL中。調(diào)整過程:調(diào)整方法與AAA類似,不同的是當AL的低4位>9或AF=1時,將AL-6→AL,AH-1→AH,并將AF和CF置1,清除AL的高四位。(7)組合BCD碼的減法調(diào)整指令格式:DAS功能:對AL中由兩個組合BCD碼相減所得的結果進行調(diào)整,并將結果(組合BCD碼)存于AL中。調(diào)整過程:調(diào)整方法與DAA類似,不同的是當AL的低4位>9或者AF=1,則AL-6→AL,并置AF=1;而當AL的高4位大于9或者CF=1時,則AL-60H→AL,并置AF=1。注意:使用AAS、DAS指令必須緊跟在減法指令之后。73[例2.7]計算4609+3875,假設被加數(shù)和加數(shù)的每一位數(shù)都以ASCII碼形式存放在內(nèi)存中,低位在前。另留出4個存儲單元,以存放結果。…

30393634STR1被加數(shù)…

3738

STR23335加數(shù)SUM…

和74[例2.7]計算4609+3875,假設被加數(shù)和加數(shù)的每一位數(shù)都以ASCII碼形式存放在內(nèi)存中,低位在前。另留出4個存儲單元,以存放結果。(流程圖見P77圖2.18) LEA SI,STR1 LEA BX,STR2 LEA DI,SUM MOV CX,4 CLCNEXT:MOV AL,[SI] ADC AL,[BX] AAA MOV [DI],AL

INC SI INC DI INC BX DEC CX JNZ NEXT75[例2.8]內(nèi)存數(shù)據(jù)段存放了100個帶符號數(shù),首地址為AREA1,要求將各數(shù)取絕對值后存入以AREA2為首址的內(nèi)存區(qū)。

LEA SI,AREA1 LEA DI,AREA2 MOV CX,100CHECK:MOVAL,[SI] OR AL,AL JNS NEXT NEGALNEXT:MOV[DI],AL INC SI INC DI DEC CX JNZ CHECK76例2.6:有兩個5字節(jié)數(shù)3B74AC60F8H、20D59E36C1H分別放在自DATA1和DATA2開始的存儲區(qū)中,低字節(jié)在低地址處,編一程序段將兩數(shù)相加,結果存放于從DATA1開始的單元中。 MOVCX,5 ;循環(huán)次數(shù) MOVSI,0 ;偏移值 CLC ;CF=0LPER:MOVAL,DATA2[SI] ADCDATA1[SI],AL INCSI DECCX JNZLPER ….77[例2.8]內(nèi)存數(shù)據(jù)段存放了100個帶符號數(shù),首地址為AREA1,要求將各數(shù)取絕對值后存入以AREA2為首址的內(nèi)存區(qū)。

LEA SI,AREA1 LEA DI,AREA2 MOV CX,100CHECK:MOVAL,[SI] OR AL,AL JNS NEXT NEGALNEXT:MOV[DI],AL INC SI INC DI DEC CX JNZ CHECK復習783.乘法指令

(1)無符號數(shù)乘法格式:MULOP

功能:AX←AL×OP8位數(shù)乘法

(DX、AX)←AX×OP16位數(shù)乘法(2)帶符號數(shù)乘法格式:IMULOP功能:

操作同上,但是操作數(shù)為帶符號數(shù)注意:MUL和IMUL操作數(shù)必須在寄存器或存儲單元中79┇

BXXXHAL×XXHAX例:MULBYTEPTR[BX]80運算結果只影響CF、OF,其他的無定義。例:已知AL=0FEH,視為無符號數(shù)為254,視為帶符號數(shù),數(shù)值為-2。BH=0AH,視為無符號數(shù)為10,視為帶符號數(shù),數(shù)值為+10。執(zhí)行指令MULBH后AX=09ECH,CF=OF=1執(zhí)行指令IMULBH后AX=FFECH,CF=OF=0MULBL;AL×BL

AX中MULCX;AX×CX

DXAXMULBYTEPTR〔DI〕;AL×(DI)

AXIMULBX;AX和BX中的兩個有符號數(shù)相乘,結果在DX和AX中81(3)非組合BCD碼的乘法調(diào)整指令格式:AAM 功能:對AX中的由兩個非組合BCD碼相乘所得的結果進行調(diào)整,并將調(diào)整后的結果存于AX中。調(diào)整過程:AH←AL/0AH(商),AL←AL%0AH(余數(shù))注意:本指令必須緊跟在MUL指令之后使用。824.除法指令

指令要求被除數(shù)是除數(shù)的雙倍字長,即當除數(shù)是8/16位時,要求被除數(shù)是16/32位的二進制數(shù)。(1)無符號數(shù)除法

格式:DIVOP

功能:

(2)帶符號數(shù)除法格式:IDIVOP功能:操作同DIV,但是操作數(shù)為帶符號數(shù)字節(jié)除法:AX/OP

AL=商,AH=余數(shù)字除法:(DX、AX)/OP

AX=商,DX=余數(shù)

83注意:(1)當除數(shù)是字節(jié)時,被除數(shù)必須放在AX中,當除數(shù)是字時,被除數(shù)必須放在DX,AX中。(2)商超出規(guī)定的范圍時,將產(chǎn)生0號中斷。(3)IDIV運算結果余數(shù)的符號與被除數(shù)相同。(4)帶符號數(shù)除法運算中,當被除數(shù)位數(shù)不夠時,則需將被除數(shù)擴展到所需的位數(shù)。(8086/8088設有帶符號數(shù)擴展指令)84例:DIVCL;AX/CL,商

AL,余數(shù)

AHDIVWORDPTR[DI];DX和AX中32位數(shù)除以DI、DI+1所指的16位數(shù),商

AX,余數(shù)

DX

IDIVBX;DX、AX/BX,商

AX,余數(shù)

DX

IDIVBYTEPTR〔DI〕;AX中16位數(shù)除以DI所指單元中的8位數(shù),商

AL,余數(shù)

AH85(3)非組合BCD碼的除法調(diào)整指令格式:AAD 功能:把AX中的兩個非組合BCD碼進行調(diào)整,然后可按DIV指令實現(xiàn)兩個非組合BCD碼的除法運算

調(diào)整過程:AL←10×AH+AL,AH←0

注意:本指令必須在DIV運算前使用。例:求73/2=?

MOV AX,0703HMOV BL,02HAAD ;(AX)=49H=73DIV BL ;(AL)=24H,(AH)=01HAAM ;(AH)=03H,(AL)=06H865.轉換指令(

符號擴展指令)字節(jié)擴展指令(8位16位)

格式:CBW功能:將AL中的符號位擴展到AH

規(guī)則:若最高位=1,則執(zhí)行后AH=FFH若最高位=0,則執(zhí)行后AH=00H字擴展指令(16位32位)格式:CWD;功能:將AX中的符號位擴展到DX,

規(guī)則:若最高位=1,則執(zhí)行后DX=FFFFH

若最高位=0,則執(zhí)行后DX=0000H這兩條指令不影響標志位。87例:分析指令執(zhí)行后的結果MOVAL,44HCBWMOVAX,0AFDEHCWDMOVAL,86HCBW結果:AX=0044H結果DX=FFFFH,AX=0AFDEH結果:AX=FF86H88例:在內(nèi)存中,有一個從DATA1開始的存儲區(qū)。此存儲區(qū)的前兩個字節(jié)是一個16位帶符號的被除數(shù),第二、三字節(jié)是一個16位帶符號的除數(shù),其后的四個單元依次存放商和余數(shù)。

LEABX,DATA1MOVAX,[BX]CWDIDIVWORDPTR[BX+2]MOV[BX+4],AXMOV[BX+6],DX892.2.3邏輯運算和移位指令1.邏輯運算指令OP源:8/16位通用寄存器、存儲器操作數(shù)或立即數(shù)OP目:通用寄存器和存儲器操作數(shù)。

除“非”運算外,其余指令都會使OF=CF=0(1)邏輯與運算指令格式:ANDOP目,OP源功能:對兩個操作數(shù)按位進行與操作,結果回送OP目。說明:該指令常用于保留(或屏蔽)若干位二進制數(shù)例:已知AL=’6’,將AL中數(shù)的ASCII碼轉換成非壓縮BCD碼AND AL,0FH;AL=06H,屏蔽高4位(高位清0),保留低4位;;即對應位為0則清0,對應位為1則不變

90例:把AL中的小寫字母轉換成大寫字母

AND AL,11011111B例:判斷AL中字符是否為’y’,不區(qū)分大小寫。 AND AL,11011111B CMP AL,’Y’ JZ YES91(2)

測試指令

格式:TESTOP目,OP源功能:將OP目與OP源進行與運算,不回送結果,只根據(jù)結果置標志位。說明:主要用來檢測目的操作數(shù)的某些位是1或0,根據(jù)測試結果,決定轉向例:測試AX中的D15位是1還是0TESTAX,8000H;若D15為1,ZF=0,否則ZF=1例如,’與’的結果最高位是1還是0,結果是否為全0,結果中1的個數(shù)是奇數(shù)還是偶數(shù)等,分別由SF、ZF、PF標志位體現(xiàn)。92(3)邏輯或運算指令

格式:OROP目,OP源功能:對兩個操作數(shù)進行或運算,結果回送到OP目。說明:可用于組合某個字,或將某位置1。例:MOVAX,8888H;ORAX,00FFH;AX=88FFH,將AX的低8位置1,其他位不變。例:將AL中的非組合BCD碼轉換成ASCⅡ碼。

ORAL,30H93(4)邏輯異或運算指令格式:XOROP目,OP源功能:對兩個操作數(shù)進行異或運算,結果回送到OP目。說明:用于對某個二進制數(shù)按位取反或對某寄存器清0。例:XORAL,0FFH;AL數(shù)據(jù)按位求反 例:MOVAX,3333H

XORAX,00FFH;結果:AX=33CCH,AH數(shù)據(jù)保持不變,對AL數(shù)據(jù)求反。即對應0不變,對應1求反。例:寄存器清0(有4條指令可達到AX清0目的):

XORAL,AL ;AL清0MOVAX,0SUBAX,AXANDAX,094(5)

邏輯非運算指令

格式:NOTOP功能:對操作數(shù)逐位取反后回送到原處。例:MOVAX,1NOTAX;AX=0FFFEH注意:(1)該指令只是執(zhí)行求反操作,而不是求反碼指令,對符號位也求反。(2)不影響標志位??偨Y:(1)ANDORXORTEST均影響標志,CF=0,OF=0,而PF,SF,ZF由結果而定,AF無意義。此類指令可用來清CF,常用于拆字,拼字。(2)NOT不影響標志。95例:讀取端口地址為PORT的外設輸入的數(shù)據(jù),若輸入的數(shù)據(jù)的第1,2,5位中的任一位不等于零,則轉移到NEXT。 INAL,PORT TESTAL,00100110B JNZNEXT ….NEXT:…962.移位指令移位操作非循環(huán)移位循環(huán)移位邏輯移位算術移位不帶進位位的移位帶進位位的移位規(guī)定:移動一位時由指令中的計數(shù)值直接給出;移動兩位及以上,則移位次數(shù)由CL指定,即必須將移位位數(shù)N事先裝入CL中。

97將操作數(shù)的內(nèi)容左移,每移一次,最低位補0,最高位→CF。將操作數(shù)的內(nèi)容右移,每移一次,最高位補0,最低位→CF。將操作數(shù)的內(nèi)容右移,每移一次,最高位不變,最低位→CF。2.移位指令算術左移與邏輯左移相同,可用于無符號數(shù)乘2操作;邏輯右移可用于無符號數(shù)除2操作;算術右移可以用于有符號數(shù)除2操作。98算術邏輯移位指令是雙操作數(shù)指令,操作數(shù)可以是除立即數(shù)之外的任何尋址方式;當計數(shù)值大于1時,必須使用CL作計數(shù)器。例:MOVBX,F(xiàn)FFCHSARBX,1結果:BX=FFFEH,BX由-4變?yōu)?2。例:MOVBL,0CH;BL=12SHLBL,1;BL=2499例:對AX中無符號數(shù)進行乘10運算(設無溢出,乘10后仍為一個字)分析:AX*10=AX*(23+2)=AX*2+AX*23程序:MOVBX,AXSALBX,1;原數(shù)*2

BXMOVCL,3SALAX,CL;原數(shù)*23

AXADDAX,BX;原數(shù)*10

AX100

3.循環(huán)移位指令前面指令產(chǎn)生的CF移至最低位前面指令產(chǎn)生的CF移至最高位101

循環(huán)移位之后,操作數(shù)中原來各數(shù)位的信息不會丟失,而只是移到了操作數(shù)中的其他位或進位標志CF上,必要時還可以恢復。利用循環(huán)移位指令可以對寄存器或存儲器中的任一位進行位測試。例如要求測試AL寄存器中第5位是1還是0。

MOV CL,3 ROL AL,CL JNC ZERO1022.2.4串操作指令串操作指令實現(xiàn)對內(nèi)存中地址連續(xù)的字節(jié)串或字串進行操作,在每次操作后,能自動修改地址,為下一次操作做好準備。串操作分為基本串操作指令和重復前綴指令?;敬僮髦噶蠲繄?zhí)行一次只能處理一個數(shù)據(jù),與重復前綴指令結合可以處理一串數(shù)據(jù)。103串操作有如下共同點:(1)源串一般存放在數(shù)據(jù)段(DS,允許段超越),偏移地址由SI指定,目標串在附加段(ES,不允許段超越),偏移地址由DI指定。(2)每執(zhí)行一次串操作后自動修改指針SI、DI。若方向標志DF=0,則每次操作后SI和DI自動加1(或加2);若DF=1,則每次操作后SI和DI自動減1(或減2)修改。(3)串長(字或字節(jié)個數(shù))存放在CX中。注意:在執(zhí)行指令前必須DS、ES、SI、DI、DF、CX置好需要的值,它們是串操作指令的隱含操作數(shù)。源串段地址→DS,目的串段地址→ES建立方向標志(CLD使DF=0,STD使DF=1)源串首地址或末地址→SI目的串首地址或末地址→DI串長度→CX1041.字符串串操作指令(1)字符串傳送指令格式:MOVS功能:把位于數(shù)據(jù)段由SI指定的內(nèi)存單元的字節(jié)/字數(shù)據(jù)傳送到附加段由DI指定的內(nèi)存單元,指令不影響狀態(tài)標志位。過程:MOVSB((ES):(DI))←((DS):(SI)),

SI←SI±1,DI←DI±1

MOVSW((ES):(DI)+1)←((DS):(SI)+1),

((ES):(DI))←((DS):(SI)),

SI←SI±2,DI←DI±2必須說明操作數(shù)的類型,確定是字節(jié)/字傳送。說明:串傳送指令常與無條件重復前綴REP連用操作重復次數(shù)由CX決定,每傳送完一個元素使CX減1。該指令重復執(zhí)行,直至CX=0為止。105例:將數(shù)據(jù)段中首地址為BUFFER1的200個字節(jié)的數(shù)據(jù)傳送到附加段首地址為BUFFER2開始的存儲區(qū)中。1)

用一般傳送指令實現(xiàn)

LEA SI,BUFFER1;源串首地址送SI LEA DI,BUFFER2;目的串首地址送DI MOV CX,200 ;串長送CXPL1:MOV AL,[SI] ;按SI所指地址取一字節(jié)

MOV [DI],AL ;按DI所指地址存一字節(jié)

INC SI ;源區(qū)地址加1 INC DI ;目的區(qū)地址加1 DEC CX ;計數(shù)器減1 JNZ PL1 ;未傳送完則繼續(xù)

…1062)用串傳送指令實現(xiàn)

LEA SI,BUFFER1 ;源串首地址送SI LEA DI,BUFFER2 ;目的串首地址送DI MOV CX,200 ;串長送CX CLD ;清方向標志位,使正向傳送

PL1:MOVSB ;串傳送一字節(jié),[SI]→[DI],SI、DI加1 DEC CX ;計數(shù)器減1 JNZ PL1 ;未傳送完則繼續(xù)

…3)用重復傳送指令

LEA SI,BUFFER1 ;源串首地址送SI LEA DI,BUFFER2 ;目的串首地址送DI MOV CX,200 ;串長送CX CLD ;清方向標志位,使正向傳送

REP MOVSB;每傳送完一個元素使CX減1,;若CX≠0,則重復字節(jié)傳送,;直到CX=0,跳出循環(huán)107(2)字符串比較指令

格式:CMPS功能:把位于數(shù)據(jù)段由SI指定的字節(jié)/字數(shù)據(jù)與附加段由DI指定的字節(jié)/字數(shù)據(jù)進行比較,結果不保存,但影響狀態(tài)標志位,并由DF狀態(tài)決定SI、DI的修改方向。過程:CMPSB((DS):(SI))-((ES):(DI)),SI←SI±1,DI←DI±1CMPSW((DS):(SI)+1)-((ES):(DI)+1),((DS):(SI))-((ES):(DI)),SI←SI±2,DI←DI±2說明:串比較指令常與條件重復前綴連用,指令的執(zhí)行不改變操作數(shù),僅影響標志位。108條件重復前綴①重復前綴REPE/REPZ重復條件:比較結果相等(ZF=1)且串未結束(CX≠0),則繼續(xù)比較。結束條件:兩串比較完(CX=0)或比較的元素不相等(ZF=0)比較結果:若兩串相等,則ZF=1,否則ZF=0作用:判斷兩串是否完全相同②重復前綴REPNE/REPNZ重復條件:比較結果不相等(ZF=0)且串未結束(CX≠0)繼續(xù)比較。結束條件:兩串比較完(CX=0)或比較的元素相等(ZF=1)。比較結果:若兩串完全不相等則ZF=0,否則ZF=1。作用:判斷兩串是否完全不相同109例2.14:比較串長為20的兩個字節(jié)串,找出其中第一個不相等字符的地址存放在SI,DI;若兩串完全相同,則給SI,DI賦0。MOVSI,0FFSETSTRING1LEADI,STRING2 CLD

MOVCX,20 REPECMPSB JZALLMATCH DECSI DECDI JMPDONE ALLMATCH:MOVSI,0 MOVDI,0 DONE:HLT 110(3)字符串搜索指令格式:SCAS功能:把AL/AX中的內(nèi)容與附加段由DI指定的一個字節(jié)/字數(shù)據(jù)進行比較,結果不保存,但影響狀態(tài)標志位,并由DF狀態(tài)決定DI的修改方向。

過程:SCASB字節(jié)——AL-[DI],DI←DI±1SCASW字——AX-[DI],DI←DI±2111[例2.15]在首地址為STRING的包含100個字符的字符串中尋找第一個回車符CR,找到后將其地址保留在(ES:DI)中,并在屏幕上顯示字符’Y’。如果字符串中沒有回車符,則在屏幕上顯示字符’N’。

LEA DI,STRING MOV AL,0DH MOV CX,100 CLD REPNESCASB JZ MATCH MOV DL,’N’ JMP DSPYMATCH:DECDI MOV DL,’Y’DSPY:MOV AH,02H INT 21H …112(4)取字符串指令格式:LODSB——(AL)←((DS):(SI)),SI←SI±1LODSW——(AX)←((DS):(SI)),SI←SI±2功能:把位于數(shù)據(jù)段由SI指定內(nèi)存單元的內(nèi)容取到AL或AX中,并修改SI的內(nèi)容,指向下一字節(jié)/字單元。

(5)存字符串指令格式:STOSB——((ES):(DI))←(AL),DI←DI±1STOSW——((ES):(DI))←(AX),DI←DI±2功能:把寄存器AL或AX中的內(nèi)容存到附加段由DI指定的內(nèi)存單元,并修改DI的內(nèi)容,指向下一字節(jié)/字的存放單元。113[例2.18]一個數(shù)據(jù)塊由大寫或小寫的英文字母、數(shù)字和各種其他符號組成,其結束符是回車符CR,數(shù)據(jù)塊的首地址為BLOCK1。要求將數(shù)據(jù)塊傳送到以BLOCK2為首址的內(nèi)存區(qū),并將其中的所有英文小寫字母轉換成相應的大寫字母,其余不變。 LEA SI,BLOCK1 LEA DI,BLOCK2 CLDNEXT:LODSB CMP AL,0DH JZ DONE CMP AL,’a’ JC OK CMP AL,’z’ JNC OK SUB AL,20HOK: STOSB JMP NEXTDONE:…114注意:重復前綴指令不能單獨使用,其后必須緊跟基本串操作指令,控制基本串操作指令重復執(zhí)行。其執(zhí)行過程相當于一個循環(huán)程序的運行。在每次重復之后,地址指針SI和DI都被修改,但指令指針I(yè)P仍保持指向帶有前綴的串操作指令的地址。重復執(zhí)行次數(shù)由數(shù)據(jù)串長度決定,數(shù)據(jù)串長度應預置在寄存器CX中。執(zhí)行重復前綴指令不影響標志位。115例:將20個0AAAAH送入3000H開始的地址單元。程序段如下: CLDLEA DI,[3000H] MOV CX,14H MOV AX,0AAAAH REP STOSW116無條件轉移指令無條件轉移到目標地址,執(zhí)行新的指令有條件轉移指令在具備一定條件的情況下轉移到目標地址1.轉移指令通過修改指令的偏移地址(IP)或段地址(CS)及偏移地址(IP)實現(xiàn)程序的轉移。2.2.5控制轉移指令117①段內(nèi)轉移指令段內(nèi)直接短轉移JMPSHORTOPIP←IP+8位偏移量段內(nèi)直接近轉移JMPNEARPTROP

溫馨提示

  • 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

提交評論