匯編語言80X86的指令系統(tǒng)和尋址方式_第1頁
匯編語言80X86的指令系統(tǒng)和尋址方式_第2頁
匯編語言80X86的指令系統(tǒng)和尋址方式_第3頁
匯編語言80X86的指令系統(tǒng)和尋址方式_第4頁
匯編語言80X86的指令系統(tǒng)和尋址方式_第5頁
已閱讀5頁,還剩206頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章80x86指令系統(tǒng)和尋址方式教學(xué)要求:掌握一般指令系統(tǒng)的基本概念:指令格式、功能和注意事項。重點掌握8086/8088指令系統(tǒng)中,各指令的格式、尋址方式、指令類型。1

3.1指令系統(tǒng)的基本概念

計算機的指令系統(tǒng)就是指該計算機能夠執(zhí)行的全部指令的集合。每種計算機都有它支持的指令集合。

16位8086指令系統(tǒng)是整個Intel80x86系列微處理器指令系統(tǒng)的基礎(chǔ)。3.1.1指令系統(tǒng)2

操作碼

說明計算機要執(zhí)行哪種操作,如傳送、運算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。

操作碼操作數(shù)···

操作數(shù)指令由操作碼和操作數(shù)兩部分組成。

操作數(shù)

是指令執(zhí)行的參與者,即各種操作的對象。有些指令不需要操作數(shù),通常的指令都有一個或兩個操作數(shù),也有個別指令有3個甚至4個操作數(shù),通常稱為一地址指令、二地址指令、三…3.1.2指令格式3指令的功能——該指令能夠?qū)崿F(xiàn)何種操作。通常指令助記符(操作碼)就是指令功能的英文單詞或其縮寫形式。指令支持的尋址方式——該指令中的操作數(shù)可以采用何種尋址方式。指令對標(biāo)志的影響——該指令執(zhí)行后是否對各個標(biāo)志位有影響,以及如何影響。3.1.3學(xué)習(xí)指令的注意事項43.280x86尋址方式操作數(shù)可以跟隨在指令操作碼之后,稱為立即數(shù);操作數(shù)也可以存放在CPU內(nèi)部的寄存器中,稱為寄存器操作數(shù)。絕大多數(shù)的操作數(shù)存放在內(nèi)存儲器中,稱為存儲器操作數(shù)。指令指定操作數(shù)的位置,即給出地址信息,在執(zhí)行時需要根據(jù)這個地址信息找到需要的操作數(shù)。3.2.1尋址、尋址方式的概念尋址就是尋找操作數(shù)的地址。尋址方式就是尋找操作數(shù)的方法。5

指令助記符體現(xiàn)該指令的功能,它對應(yīng)一條二進制編碼的機器指令。指令的操作數(shù)個數(shù)由該指令確定,可以沒有操作數(shù),也可以有一個、二個或三個操作數(shù)。3.2.280X86的指令格式指令助記符[操作數(shù)1[,操作數(shù)2[,操作數(shù)3]]]

[;注釋]63.2.3與數(shù)據(jù)有關(guān)的尋址方式在80X86系列中,8086和80286的字長是16位,一般情況下只處理8位和16位數(shù),只是在乘除指令中才會有32位;在386及其后續(xù)機型,處理的一般為8,32位數(shù)。只有乘除時才會出現(xiàn)64位。7

MOVd,sMOV:數(shù)據(jù)傳送指令

d:目的操作數(shù)(DST)

s:源操作數(shù)(SRC)指令執(zhí)行后,把s送到d。83.2.3與數(shù)據(jù)有關(guān)的尋址方式以MOV

指令為例:立即尋址MOVAX,3069H寄存器尋址MOVAL,BH直接尋址MOVAX,[2000H]寄存器間接尋址MOVAX,[BX]寄存器相對尋址MOVAX,COUNT[SI]基址變址尋址MOVAX,[BP][DI]相對基址變址尋址MOVAX,MASK[BX][SI]存儲器尋址91)

立即尋址方式

立即尋址方式用來表示常數(shù),它經(jīng)常用于給寄存器賦初值,并且只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段,且兩者長度保持一致。操作數(shù)存放在指令中,緊跟在操作碼之后,它作為指令的一部分存放在代碼段里,稱為立即操作數(shù)。這種尋址方式也就稱為立即數(shù)尋址方式。

10只能用于

SRC字段

MOV40H,AL

SRC和DST的位數(shù)要匹配

MOVAH,3064H

MOVAL,5MOVAX,3064HMOVAL,‘A’11【例3.1】MOVAX,4576H執(zhí)行后(AX)=?

CS→MOVAX,4576H指令的存儲形式AXOP76H45H7645該例中源操作數(shù)為立即尋址方式,立即數(shù)為4576H,存放在指令的下一單元。執(zhí)行:4576H→AX執(zhí)行后:(AX)=4576H

12

2)

寄存器尋址方式定義:指令所要的操作數(shù)已存儲在某寄存器中,把在指令中指出所使用寄存器(即:寄存器的名字)的尋址方式稱為寄存器尋址方式。

寄存器R指令操作數(shù)寄存器匯編格式:R

(其中R表示寄存器名,如AX、BX等。)功能:操作數(shù)直接存放在寄存器R中。圖形表示:13指令中可以引用的寄存器及其符號名稱如下:

8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;

16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;注:由于指令所需的操作數(shù)已存儲在寄存器中,或操作的結(jié)果存入寄存器,這樣,在指令執(zhí)行過程中,會減少讀/寫存儲器單元的次數(shù),所以,使用寄存器尋址方式的指令具有較快的執(zhí)行速度。通常情況下,提倡在編寫匯編語言程序時,應(yīng)盡可能地使用寄存器尋址方式,但也不要把它絕對化。14

MOVAX,BX指令執(zhí)行前,(AX)=0306H(BX)=1234H指令執(zhí)行后,(AX)=1234H(BX)=1234H15【例3.2】下列程序執(zhí)行后,(AX)=?,(BX)=?

MOVAX,1234HMOVBX,5678HADDAX,BX執(zhí)行:1234H→AX執(zhí)行后:(AX)=68ACH,(BX)=5678H5678H→BX(AX)+(BX)→AX16以MOV

指令為例:立即尋址MOVAX,3069H寄存器尋址MOVAL,BH直接尋址MOVAX,[2000H]寄存器間接尋址MOVAX,[BX]寄存器相對尋址MOVAX,COUNT[SI]基址變址尋址MOVAX,[BP][DI]相對基址變址尋址MOVAX,MASK[BX][SI]存儲器尋址17物理地址(PA)=16

段地址+偏移地址偏移地址

在80x86里,把操作數(shù)的偏移地址稱為有效地址(effectiveaddress,EA).

18EA=基址+變址

比例因子+位移量基址(base):是存放在基址寄存器里的內(nèi)容。是有效地址中的基址部分,通常用來指向數(shù)據(jù)段中數(shù)組或字符串的首地址。變址(index):是存放在變址寄存器中的內(nèi)容,通常用來訪問數(shù)組中的某個元素或字符串中的某個字符。比例因子:386及其后機型新增加的尋址方式。其值可以是1,2,4或8。訪問數(shù)組時有用。位移量:是存放在指令中的一個8,16或32位數(shù),表示的是地址。1916/32位尋址時有效地址EA四種成分的組成四種成分16位尋址32位尋址位移量0,8,160,8,32基址寄存器BX,BP任何通用32位寄存器變址寄存器SI,DI除ESP以外的32位通用寄存器比例因子無1,2,4,8默認(rèn)段選擇規(guī)則P39表3.220默認(rèn)段選擇規(guī)則訪存類型所用段及段寄存器缺省選擇規(guī)則指令代碼段CS寄存器用于取指堆棧堆棧段SS寄存器所有的堆棧的進棧和出棧。任何使用BP,ESP或ESP作為基址寄存器的訪存。局部數(shù)據(jù)數(shù)據(jù)段DS寄存器除相對于堆棧以及串處理指令的目的串以外的所有數(shù)據(jù)訪問目的串附加數(shù)據(jù)段ES寄存器串處理指令的目的串21跨段越問題凡是使用寄存器為BX、SI、DI時,其默認(rèn)段為DS,使用BP時,默認(rèn)段為SS。該規(guī)定為系統(tǒng)默認(rèn)狀態(tài)。當(dāng)要否定默認(rèn)狀態(tài),到非約定段尋找操作數(shù)時,必須用跨段前綴指明操作數(shù)的段寄存器名。匯編格式:段寄存器名:操作數(shù)地址。功能:冒號“:”之前的段寄存器名指明操作數(shù)所在的段?!纠?.8】MOVAX,DS:[BP]MOVCX,SS:[SI]

該例中,DS:,SS:均為跨段前綴,此時默認(rèn)狀態(tài)無效,操作數(shù)的物理地址PA由段寄存器內(nèi)容左移4位加偏移EA形成。上述2條指令的源操作數(shù)物理地址分別為:

PA1=(DS)左移4位+[BP]PA2=(SS)左移4位+[SI]22不允許使用段跨越前綴的3中情況串處理指令的目的串必須用ES段;PUSH指令的目的操作數(shù)和POP指令的源操作數(shù)必須用SS段指令必須存放在CS段中。23

3)

直接尋址方式定義:操作數(shù)的有效地址只包含位移量一種成分,其值存放在代碼段中指令的操作碼之后,即指令所要的操作數(shù)存放在內(nèi)存中,在指令中直接給出該操作數(shù)的有效地址,這種尋址方式為直接尋址方式。

EA指令操作數(shù)存儲器+段基地址功能:指令下一字單元的內(nèi)容是操作數(shù)的偏移地址EA。圖形表示:24例:MOVAX,[2000H]EA=2000H,假設(shè)(DS)=3000H,那么PA=32000H.如圖:25【例3.3】執(zhí)行指令:MOVBX,[1234H]

設(shè)(DS)=2000H。執(zhí)行后:(BX)=?BXDS:2000H+1234H21234HOP~~~~…CS→DS→13H52H20000H21234H……34H12H執(zhí)行:(21234H)→BX執(zhí)行后:(BX)=5213H135226

在通常情況下,操作數(shù)存放在數(shù)據(jù)段中,所以,其物理地址將由數(shù)據(jù)段寄存器DS和指令中給出的有效地址直接形成,但如果使用段超越前綴,那么,操作數(shù)可存放在其它段。例如:MOV

ES:[1000H],AX27注意:立即數(shù)尋址方式和直接尋址方式的書寫格式不同,直接尋址的地址要寫在括號“[]”內(nèi)。在程序中,直接地址通常用內(nèi)存變量名來表示,如:MOVBX,VALUE,其中,VALUE是內(nèi)存字變量。MOVAX,1234H

MOVAX,[1234H]

前者是立即尋址,后者是直接尋址MOVAX,VALUE

MOVAX,[VALUE]

兩者是等效的,均為直接尋址作業(yè)試比較下列指令中源操作數(shù)的尋址方式(VALUE是內(nèi)存字變量)符號地址288086為了使指令字不要過長,規(guī)定雙操作數(shù)指令的兩個操作數(shù)中,只能有一個使用存儲器尋址方式,這就是一個變量常常先要送到寄存器的原因。294)

寄存器間接尋址方式定義:操作數(shù)在存儲器中,操作數(shù)的有效地址由基址寄存器(BX,BP)或變址寄存器(SI,DI)

指定,稱這種尋址方式為寄存器間接尋址方式。

EA寄存器操作數(shù)存儲器+段基地址基址或變址寄存器指令匯編格式:[R]功能:操作數(shù)存放在存儲器,寄存器R存放操作數(shù)的偏移地址EA。圖形表示:30寄存器:16位尋址時可用BX,BP,SI,DI.32位尋址時可用EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI.注意:BP,ESP,EBP,默認(rèn)是SS段。其他寄存器默認(rèn)是DS段。31【例3.4】假設(shè)有指令:MOVBX,[DI],在執(zhí)行時,(DS)=1000H,(DI)=2345H,存儲單元12345H的內(nèi)容是4354H。問執(zhí)行指令后,BX的值是什么?BX

DS:1000H+DI:2345H12345H解:寄存器DI的值不是操作數(shù),而是操作數(shù)的地址。該操作數(shù)的物理地址應(yīng)由DS和DI的值形成,即:

PA=(DS)*16+DI=1000H*16+2345H=12345H。該指令的執(zhí)行效果是:把從物理地址為12345H開始的一個字的值傳送給BX。4354…OP…~~~~…CS→DS→54H43H10000H12345H32在不使用段超越前綴的情況下,有下列規(guī)定:若有效地址用SI、DI和BX等之一來指定,則其缺省的段寄存器為DS;若有效地址用BP來指定,則其缺省的段寄存器為SS(即:堆棧段)。該尋址方式物理地址的計算方法如下:

BX物理地址PA=16×DS+SI DI或物理地址PA=16×SS+BP335.寄存器相對尋址方式定義:操作數(shù)在存儲器中,其有效地址是一個基址寄存器(BX、BP)或變址寄存器(SI、DI)的內(nèi)容和指令中的8位/16位偏移量之和。

匯編格式:X[R]或者[R+X](X表示位移量,是8位或16位二進制補碼表示的有符號數(shù))功能:操作數(shù)存放在存儲器,寄存器R的內(nèi)容加位移量X為操作數(shù)的偏移地址EA。圖形表示如下:地址寄存器操作數(shù)存儲器+段基地址基址或變址寄存器位移量指令+EA34【例3.5】假設(shè)指令:MOVBX,[SI+100H],在執(zhí)行時,(DS)=1000H,(SI)=2345H,內(nèi)存單元12445H的內(nèi)容為2715H,問該指令執(zhí)行后,BX的值是什么?…OP…~~~~…CS→DS→15H27H10000H12445HSI:2345H+100HEA:2445H+DS:1000H12445H2715BX所以,該指令的執(zhí)行效果是:把從物理地址為12445H開始的一個字的值傳送給BX。解:EA=(SI)+100H=2345H+100H=2445H

PA=(DS)*16+EA=1000H*16+2445H=12445H。35寄存器相對尋址方式

MOVAX,COUNT[SI]或MOVAX,[COUNT+SI]MOVBX,[SI+100H]MOVBX,100H[SI]366.基址變址尋址方式定義:操作數(shù)在存儲器中,其有效地址是一個基址寄存器(BX、BP)和一個變址寄存器(SI、DI)的內(nèi)容之和。

匯編格式:

[BR+IR]或者[BR][IR]功能:操作數(shù)存放在存儲器,BR的內(nèi)容加IR的內(nèi)容是操作數(shù)的偏移地址EA。圖形表示:操作數(shù)存儲器+段基地址基址寄存器變址寄存器指令+基址值基址寄存器變址值變址寄存器EA37【例3.6】假設(shè)指令:MOVBX,[BX+SI],在執(zhí)行時,(DS)=1000H,(BX)=2100H,(SI)=0011H,內(nèi)存單元12111H的內(nèi)容為1234H。問該指令執(zhí)行后,BX的值是什么?…OP…~~~~…CS→DS→34H12H10000H12111HBX:2100H+SI:0011HEA:2111H+DS:1000H12111H1234BX所以,該指令的執(zhí)行效果是:把從物理地址為12111H開始的一個字的值傳送給BX。解:操作數(shù)的物理地址PA為:

PA=(DS)*16+(BX)+(SI)

=1000H*16+2100H+0011H=12111H387.相對基址變址尋址方式定義:操作數(shù)在存儲器中,其有效地址是一個基址寄存器(BX、BP)的值、一個變址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。

匯編格式:X[BR+IR]功能:操作數(shù)存放在存儲器,BR內(nèi)容加IR內(nèi)容加位移量X是操作數(shù)的偏移地址EA。圖形表示:存儲器基址值基址寄存器操作數(shù)+段基地址基址寄存器變址寄存器位移量指令+變址值變址寄存器EA39【例3.7】假設(shè)指令:MOVAX,[BX+SI+200H],在執(zhí)行時,(DS)=1000H,(BX)=2100H,(SI)=0010H,內(nèi)存單元12310H的內(nèi)容為1234H。問該指令執(zhí)行后,AX的值是什么?解:該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:PA=12310H所以,該指令的執(zhí)行效果是:把從物理地址為12310H開始的一個字的值傳送給AX?!璒P…~~~~…CS→DS→34H12H10000H12310H

BX:2100HSI:0010H

0200HEA:2310H+DS:1000H12310H1234AX40EA=(基址寄存器)+(變址寄存器)

比例因子+位移量對于元素大小為2、4、8字節(jié)的數(shù)組,可以在變址寄存器中給出數(shù)組元素下標(biāo),而由比例因子將下標(biāo)轉(zhuǎn)換為變址值。8比例變址尋址方式4180x86新增的尋址方式

EA=(基址寄存器)+(變址寄存器)

比例因子+位移量(1)比例變址尋址方式

例:MOVEAX,COUNT[ESI

4]42(2)基址比例變址尋址方式

例:MOVECX,[EAX][EDI

4]

(3)相對基址比例變址尋址方式

例:MOVEAX,TABLE[EBP][EDI

4]▲16位和32位尋址的差異地址成分16位尋址32位尋址基址寄存器BX、BP任何32位通用寄存器變址寄存器SI、DI除ESP外的任何32位通用寄存器比例因子11、2、4、8433.1.2與轉(zhuǎn)移地址有關(guān)的尋址方式

用來確定轉(zhuǎn)移指令及轉(zhuǎn)子(call)指令的轉(zhuǎn)向地址。轉(zhuǎn)向地址是由各種尋址方式得到的有效地址和段地址相加而成的,有效地址存入IP寄存器中,段地址指定為CS段寄存器內(nèi)容。

段內(nèi)尋址段內(nèi)直接尋址JMPNEARPTRNEXT

段內(nèi)間接尋址JMPTABLE[BX]

段間尋址

段間直接尋址JMPFARPTRNEXT

段間間接尋址JMPDWORDPTR[BX]44(1)段內(nèi)直接尋址轉(zhuǎn)向的有效地址=當(dāng)前(IP)+位移量(8bit/16bit)

位移量IP寄存器+EA45【例3.8】

(1)JMPSHORTQUEST

其中QUEST表示轉(zhuǎn)移的符號地址,操作符SHORT表示是個8位帶符號數(shù),數(shù)的范圍是80H~7FH,即-128~+127。它只能相對于當(dāng)前IP(轉(zhuǎn)移指令的下一條指令的首地址)所指的位置作-128~+127范圍內(nèi)跳轉(zhuǎn),所以稱為短跳轉(zhuǎn)。(2)JMPNEARPTRPROGA

其中PROGA表示轉(zhuǎn)移的符號地址,操作符NEARPRT表示是個16位帶符號數(shù),數(shù)的范圍是8000H~7FFFH,即-32768~+32767。它只能相對于當(dāng)前IP所指的位置作-32768~+32767范圍內(nèi)跳轉(zhuǎn),所以稱為近跳轉(zhuǎn)。46(2)段內(nèi)間接尋址

轉(zhuǎn)向的有效地址是一個寄存器或存儲單元的內(nèi)容??捎贸⒓磾?shù)以外的任何一種數(shù)據(jù)尋址方式得到,所得到的轉(zhuǎn)向的有效地址取代IP寄存器的內(nèi)容。轉(zhuǎn)向的有效地址指令數(shù)據(jù)尋址方式或根據(jù)數(shù)據(jù)尋址方式計算出EA值轉(zhuǎn)向的有效地址存儲單元47

【例3.9】

已知(DS)=2000H,(BX)=1256H,(SI)=528FH,位移量=20A1H

,(232F7H)=3280H,(264E5H)=2450H

JMPBXJMPWORDPTRTABLE[BX]JMPWORDPTR[BX][SI](IP)=1256H(IP)=3280H(IP)=2450H48(3)段間直接尋址用指令中提供的轉(zhuǎn)向段地址和偏移地址取代CS和IP。指令偏移地址IP寄存器段地址CS寄存器49【例3.9】JMPFARPTRNEXTROUNT32EA010010~~~~10CS=0000HCS→0000002000IP→IP=2000HCS→CS=1000HNEXTROUNTIP=0132H1013210000新IP新CS50(4)段間間接尋址用存儲器中的兩個相繼字的內(nèi)容取代CS和IP,存儲單元的地址可用存儲器尋址方式得到。

指令數(shù)據(jù)尋址方式根據(jù)數(shù)據(jù)尋址方式計算出EA值轉(zhuǎn)向的有效地址轉(zhuǎn)向的有效地址存儲器中的兩個相繼字IPCS51【例3.10】JMP

DWORDPTR[INTERS+BX]

如DS=3000H,BX=1200H,INTERS=0020H,

指令執(zhí)行前,CS=0000H,IP=1000H,(31220H)=40H

(31221)=01H,(31222H)=00H,(31223)=10H。

指令執(zhí)行后,CS=1000H,IP=0140H則存儲單元的物理地址:PA=30000+0020+1200=31200H52指令存儲和執(zhí)行情況:JMPDWORDPTRINTER[BX]~~~~CS=0000HCS→0000001000IP→IP=1000HCS→CS=1000HIP→IP=0140H1014010000代碼段01400010DS=3000HDS→3000031220INTER+BX數(shù)據(jù)段新IP新CS312213122231223533.2程序占有的空間和執(zhí)行時間543.380x86的指令系統(tǒng)

80X86指令系統(tǒng)分為以下6組:

數(shù)據(jù)傳送指令

串處理指令

算術(shù)指令

控制轉(zhuǎn)移指令

邏輯指令

處理機控制與雜項操作指令

對指令要掌握以下幾個方面內(nèi)容:指令的功能、注意事項;指令操作數(shù)的尋址方式;指令對標(biāo)志位的影響、標(biāo)志位對指令的影響;553.3.1數(shù)據(jù)傳送指令

數(shù)據(jù)傳送指令負責(zé)把數(shù)據(jù)、地址或立即數(shù)傳送到寄存器、存儲器或端口號寄存器。它相對于高級語言里的賦值語句。

通用數(shù)據(jù)傳送:MOV

PUSHPOPXCHG累加器專用傳送(輸入輸出):IN

OUTXLAT地址傳送:LEA

LDSLES標(biāo)志寄存器傳送:LAHF

SAHF

PUSHF

POPF類型轉(zhuǎn)換指令:CBWCWD56通用數(shù)據(jù)傳送指令MOVMOVSXMOVZXPUSHPOPPUSHA/PUSHADPOPA/POPADXCHG該組指令不影響標(biāo)志位。57MOV傳送指令格式:MOV

DST,

SRC功能:指令的功能是把源操作數(shù)(第二操作數(shù))的值傳給目的操作數(shù)(第一操作數(shù))。指令執(zhí)行后,目的操作數(shù)的值被改變,而源操作數(shù)的值不變。在存儲單元是該指令的一個操作數(shù)時,該操作數(shù)的尋址方式可以是任意一種存儲單元尋址方式。58段寄存器CS、DS、SS、ES通用寄存器8位或者16位存儲器立即數(shù)8位或者16位

在匯編語言中,主要的數(shù)據(jù)傳送方式如下圖所示。雖然一條MOV指令能實現(xiàn)其中大多數(shù)的數(shù)據(jù)傳送方式,但也存在MOV指令不能實現(xiàn)的傳送方式。59MOV指令的機器語言有7種格式1、MOVmem/reg1,mem/reg22、MOVreg,data3、MOVac,mem4、MOVmem,ac5、MOVsegreg,mem/reg6、MOVmem/reg,segreg7、MOVmem/reg,data60Reg8

AHALBHBLCHCLDHDLReg16

AXBXCXDXSIDIBPSPReg32

EAXEBXECXEDXESIEDIEBPESPSegreg

CSDSSSESFSGS61

對MOV指令有以下幾條具體規(guī)定,其中有些規(guī)定對其它指令也同樣有效。(1)兩個操作數(shù)的數(shù)據(jù)類型要相同,要同為8位、16位,如:MOV

BL,AX等是不正確的;(2)兩個操作數(shù)不能同時為段寄存器,如:MOV

ES,DS等;(3)代碼段寄存器CS不能為目的操作數(shù),但可作為源操作數(shù),如:指令MOV

CS,AX等不正確,但指令MOV

AX,CS等是正確的;(4)立即數(shù)不能直接傳給段寄存器,如:MOV

DS,100H等;(5)立即數(shù)不能作為目的操作數(shù),如:MOV

100H,AX等;(6)指令指針I(yè)P,不能作為MOV指令的操作數(shù);(7)兩個操作數(shù)不能同時為存儲單元,如:MOV

[SI],[DI]等,62DST與SRC必須類型匹配,即同時是字節(jié)、字或雙字類型。以下幾點要注意:

寄存器具有明確的類型,如AL,AX

立即數(shù)沒有明確的類型,MASM負責(zé)將立即數(shù)零擴展與目的操作數(shù)位數(shù)相同;但有時MASM不能確定內(nèi)存操作數(shù)的類型,需要用Byteptr,Word

ptr和Dword

ptr明確指出操作類型。Movbyteptr[bx],0Mov[bx],0

兩個操作數(shù)只要其中一個操作數(shù)的類型確定即可。63MOVdl,05hMovdx,05hMovedx,05hMov

eax,ecxMov

al,[bx]Mov

ax,[bx]MOVax,dlMovds,1000hMov[bx],[si]Mov

es,csMov

cs,axMov[bx],0Movbyteptr[bx],064例2:

MOVAL,‘E’把立即數(shù)送到AL寄存器。例1:MOVAX,DATA_SEGMOVDS,AX把數(shù)據(jù)段DATA_SEG的首地址送到DS寄存器。區(qū)別于:MOVBX,LIST例3:

MOVBX,OFFSETLIST把LIST的偏移地址(不是內(nèi)容)送到BX寄存器。65例4:MOVAX,Y[BP][SI]

例5:

MOVEAX,[EBX+ECX*4]662.MOVSX帶符號擴展傳送指令格式:MOVSX

DST,SRC兩種格式:MOVSXreg1,reg2MOVSXreg,mem傳送時把原操作數(shù)符號擴展送入目的操作數(shù)。67例3.25

MOVSXEAX,CL把CL寄存器中的8位數(shù),符號擴展為32位,送到EAX。例3.26MOVSXEDX,[EDI]683.MOVZX帶零擴展傳送指令格式:MOVSX

DST,SRC兩種格式:MOVSXreg1,reg2MOVSXreg,mem69MOVSX和

MOVZX區(qū)別:MOVSX的源操作數(shù)是帶符號數(shù),所以做符號擴展;MOVZX的源操作數(shù)是無符號數(shù),所以做零擴展70MOVSX和

MOVZX與一般雙操作數(shù)指令的區(qū)別:一般雙操作數(shù)指令的源操作數(shù)和目的操作數(shù)的長度一致;MOVSX和

MOVZX的源操作數(shù)長度一定要小于目的操作數(shù)長度。71例3.27MOVZXDX,AL例3.28MOVZXEAX,DATA72PUSH進棧指令

堆棧是一個重要的數(shù)據(jù)結(jié)構(gòu),它具有“先進后出”的特點,通常用來保存程序的返回地址。它主要有兩大類操作:進棧操作和出棧操作。

指令格式:PUSH

Reg/Mem

一個字進棧,系統(tǒng)自動完成兩步操作(操作數(shù)16位)

SP←SP-2,(SP)←操作數(shù);功能:將寄存器、段寄存器或存儲器中的一個字?jǐn)?shù)據(jù)壓入堆棧,堆棧指針減2。操作數(shù)32位,SP→ESP73POP進棧指令指令格式:POP

Reg/Mem

彈出一個字,系統(tǒng)自動完成兩步操作

(操作數(shù)16位)

操作數(shù)←(SP),SP←SP+2;

功能:將棧頂元素彈出送至某一寄存器、段寄存器(除CS外)或存儲器,堆棧指針加2。74PUSH指令的四種格式PUSHreg/mem/data/segreg8086不允許PUSH使用立即數(shù)尋址POP指令格式POPreg/mem/segreg

POP指令不允許使用立即數(shù)尋址方式75注意:PUSHSP

該指令入棧的是已修改了的sp的新值。

PUSHESP

該指令入棧的是執(zhí)行該指令之前的舊值。76【例】PUSHAX2816A7SS=5000HSS→50000堆棧段525005250152502SP=2500HSP→2107AX2816A7SS=5000HSS→50000堆棧段525005250152502

2107AX0721524FF524FE(1)執(zhí)行前(2)執(zhí)行后SP→SP=24FEH操作數(shù)為32位,????77堆棧段2107SP=24FEH操作數(shù)為32位,????【例】POPAX2816A7SS=5000HSS→50000525005250152502

524FF524FE(2)執(zhí)行前SP→07212816A7SS=5000HSS→50000525005250152502SP=2500HAX(1)執(zhí)行后SP→78例3.31PUSH[EAX]例3.32PUSH12H286以后的機器允許使用。79PUSHA/PUSHAD所有寄存器進棧指令PUSHA:16位通用寄存器依次進棧,次序:AX,CX,DX,BX,指令執(zhí)行前的SP,BP,SI,DI.指令執(zhí)行后(SP)(SP)-16PUSHAD:32位通用寄存器依次進棧,次序:EAX,ECX,EDX,EBX,指令執(zhí)行前的ESP,EBP,ESI,EDI.指令執(zhí)行后(SP)(SP)-3280POPA/POPAD所有寄存器出棧指令POPA:16位通用寄存器依次出棧,次序:DI,SI,BP,SP,BX,DX,CX,AX.指令執(zhí)行后(SP)(SP)+16說明:sp的出棧只是修改了指針使其后的BX能順利出棧,sp原始內(nèi)容被丟棄。81PUSHAD:32位通用寄存器依次進棧,次序:EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX.指令執(zhí)行后(SP)(SP)+32仍指向棧頂。82

XCHG:交換指令指令格式:

XCHGoprd1,oprd2;

交換兩個操作數(shù)的內(nèi)容。語法格式:

XCHGREG/MEM,REG/MEM對標(biāo)志位的影響:無說明:操作數(shù)至少有一個為寄存器。83例XCHGBX,[BP+SI](BX)=6F30H,(BP)=0200H,(SI)=0046H(SS)=2F00H,(2F246H)=4154H

OPR2的物理地址=2F000+0200+0046=2F246H指令執(zhí)行后,(BX)=4154H(2F246H)=6F30H84XCHGEAX,EBX85IN輸入OUT輸出XLAT換碼

這組指令只限于使用累加器EAX,AX或AL傳送信息。指令不影響標(biāo)志位2累加器傳送指令86IN輸入指令

輸入指令用來從指定的外設(shè)寄存器取信息送入累加器。它有幾種形式:

長格式:

INAL,PORT(字節(jié))

INAX,PORT(字)

INEAX,PORT(雙字)執(zhí)行操作:(AL)(PORT)(字節(jié))(AX)(PORT+1,PORT)(字)

短格式:

INAL,DX(字節(jié))

INAX,DX(字)

INEAX,DX(字)執(zhí)行操作:(AL)((DX))(字節(jié))(AX)((DX)+1,(DX))(字)87OUT輸出指令

長格式:

OUTPORT,AL

(字節(jié))

OUTPORT,AX

(字)

OUTPORT,EAX

(雙字)執(zhí)行操作:(PORT)(AL)(字節(jié))

(PORT+1,PORT)(AX)(字)短格式:

OUTDX,AL

(字節(jié))

OUTDX,AX

(字)

OUTDX,EAX

(雙字)執(zhí)行操作:((DX))(AL)(字節(jié))

((DX)+1,(DX))(AX)(字)輸出指令用來把累加器的內(nèi)容送往指定的外設(shè)存儲器,它有幾種形式:88

該指令的作用是從端口中讀入一個字節(jié)或字,并保存在寄存器AL或AX中。如果某輸入設(shè)備的端口地址在0~255(0~FFH)范圍之內(nèi),那么,可在指令I(lǐng)N中直接給出(指令的長格式),否則,要把該端口地址先存入寄存器DX中,然后在指令中由DX來給出其端口地址(0000~FFFFH)(短格式)。89例如INAX,28HMOVDATA_WORD,AX功能:將端口28的內(nèi)容傳送到存儲單元DATA_WORD中。MOVDX,3FCH;把端口號放入DX中。INAL,DX;從端口3FCH讀入一個字節(jié)到AL中INEAX,DX;從端口3FCH讀入一個雙字到EAX90例如:OUT5,AL;把AL的內(nèi)容輸出到端口5中OUT20H,AX;把AX的內(nèi)容輸出到端口20H、21H中MOVDX,3C0HOUTDX,AL;把AL的內(nèi)容輸出到端口3C0H中OUTDX,AX;把AX的內(nèi)容輸出到端口3C0H、3C1H中91XLAT換碼指令轉(zhuǎn)換指令有兩個隱含操作數(shù)BX和AL。格式:XLATOPR

或XLAT執(zhí)行操作:(AL)((BX)+(AL))功能:其功能是把BX的值作為內(nèi)存字節(jié)數(shù)組首地址、位移量為AL的數(shù)組元素的值傳送給AL。92例:MOVBX,offsettable;

MOVAL,3XLAT

32H31H33HDS=F000HDS→數(shù)據(jù)段F0040F0041

(Ax)=3table30H(BX)→F0042F0043把BX的值作為內(nèi)存字節(jié)數(shù)組首地址、下標(biāo)為AL的數(shù)組元素的值傳送給AL。

指令執(zhí)行后(AL)=33H(BX)=0040HAL:03H33H93地址傳送指令LEALDSLESLSSLFSLGS這一組指令完成把地址送到指定寄存器的功能。指令不影響標(biāo)志位。94取有效地址指令LEA:功能:把一個內(nèi)存變量的有效地址送給指定的寄存器。指令格式:

LEA

Reg,Mem

例1:LEABX,[BX+SI+0F62H]

如指令執(zhí)行前(BX)=0400H,(SI)=003CH,

指令執(zhí)行后(BX)=0400+003C+0F62=139EH例2:LEABX,

LIST MOVBX,OFFSETLIST95取段寄存器指令LDS,LES,LSS,LFS,LGS:指令格式如下:

LDS/LES

Reg,SRC執(zhí)行操作:(REG)

(SRC)

(SREG)

(SRC+2)或 (SREG)

(SRC+4)功能:把內(nèi)存單元的一個“低字”傳送給指令中指定的16位寄存器,把隨后的一個“高字”傳給相應(yīng)的段寄存器(DS、ES)。96例1:LESDI,[BX]指令執(zhí)行前(DS=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H指令執(zhí)行后(DI)=05AEH,(ES)=4000H例2:LSSESP,MEM97MOVBX,TABLE

;MOVBX,OFFSETTABLE

;LEABX,TABLE

;LDSBX,TABLE

;

;LESBX,TABLE

;

;40H00H00H30HTABLE3000H:1000H→(BX)=0040H(BX)=0040H(ES)=3000H(BX)=0040H(DS)=3000H(BX)=1000H(BX)=1000H98標(biāo)志寄存器傳送指令LAHF(loadAHwithflags)標(biāo)志送AHSAHF(storeAHintoflags)AH送標(biāo)志寄存器PUSHF/PUSHFD標(biāo)志進棧POPF/POPFD標(biāo)志出棧

99標(biāo)志寄存器傳送指令1.標(biāo)志送AH指令:

LAHF

執(zhí)行操作:(AH)

(FLAGS的低字節(jié))

2.AH送標(biāo)志寄存器指令:SAHF執(zhí)行操作:(FLAGS的低字節(jié))(AH)

3.標(biāo)志進棧指令:PUSHF

執(zhí)行操作:(SP)(SP)-2

((SP)+1,(SP))(FLAGS)4.標(biāo)志出棧指令:POPF執(zhí)行操作:(FLAGS)((SP)+1,(SP))(SP)

(SP)+2100類型轉(zhuǎn)換指令CBW字節(jié)轉(zhuǎn)換為字CWD字轉(zhuǎn)換為雙字CDQ雙字轉(zhuǎn)換為四字BSWAP字節(jié)交換指令不影響標(biāo)志位101類型轉(zhuǎn)換指令

CBW

執(zhí)行操作:AL

AX

若(AL)的最高有效位為0,則(AH)=00H

若(AL)的最高有效位為1,則(AH)=FFH

例:(AX)=0BA45H

CBW;(AX)=0045H

CWD;(DX)=0FFFFH(AX)=0BA45H

CWD

執(zhí)行操作:AX

(DX,AX)

若(AX)的最高有效位為0,則(DX)=0000H

若(AX)的最高有效位為1,則(DX)=FFFFH102

(3)CDQ雙字轉(zhuǎn)換成四字指令(4)BSWAPr32字節(jié)交換指令操作:使指令指定的32位寄存器的字節(jié)次序變反,1、4字節(jié)互換,2、3字節(jié)互換。例:BSWAPEAX指令執(zhí)行前(EAX)=11223344H指令執(zhí)行后(EAX)=44332211H字節(jié)次序變反。1033.3.2算術(shù)指令

算術(shù)運算指令是反映CPU計算能力的一組指令,也是編程時常使用的一組指令。它包括:加、減、乘、除及其相關(guān)的輔助指令。該組指令的操作數(shù)可以是8位、16位、32位。當(dāng)存儲單元是該類指令的操作數(shù)時,該操作數(shù)的尋址方式可以是任意一種存儲單元尋址方式。104算術(shù)指令加法指令

ADD、ADC、INC減法指令

SUB、SBB、DEC、NEG、CMP乘法指令

MUL、IMUL除法指令

DIV、IDIV105加法指令A(yù)DD(add)加法ADC(addwithcarry)帶進位加法INC(increment)加1XADD(exchangeandadd)交換并相加106ADD加法指令

1.一般形式:

ADDDST,SRC;(

DST)

(SRC)+(DST)

2.語法格式:

ADDreg/mem,reg/mem/imm

3.對條件標(biāo)志位的影響:

按一般規(guī)則影響CF,

OF,

SF和ZF兩個操作數(shù)必須類型匹配,且不能同時是內(nèi)存操作數(shù)。107ADC帶進位加法指令

1.一般形式:

ADCDST,SRC;(DST)

(SRC)+(DST)+CF

2.語法格式:

ADCreg/mem,reg/mem/imm;同ADD

3.對標(biāo)志位的影響:

按一般規(guī)則影響CF,OF,SF和ZF;同ADD兩個操作數(shù)必須類型匹配,且不能同時是內(nèi)存操作數(shù)。108INCOPR:加1指令

1.一般形式:

INCDST;(DST)

(DST)+1

2.語法格式:

INC

reg/mem

3.對標(biāo)志位的影響:

不影響CF,其它同ADD109XADD交換并相加指令

1.一般形式:

XADDDST,SRC;TEMP

(SRC)+(DST)

(SRC)

(DST)

(DST)

TEMP

2.語法格式:

XADDreg/mem,reg/mem/imm;同ADD

3.對標(biāo)志位的影響:

按一般規(guī)則影響CF,OF,SF和ZF;同ADD只能用于486以后的及其以后的機型兩個操作數(shù)必須類型匹配,且不能同時是內(nèi)存操作數(shù)。110加法指令對條件標(biāo)志位(SF、ZF、CF、OF)的影響1最高位向前有進位0否則CF=1兩個數(shù)同號,而相加結(jié)果與之異號0否則OF=SF:最高位為1,則SF=1.否則SF=0ZF:結(jié)果為0.則ZF=1.否則ZF=0.OF: 表示帶符號數(shù)的溢出CF:表示無符號數(shù)的溢出111ADDDX,0F0F0H(DX)=4652H例1:ZF=0,SF=0,CF=1,OF=0指令執(zhí)行后,(DX)=3742H,112例2:下列指令序列可在8086和80286中實現(xiàn)兩個雙精度數(shù)的加法。設(shè)目的操作數(shù)存放在DX和AX寄存器中,其中DX存放高位字。源操作數(shù)存放在BX、CX中,其中BX存放高位字。如指令執(zhí)行前:(DX)=0002H,(AX)=0F365H,(BX)=0005H,(CX)=0E024H指令序列為ADDAX,CX ADCDX,BX第一條指令(AX)=0D389H,SF=CF=1,ZF=OF=0第二條指令(DX)=0008H,SF=0,ZF=0,CF=0,OF=0113例3:XADDBL,DL指令執(zhí)行前(BL)=12H,(DL)=02H指令執(zhí)行后 (BL)=14H,(DL)=12H+1114減法指令SUB減法SBB帶借位減法DEC減1NEG求補CMP比較CMPXCHG比較并交換CMPXCHG8B比較并交換8字節(jié)115SUB減法指令

1.一般形式:

SUBDST,SRC;(DST)

(DST)-(SRC)

2.語法格式:

SUBreg/mem,reg/mem/imm

3.對標(biāo)志位的影響:

按一般規(guī)則影響CF,OF,SF和ZF兩個操作數(shù)必須類型匹配,且不能同時是內(nèi)存操作數(shù)。116SBB帶借位減法指令

1.一般形式:

SBBDST,SRC;(DST)

(DST)-(SRC)-CF

2.語法格式:

SBBreg/mem,reg/mem/imm

3.對標(biāo)志位的影響:

按一般規(guī)則影響CF,OF,SF和ZF兩個操作數(shù)必須類型匹配,且不能同時是內(nèi)存操作數(shù)。117DEC減1指令

1.一般形式:

DECDST;(DST)

(DST)-1

2.語法格式:

DECreg/mem

3.對標(biāo)志位的影響:不影響CF,其它同SUB118NEG求補指令(求相反數(shù))1.一般形式:

NEGDST;(DST)

-(DST)

2.語法格式:

NEGreg/mem

3.對標(biāo)志位的影響:

按一般規(guī)則影響CF,OF,SF和ZF119CMP比較指令

1.一般形式:

CMPDST,SRC;(DST)-

(SRC)

2.語法格式:

CMPreg/mem,reg/mem/imm

3.對標(biāo)志位的影響:

按一般規(guī)則影響CF,OF,SF和ZF兩個操作數(shù)必須類型匹配,且不能同時是內(nèi)存操作數(shù)。120CMP比較指令

該指令與SUB指令一樣執(zhí)行,但它不保存結(jié)果。只是根據(jù)結(jié)果設(shè)置條件標(biāo)志位。

CMP指令后往往跟著一條條件轉(zhuǎn)移指令,根據(jù)比較結(jié)果產(chǎn)生不同的程序分支。兩個操作數(shù)必須類型匹配,且不能同時是內(nèi)存操作數(shù)。121CMPXCHG比較并交換指令

1.一般形式:

CMPXCHGDST,SRC;

執(zhí)行的操作:累加器AC與DST相比較,如果(AC)=(DST),則ZF

1,(DST)

(SRC)否則,ZF

0,(AC)

(DST)

只能用于486以后的機型。122CMPXCHG8B比較并交換8字節(jié)指令

1.一般形式:

CMPXCHG8BDST

執(zhí)行的操作:EDX,EAX與DST相比較,如果(EDX,EAX)=(DST),則ZF

1,(DST)

(ECX,EBX)否則,ZF

0,(EDX,EAX)

(DST)

奔騰以后的機型。123減法指令對條件標(biāo)志位的影響:1被減數(shù)的最高有效位有向高位的借位0否則CF=1兩個操作數(shù)符號相反,而結(jié)果的符號與減數(shù)相同0否則OF=SF:最高位為1,則SF=1.否則SF=0ZF:結(jié)果為0.則ZF=1.否則ZF=0.124【例1】

SUB[SI+14H],0136H

指令執(zhí)行前

(DS)=3000H,(SI)=0040H,

(30054H)=4336H(30054H)=4200H,SF=0,ZF=0,CF=0,OF=0125【例2】

SUBDH,[BP+4]

執(zhí)行前(DH)=41H,(SS)=0000H,

(BP)=00E4H,(000E8)=5AH(DH)=0E7H,SF=1,ZF=0.CF=1.OF=0126X,Y,Z,均為雙精度數(shù),它們分別存放在地址為X,X+2;Y,Y+2;Z,Z+2的存儲單元中,存放時高位字在高地址中,低位字在低地址中。在8086和80286中可用下列指令序列實現(xiàn)。wX+Y+24-Z參考指令序列:MOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2ADDAX,24ADCDX,0SUBAX,ZSBBDX,Z+2MOVZ,AXMOVZ+2,DX127例3.51CMPXCHGCX,DX如指令執(zhí)行前:(AX)=2300H,(CX)=2300H,(DX)=2400H指令執(zhí)行后:因(CX)=(AX)故(CX)=2400H,ZF=1如指令執(zhí)行前:(AX)=2500H,(CX)=2300H,(DX)=2400H指令執(zhí)行后:因(CX)≠(AX)故(AX)=2400H,ZF=0128乘法指令MUL無符號數(shù)乘法IMUL帶符號數(shù)乘法129MUL:無符號數(shù)乘法

1.一般形式:

MULSRC;

2.語法格式:

MUL

reg8/mem8;AX=AL*SRCMUL

reg16/mem16;DX:AX=AX*SRCMUL

reg32/mem32;EDX:EAX=EAX*SRC

3.對標(biāo)志位的影響:

若結(jié)果的高一半為0,則CF=OF=0,否則,CF=OF=1;其余標(biāo)志無定義。指令執(zhí)行后這些條件標(biāo)志位的狀態(tài)不確定。130IMUL:有符號數(shù)乘法

1.一般形式:

IMULSRC;

2.語法格式:

IMUL

reg8/mem8;AX=AL*SRCIMUL

reg16/mem16;DX:AX=AX*SRCIMUL

reg32/mem32;EDX:EAX=EAX*SRC

3.對標(biāo)志位的影響:若乘積的高一半是低一半的符號擴展,則OF=CF=0;否則均為

CF=OF=1;其余標(biāo)志無定義。131

乘法指令如下影響OF和CF標(biāo)志:

MUL指令——若乘積的高一半(AH或DX)為0,則OF=CF=0;否則OF=CF=1。(用來檢查字節(jié)相乘的結(jié)果是字節(jié)還是字,或字相乘的結(jié)果是字還是雙字)

IMUL指令——若乘積的高一半是低一半的符號擴展,則OF=CF=0;否則均為1。乘法指令對其他狀態(tài)標(biāo)志沒有定義:指令執(zhí)行后這些標(biāo)志是任意的、不可預(yù)測(就是誰也不知道是0還是1)。對標(biāo)志沒有影響是指令的執(zhí)行不改變標(biāo)志的狀態(tài)。132例:MOVAL,0B4HMOVBL,11HMULBLMOVAL,0B4HMOVBL,11HIMULBLOF=CF=1AX=FAF4H=-1292DBL=11H=17DAL=B4H=-76DOF=CF=1;AX=OBF4H=3060DBL=11H=17DAL=B4H=180D1334.除法指令

無符號數(shù)除法指令:

DIVSRC執(zhí)行操作:字節(jié)操作(AL)

(AX)/(SRC)的商(AH)

(AX)/(SRC)的余數(shù)字操作(AX)

(DX,AX)/(SRC)的商(DX)

(DX,AX)/(SRC)的余數(shù)注意:除法指令對所有條件標(biāo)志位無定義。但可產(chǎn)生溢出。134雙字操作(EAX)

(EDX,EAX)/(SRC)的商(EDX)

(EDX,EAX)/(SRC)的余數(shù)商和余數(shù)都是無符號數(shù)135

帶符號數(shù)除法指令:

IDIVSRC執(zhí)行的操作:與DIV相同,但操作數(shù)必須是帶符號數(shù),商和余數(shù)也都是帶符號數(shù),且余數(shù)的符號和被除數(shù)的符號相同。136注意:由于除法指令的字節(jié)操作要求被除數(shù)為16位,字操作要求被除數(shù)為32位,雙字操作要求被除數(shù)為64位,因此需要用符號擴展的方法取得出發(fā)指令所需要的被除數(shù)格式。

137例:MOVAX,0400H;AX=400H=1024DMOVBL,0B4H;BL=B4H=180DDIVBL;商AL=05H=5D;余數(shù)AH=7CH=124MOVAX,0400H;AX=400H

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論