第六章匯編語言及其程序設(shè)計_第1頁
第六章匯編語言及其程序設(shè)計_第2頁
第六章匯編語言及其程序設(shè)計_第3頁
第六章匯編語言及其程序設(shè)計_第4頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第六章 匯編語言及其程序設(shè)計主要內(nèi)容n匯編程序及其開發(fā)過程n指令格式及尋址方式n8086匯編語言的基本語法n順序、分支、循環(huán)結(jié)構(gòu)程序設(shè)計n子程序設(shè)計匯編語言程序及開發(fā)過程n基本概念n匯編語言:是一種面向機(jī)器的程序設(shè)計語言,它是機(jī)器語言的符號化描述。n特點(diǎn):代碼短、空間省、效率高n匯編語言源程序:用匯編語言編寫的程序n目標(biāo)程序:匯編語言經(jīng)翻譯程序翻譯成的代碼程序(即機(jī)器語言的程序)。n匯編程序:把源程序轉(zhuǎn)變?yōu)橄鄳?yīng)目標(biāo)程序的翻譯程序n宏匯編:不僅包含一般匯編語言的功能,而且采用了高級語言使用的數(shù)據(jù)結(jié)構(gòu),是一種接近高級語言的匯編語言。n匯編語言程序的開發(fā)過程n編寫源程序:EDIT(DOS),Text

2、Pad(Windows)n將源程序保存為 XXXX.asm 文件n使用MASM生成目標(biāo)程序 XXXX.OBJn使用LINK生成可執(zhí)行程序 XXXX.EXE源程序XXXX.asm目標(biāo)程序XXXX.obj可執(zhí)行程序XXXX.exe設(shè)計編輯用MASM匯編用LINK連接執(zhí)行使用匯編語言的過程n基本匯編語言程序?qū)嵗?1) DATA SEGMENT(2) String DB 程序設(shè)計,”$”(3) DATA ENDS(4) CODE SEGMENT(5) ASSUME CS:CODE,DS:DATA,SS:STACK(6) START: MOV AX,DATA(7) MOV DS,AX(8) MOV DX

3、,OFFSET String(9) MOV AH,9(10) INT 21H(11) MOV AX,4C00H (12) INT 21H(13) CODE ENDS(14) STACK SEGMENT STACK(15) DB 256 DUP(?)(16) STACK ENDS(17) END STARTAH = 9功能:顯示字符串DS:DX = 串地址字符串以“$”結(jié)尾AH = 4C功能:帶返回碼終止AL = 返回碼n匯編語言程序 的開發(fā)過程開 始結(jié) 束用編輯工具編輯源程序源程序 XXXX.asm用MASM進(jìn)行匯編有語法錯誤?YN目標(biāo)文件 XXXX.obj用LINK連接有錯誤?YN執(zhí)行可執(zhí)行

4、文件XXXX.exe正確?NY用DEBUG調(diào)試n結(jié)構(gòu)化程序設(shè)計n程序設(shè)計的基本步驟n分析問題n確定處理方案n確定具體操作步驟,繪制流程圖n編寫程序n調(diào)試并運(yùn)行程序,得到預(yù)期結(jié)果n整理輸出結(jié)果,寫出有關(guān)文檔資料n流程圖的畫法起止框執(zhí)行框流程線條件滿足?條件滿足?YYNN判斷框AA連接點(diǎn)指令格式及尋址方式n指令格式操 作 碼操 作 數(shù)OP CODEDW0127形式1OP CODEDW0127形式2OP CODEDW0127形式3DATA/DISPDATA/DISP12個字節(jié)12個字節(jié)MODREGR / MDATA/DISPDATA/DISP12個字節(jié)12個字節(jié)方向位,0:REG字段指出的寄存器為源

5、操作數(shù)寄存器 1:REG字段指出的寄存器為目的操作數(shù)寄存器字位,0:參加運(yùn)算的操作數(shù)為字節(jié)操作數(shù) 1:參加運(yùn)算的操作數(shù)為字操作數(shù)MOD含 義MOD含 義00存儲器方式,無位移量01存儲器方式,有8位位移量10存儲器方式,有16位位移量11寄存器方式,無位移量MOD字段編碼表REGW=1W=0REGW=1W=0000AXAL100SPAH001CXCL101BPCH010DXDL110SIDH011BXBL111DIBHREG字段編碼表存儲器方式寄存器方式有效地址的計算公式W=0W=100011011000(BX)+(SI)(BX)+(SI)+D8(BX)+(SI)+D16ALAX001(BX)

6、+(DI) (BX)+(DI) +D8(BX)+(DI) +D16CLCX010(BP)+(SI)(BP)+(SI) +D8(BP)+(SI) +D16DLDX011(BP)+(DI)(BP)+(DI) +D8(BP)+(DI) +D16BLBX100(SI)(SI) +D8(SI) +D16AHSP101(DI)(DI) +D8(DI) +D16CHBP110D16(BP) +D8(BP) +D16DHSI111(BX)(BX) +D8(BX) +D16BHDIMODR/Mn8086/8088常用指令集n數(shù)據(jù)傳送指令(14條)傳送MOV堆棧操作PUSH , POP交換XCHG輸入、輸出IN

7、, OUT轉(zhuǎn)換XLAT地址傳送LEA , LDS , LES標(biāo)志傳送PUSHF , POPF , LAHF , SAHFn算術(shù)運(yùn)算指令(20條)加法ADD , ADC , AAA , DAA加“1”INC減法SUB , SBB , AAS , DAS減“1”DEC比較CMP求補(bǔ)NEG乘法MUL , IMUL , AAM除法DIV , IDIV, AAD符號擴(kuò)展CBW , CWDn邏輯運(yùn)算指令(13條)求反NOT邏輯乘AND邏輯加OR異或XOR測試位TEST左/右移位SHL , SHR , SAL , SAR左/右循環(huán)移位ROL , ROR , RCL , RCRn字符串指令(10條)傳送串MO

8、VS , MOVSB/MOVSW串比較CMPS , CMPSB/CMPSW串掃描SCAS , SCASB/SCASW取字符串LODS , LODSB/LODSW存字符串STOS , STOSB/STOSW重復(fù)前綴REP , REPZ , REPNZn控制轉(zhuǎn)移指令(28條)子程序調(diào)用CALL子程序返回RET無條件轉(zhuǎn)移JMP條件轉(zhuǎn)移JZ,JNZ,JC,JNC,JO,JNO,JS,JNS,JP,JNP,JA,JAE,JB,JBE,JG,JGE,JL,JLE循環(huán)LOOP條件循環(huán)LOOPNE , LOOPE寄存器CX=0轉(zhuǎn)移JCXZ中斷INT , INTO中斷返回IRETn處理機(jī)控制指令(12條)清除C

9、F標(biāo)志CLC進(jìn)位有效位CF求反CMC置CF標(biāo)志STC置DF標(biāo)志STD清除DF標(biāo)志CLD置IF標(biāo)志STI清除IF標(biāo)志CLI處理機(jī)暫停HLT等待狀態(tài)WAIT將數(shù)據(jù)傳送給協(xié)處理器(提供到數(shù)據(jù)/地址線上)ESC保證總線的控制LOCK無操作NOPn尋址方式(重點(diǎn))n概述n目的n大多數(shù)情況下,指令不直接給出操作數(shù)本身,而是給出存放操作數(shù)的寄存器或者是內(nèi)存單元的地址。n大多數(shù)情況下,操作數(shù)地址也不是直接給出,而是給出計算操作數(shù)地址的方法,稱之為尋址方式n尋址方式的種類n與數(shù)據(jù)有關(guān)的尋址方式(7種)n與轉(zhuǎn)移地址有關(guān)的尋址方式(4種)nMOV指令(簡介)n指令格式 mov 目的,源n功能:該指令將源內(nèi)容送至目的

10、地址內(nèi)n例: mov ax, bx 將寄存器bx中的內(nèi)容送到寄存器ax中n與數(shù)據(jù)有關(guān)的尋址方式n立即尋址方式n操作數(shù)直接存放在指令中,緊跟在操作碼之后,它作為指令的一部分存放在代碼段里,這種操作數(shù)稱為立即數(shù)。n立即數(shù)可以是8位的或者16位的。(386之后的機(jī)器也可以是32位的)n立即數(shù)方式用來表示常數(shù),它經(jīng)常用來給寄存器賦初值。只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段,且源操作數(shù)長度應(yīng)與目的操作數(shù)長度一致。n立即數(shù)尋址方式舉例 MOV AL, 5 - 指令執(zhí)行后(AL)= 05H MOV AX, 3064H - 指令執(zhí)行后(AX)= 3064H6430OP指令A(yù)Xn寄存器尋址n操作數(shù)在寄存

11、器中,指令中指定寄存器號。n16位的操作數(shù),寄存器可以是 AX,BX,CX,DX,SI,DI,SP,BP。n8位的操作數(shù),寄存器可以是 AH,AL,BH,BL,CH,CL,DH,DL。例: MOV AX , BX 指令執(zhí)行前: (AX)= 3064H (BX)= 1234H 指令執(zhí)行后: (AX)= 1234H (BX)= 1234H這種方式中,不需要訪問存儲器來取得操作數(shù),所以這種方式可以得到較高的運(yùn)算速度立即數(shù)尋址寄存器尋址直接尋址寄存器間接尋址寄存器相對尋址基址變址尋址相對基址變址尋址不需要計算操作數(shù)的地址需要計算操作數(shù)的有效地址操作數(shù)的地址段地址偏移地址+我們把這個偏移地址稱為我們把這

12、個偏移地址稱為有效地址(有效地址(EA)有效地址(有效地址(EA)= 基址基址 + 變址變址 + 位移量位移量存放在指令中的一個8位、16位的數(shù),但它不是立即數(shù),而是一個地址。存放在變址寄存器(SI,DI)中的內(nèi)容,它通常用來訪問數(shù)組中的某個元素或字符串中的某個字符存放在基址寄存器(BX,BP)中的內(nèi)容,它是有效地址中的基址部分,通常用來指向數(shù)據(jù)段中數(shù)組或字符串的首地址段偏移CSIPSSSP或BPDSBX、DI、SI或一個16位數(shù)ESDI(用于串指令)8086/80888086/8088段寄存器和相應(yīng)存放偏移地址的寄存器之間的默認(rèn)組合段寄存器和相應(yīng)存放偏移地址的寄存器之間的默認(rèn)組合成分16位尋

13、址位移量0,8,16位基址寄存器BX,BP變址寄存器SI,DI1616位尋址是有效地址的三種成分的組成位尋址是有效地址的三種成分的組成n直接尋址方式n操作數(shù)的有效地制只包含位移量一種成分,其值就存放在代碼段中指令的操作碼之后。位移量的值就是操作數(shù)的有效地址。例: MOV AX , 2000H 假設(shè)(DS)= 3000H物理地址 = 3000H * 16 +2000H = 32000H30000H32000H6430OP代碼段5030數(shù)據(jù)段AX 假設(shè)(32000H)= 3050H 則指令執(zhí)行后,AX = 3050Hn可以用符號來代替數(shù)值地址 MOV AX , VALUE MOV AX , VAL

14、UE 如果在附加段,則應(yīng)指定段前綴 MOV AX , ES:VALUE MOV AX , ES:VALUE直接尋址方式只適用于處理單個變量。例如某個存放在存儲器中的變量,可以用直接尋址方式先把變量取出送到一個寄存器中,然后再做進(jìn)一步的處理n寄存器間接尋址方式n操作數(shù)的有效地址只包含基址寄存器或變址寄存器的內(nèi)容。因此有效地址就在某個寄存器中,而操作數(shù)在存儲器中。n16位尋址,可用的寄存器是BX,BP,SI,DI。 使用BX、SI、DI,其默認(rèn)段是數(shù)據(jù)段DS 使用BP,其默認(rèn)段是堆棧段SS例:MOV AX , BX如果(DS)= 2000H (BX)= 1000H物理地址 = 2000H * 16

15、 + 1000H = 21000H如果(21000H)= 50A0H指令執(zhí)行后 AX = 50A0H20000H21000HA050數(shù)據(jù)段AX寄存器間接尋址方式可以用于表格處理,執(zhí)行完一條指令后,只需修改寄存器內(nèi)容就可以取出表格的下一項(xiàng)。n寄存器相對尋址方式n操作數(shù)的有效地址為基址寄存器或變址寄存器的內(nèi)容和指令中指定的位移量之和。例:MOV AX , COUNTSI(也可以表示為 MOV AX , COUNT+SI)如果(DS)= 3000H (SI)= 2000H COUNT = 3000H物理地址 = 3000H * 16 + 2000H + 3000H = 35000H如果(35000H

16、)= 1234H指令執(zhí)行后 AX = 1234H30000H35000H0030OP代碼段3412數(shù)據(jù)段AX33000HCOUNTSI寄存器相對尋址方式同樣可以用于表格的處理,表格的首地址可設(shè)置為偏移量的地址,利用修改基址或變址寄存器中的內(nèi)容來取得表格中的值n基址變址尋址方式n操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容之和例:MOV AX , BXDI(也可以表示為 MOV AX , BX+DI)如果(DS)= 2100H (BX)= 0158H (DI)= 10A5H物理地址 = 2100H * 16 + 0158H + 10A5H = 221FDH如果(221FDH)= 123

17、4H指令執(zhí)行后 AX = 1234H21000H221FDH3412數(shù)據(jù)段AX21158HBXDI基址變址尋址方式同樣可以用于數(shù)組或表格的處理,表格的首地址可存放在基址寄存器中,利用變址寄存器來訪問數(shù)組或表格中的元素n相對基址變址尋址方式n操作數(shù)的有效地址是一個基址寄存器與一個變址寄存器的內(nèi)容和指令中指定的位移量之和。例:MOV AX , MASKBXSI(也可以表示 為MOV AX , MASK+BX+SI)如果(DS)= 3000H (BX)= 2000H (SI)= 1000H MASK = 0250H物理地址 = 3000H * 16 + 2000H + 1000H + 0250H =

18、 33250H如果(33250H)= 1234H指令執(zhí)行后 AX = 1234H相對基址變址尋址方式常用于二維數(shù)組的尋址,如存儲器中存放著由多個記錄組成的文件,則位移量可以指向文件之首,基址寄存器指向某個記錄,變址寄存器則指向該記錄中的一個元素33250H30000H5002OP代碼段3412數(shù)據(jù)段AX32000HBXSI32250HMASKn與轉(zhuǎn)移地址有關(guān)的尋址方式n目的n確定轉(zhuǎn)移指令(條件轉(zhuǎn)移指令、無條件轉(zhuǎn)移指令)及轉(zhuǎn)子指令(CALL)的轉(zhuǎn)向地址n當(dāng)轉(zhuǎn)移發(fā)生在段內(nèi)的時候,給出即將轉(zhuǎn)移去執(zhí)行的那條指令的偏移地址,并用該偏移地址取代IP寄存器中的內(nèi)容n當(dāng)轉(zhuǎn)去執(zhí)行的指令與原來執(zhí)行的指令不在同一段

19、時,則還需要用新的代碼段基址取代CS寄存器中原有的內(nèi)容n種類n段內(nèi)直接尋址n段內(nèi)間接尋址n段間直接尋址n段間間接尋址n段內(nèi)直接尋址n轉(zhuǎn)向的有效地址是當(dāng)前IP寄存器的內(nèi)容和指令中指定的8位或16位位移量之和n無條件轉(zhuǎn)移指令在位移量為8位的時候稱為短跳轉(zhuǎn) JMP SHORT QUEST IP IP+8位位移量n無條件轉(zhuǎn)移指令在位移量為16位的時候稱為近跳轉(zhuǎn) JMP NEAR PTR PROGIA IP IP+16位位移量n特點(diǎn) 指令中的位移量是轉(zhuǎn)向的有效地址與當(dāng)前IP值之差,所以這一程序段在內(nèi)存的不同區(qū)域運(yùn)行時,轉(zhuǎn)移指令本身不會發(fā)生變化,符合程序再定位的要求位移量IP+EAn段內(nèi)間接轉(zhuǎn)移n轉(zhuǎn)向的有

20、效地址是一個寄存器或是一個存儲單元的內(nèi)容。 這個寄存器或者存儲單元中的內(nèi)容可以用除立即數(shù)以外的任何一種尋址方式獲得 (IP)(EA)數(shù)據(jù)尋址方式根據(jù)數(shù)據(jù)尋址方式計算出有效地址的值轉(zhuǎn)向的有效地址這種尋址方式和以下的兩種尋址方式都不能用于條件轉(zhuǎn)移指令。即,條件轉(zhuǎn)移指令只能使用段內(nèi)直接尋址,而無條件轉(zhuǎn)移指令JMP和CALL可以使用四種尋址方式中的任何一種。n假設(shè): (DS)= 2000H,(BX)= 1256H, (SI)= 528FH , 位移量 = 20A1H (232F7)= 3280H,(264E5H)= 2450H JMP BX 執(zhí)行該指令后,(IP)= 1256H JMP TABLEBX

21、 執(zhí)行該指令后, (IP)= (DS)* 16 + (BX)+ 位移量) = (20000H + 1256H + 20A1H) = (232F7H)= 3280H JMP BXSI (IP)= (DS)* 16 + (BX)+ (SI) = (20000H + 1256H + 528H) = (264E5H)= 2450H寄存器相對尋址方式基址變址尋址方式n段間直接尋址n指令中直接提供了轉(zhuǎn)向的段地址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的內(nèi)容,用指令中指定的段地址取代CS寄存器中的內(nèi)容n完成的操作 JMP FAR PTR OPR (IP) OPR的段內(nèi)偏移地址 (CS) OP

22、R所在的段地址n段間間接尋址n用存儲器中的兩個相繼字的內(nèi)容來取代IP和CS寄存器中的原始內(nèi)容,以達(dá)到段間轉(zhuǎn)移的目的。 存儲單元的地址是由指令指定除立即數(shù)方式和寄存器方式以外的任何一種數(shù)據(jù)尋址方式獲得n完成的操作 JMP DWORD PTR OPR (IP) (EA) (CS) (EA+2)n例 JMP DWORD PTRBX+8 (BX)= 3706H,(DS)= 1000H 物理地址 = (DS)* 16 + (BX)+ 8 = 10000H + 3706H + 8 = 1370EH B2H67H05H33H1370EHCSIP指令執(zhí)行后,(IP)= 67B2H,(CS)= 3305H808

23、6宏匯編語言的基本語法n匯編語句n指令性語句n經(jīng)匯編之后,有目標(biāo)程序與之對應(yīng),是有實(shí)際操作的語句。n一般指令性語句 一條指令性語句對應(yīng)一條8086/8088機(jī)器指令n宏語句 該語句由偽操作符定義,通過宏定義、宏調(diào)用、宏擴(kuò)展的過程來實(shí)現(xiàn)宏語句。一個宏語句對應(yīng)一組目標(biāo)代碼程序macro name MACRO dummy parameter list 宏定義體 ENDMmacro name actual parameter listn指令性語句格式 標(biāo)號:前綴指令助記符操作數(shù),操作數(shù);注釋n標(biāo)號:代表“:”后面語句的存儲地址,供轉(zhuǎn)移指令(JMP)、轉(zhuǎn)子指令(CALL)、循環(huán)指令(LOOP)使用。 由

24、字母、數(shù)字組成串(第一個字符非數(shù)字)n前綴:是與串操作運(yùn)算(MOVS、CMPS、SCAS、LODS、STOS)以及總線封鎖指令(LOCK)配合使用的部分。它們是REP、REPZ、REPE、REPNZ、REPNE等等。 LOOP1: REP MOVS DEST, SOURCEn操作數(shù)的數(shù)目可以為0,1或2,用“,”隔開n指示性語句n功能:對程序的起止信息、分段情況、變量說明、內(nèi)存結(jié)構(gòu)等進(jìn)行說明。n格式: 名字偽操作指令參數(shù),參數(shù);注釋nPC宏匯編的偽指令n段定義偽指令:SEGMENT,ENDS,ASSUME,GROUP,ORGn符號定義偽指令:EQU,=,LABELn數(shù)據(jù)定義偽指令:DB,DW,

25、DD,DQ,DT,RECORD,STRUCn過程定義偽指令:PROC,ENDPn宏處理偽指令:MACRO,REPT,IRPCn條件匯編偽指令:IF,ENDIF,IFDIF,IFDEFn基本元素n匯編語言字符集n大寫字母:AZn小寫字母:azn數(shù)字:09n符號:+,-,*,/,(,),;,,,.,:,_,“,$,&,#,?,! 注:匯編語言源程序中,大小寫字母作用相同n常量與數(shù)值表達(dá)式n常量n在匯編時已經(jīng)確定的值。在指令中作為直接操作數(shù),或者給變量賦初值n類型n數(shù)值常量:以數(shù)值的形式直接寫在語句中n符號常量:預(yù)先為它定義一個名字,然后在語句中用名字來表示該常量(提高程序的可讀性) 用 E

26、QU 或 = 來定義 例:PORT EQU 83H ALPHT = 35*21數(shù)據(jù)形式格 式X取值范圍例子注釋二進(jìn)制X X X X X X X X B0 , 101110101B八進(jìn)制X X X X OX X X X Q0 70 7735O421Q十進(jìn)制X X X XX X X X D0 90 937562358D缺省形式十六進(jìn)制X X X X H0 F0FB23H最前面的一個字符必須是09ASCIIX X“X X”ASCII字符128個OK“Pass”十進(jìn)制實(shí)數(shù)X X . X X E X X0 923.456E-7各種形式常量的格式返 回n標(biāo)號n標(biāo)號是為一組機(jī)器指令所起的名字,用于程序轉(zhuǎn)移指

27、令、調(diào)用指令和循環(huán)指令的操作數(shù)(轉(zhuǎn)向地址),一般在CS段內(nèi)定義和使用。n標(biāo)號的屬性:段地址、段內(nèi)偏移地址和類型 標(biāo)號所處的代碼段的段基址,稱為該標(biāo)號的段地址 標(biāo)號所處的位指向?qū)τ诙问椎刂返南鄬Φ刂?,稱為該標(biāo)號的段內(nèi)偏移地址n形式一:標(biāo)號n形式二:OFFSET 標(biāo)號LC1: MOV AL, 20H JMP LC1MOV BX, OFFSET LB1MOV BX, OFFSET LB1 與 MOV BX, LB1 有什么不同? 標(biāo)號有FAR(遠(yuǎn)標(biāo)號)和NEAR(近標(biāo)號)種類型n近標(biāo)號:該標(biāo)號的定義在本段 在機(jī)器指令助記符之前,加一標(biāo)號名字,后面緊跟一個冒號 “ :” LC1: MOV AL, 20

28、H JMP LC1n遠(yuǎn)標(biāo)號:該標(biāo)號的定義不在本段 過程定義時,為過程起的名字也是標(biāo)號,可作為轉(zhuǎn)子指令的操作數(shù),這類標(biāo)號的類型在定義子過程時確定 PROP PROC FAR PROP ENDPn注:標(biāo)號在使用時 (1)循環(huán)指令、條件轉(zhuǎn)移指令只能引用NEAR型, 并且定義標(biāo)號語句和使用標(biāo)號語句的相對 距離只能在 128 +127 字節(jié)范圍內(nèi) (2)無條件轉(zhuǎn)移指令、調(diào)用(轉(zhuǎn)子)指令可引 用 NEAR 和 FAR 兩種類型的標(biāo)號 (3)如果同一段內(nèi),無條件轉(zhuǎn)移指令語句到定 義該標(biāo)號語句的距離在 128 +127 字節(jié) 范圍內(nèi),則可在使用的標(biāo)號前指定為短標(biāo) 號:記為 SHORT 標(biāo)號n變量n變量的定義及

29、格式n變量是內(nèi)存中一個數(shù)據(jù)區(qū)的名字,可以作為指令的存儲器操作數(shù)來引用n變量定義的格式: 變量名 變量類型定義符 表達(dá)式 , 變量名:由用戶定義(符合標(biāo)識符定義的規(guī)范)變量類型:DB: 1個字節(jié) DW: 2個字節(jié),即1個字DD: 4個字節(jié),即2個字DQ: 8個字節(jié),即4個字DT: 10個字節(jié),即5個字n表達(dá)式n算術(shù)運(yùn)算符:+,-,*,/,n邏輯運(yùn)算符:NOT, AND, OR, XORn關(guān)系運(yùn)算符:nEQ - 相等nNE - 不相等nLT - 小于nGT - 大于nLE - 小于或等于nGE - 大于或等于n分析操作符nTYPE 格式: TYPE 變量或標(biāo)號 說明:變量:則匯編程序?qū)⒒厮驮撟兞款?/p>

30、型包含的 字節(jié)數(shù) 標(biāo)號:則匯編程序?qū)⒒厮痛碓摌?biāo)號類型的 數(shù)值。 NEAR(-1)、FAR(-2)例: ARRAY DW 1, 2, 3 ADD SI, TYPE ARRAY 匯編的結(jié)果為 ADD SI, 2nLENGTH 格式: LENGTH 變量 說明:回送分配給該變量的單元數(shù),表達(dá)式中帶 DUP 時有效,非 DUP 時,回送1例: FEES DW 100DUP(0) MOV CX, LENGTH FEES則匯編結(jié)果為: MOV CX, 100例: ARRAY DW 1, 2 MOV CX, LENGTH ARRAY則匯編結(jié)果為: MOV CX, 1nSIZE 格式:SIZE 變量 說明:

31、回送分配給該變量的字節(jié)數(shù),此值是 LENGTH 值和 TYPE 值的乘積例: ARRAY DW 1, 2, 3 MOV CX, SIZE ARRAY則匯編結(jié)果為: MOV CX, 2nOFFSET 格式:OFFSET 變量或標(biāo)號 說明:回送該變量或標(biāo)號的偏移地址值例: MOV BX, OFFSET OPR 則匯編程序?qū)PR的偏移地址回送給指令,在 執(zhí)行時,將該偏移地址裝入BX寄存器中nSEG 格式:SEG 變量或標(biāo)號 說明:回送該變量或標(biāo)號的段地址例: MOV BX, SEG OPR則匯編程序?qū)PR所在的段基址送入BX寄存器n屬性操作符 I. PTR 格式:類型 PTR 表達(dá)式 類型:BY

32、TE, WORD, DWORD, FAR, NEAR 表達(dá)式:是存儲器操作數(shù) 說明:用來給已分配的存儲地址賦予另一種屬性,使 該地址具有另一種類型例: MOV BX, 5 非法指令MOV BYTE PTR BX, 5MOV WORD PTR BX, 5 II. 段超越前綴 說明:用來表示一個標(biāo)號、變量或地址表達(dá)式的段屬 性 例:用段前綴來指定某段的地址操作數(shù) MOV AX, ES:BX+SI III.SHORT 說明:表明JMP指令中轉(zhuǎn)移地址的屬性 128+127n指示性語句(說明性語句)n存儲分配語句n數(shù)值表達(dá)式如 3*20n? 保留存儲空間但不存入數(shù)據(jù)例: ABC DB 0, ?, ?,

33、0 DEF DW ?, 52 存儲空間分配如圖所示 nASCII字符串例: MESSAGE DB HELLO 存儲空間分配如圖所示00-00-3400ABCDEF48454C4C4FMESSAGEnnDUP(?) 重復(fù)因子n為正整數(shù),表示數(shù)據(jù)項(xiàng)重復(fù)n次例: ARRAY1 DB 2 DUP (0, 1, 2, ?) ARRAY2 DB 100 DUP (?) 內(nèi)存分配如圖所示nnDUP( 表達(dá)式 表達(dá)式, )例: ARRAY3 DB 100 DUP ( 0, 2 DUP (1, 2), 0, 3)000102-000102-ARRAY1ARRAY2-100個字節(jié)返 回n段定義n段定義語句段名 S

34、EGMENT 邊界類型連接類型類別段名 ENDS邊界類型:用來指明段的起始邊界連接類型:段的連接方式類別:表示段的類別,連接程序只使同類別的段發(fā)生關(guān)聯(lián)n段值設(shè)定偽指令語句ASSUMEn格式 ASSUME 段寄存器:段名,段寄存器:段名,SEGA SEGMENTSEGA ENDSSEGB SEGMENTSEGB ENDSCODE SEGMENT ASSUME DS:SEGA, ES:SEGB, CS:CODE, SS:NOTHING MOV AX, SEGA MOV DS, AX MOV AX, SEGB MOV ES, AX CODE ENDSnORG 置匯編單元計數(shù)器語句n功能:用來指出其后

35、的程序段或數(shù)據(jù)塊存放的起 始地址的偏移量n格式: ORG 表達(dá)式 匯編程序用語句中表達(dá)式之值作為起始地址連續(xù)存放程序n例: VECTORS SEGMENT ORG 10 VECT1 DW 47A5H ORG 20 VECT2 DW 0C596H VECTORS ENDSVECT1偏移地址為0AHVECT2偏移地址為14Hn地址計數(shù)器$n匯編程序?qū)υ闯绦蜻M(jìn)行匯編時,使用$保存當(dāng)前正在匯編的指令的偏移地址。n開始匯編或在每一段開始時,地址計數(shù)器初始化為0,以后在匯編過程中,每處理一條指令,地址計數(shù)器增加一個值,此值為該指令所需要的字節(jié)數(shù)n例 JNE $+6 當(dāng)上一條指令執(zhí)行的結(jié)果不為零時,轉(zhuǎn)向地址

36、是JNE指令的首地址加上6 注:$+6必須為另一條指令的首地址,否則,匯編 程序?qū)⒅甘境鲥e信息n例:計算字符串的長度 STRING DB “THIS IS A BOOK”能否用分析操作符SIZE來計算?COUNT EQU $ - STRINGn例:計算數(shù)的個數(shù) ARRAY DW 1, 2, 3, 4, 5, 6COUNT EQU ($ - ARRAY)/2010002000300040005000600$ARRAY0000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BHn過程定義n過程也稱為 “子程序”nCALL指令調(diào)用過程,RE

37、T指令結(jié)束過程n過程具有“NEAR”屬性和“FAR”屬性,如果不指定屬性,匯編程序認(rèn)為它是“NEAR”屬性n具有NEAR屬性的過程,只能由屬于該過程的段中的其它程序調(diào)用n具有FAR屬性的過程,可以由任意段調(diào)用n格式過程名 PROC NEAR 或 FAR RET過程名 ENDPSEGX SEGMENT SUBT PROC FAR RETSUBT ENDP CALL FAR PTR SUBT SEGX ENDSSEGY SENGMENT CALL FAR PTR SUBT SEGY ENDSnDOS下程序正常結(jié)束的方式nMOV AH, 4CH INT 21Hn主程序名 PROC FAR PUSH

38、DS MOV AX, 0 PUSH AX RET 主程序名 ENDP順序結(jié)構(gòu)程序設(shè)計n數(shù)據(jù)傳送指令n一般傳送指令n格式:MOV 目的,源n功能:將源內(nèi)容送至目的地址內(nèi)n說明:該指令有7種格式nMOV MEM / REG1 , MEM / REG2 MOV AX, BX MOV AX, 2000H MOV 2000H, DSnMOV REG, DATAMOV AL, 5不可兩個內(nèi)存位置直接傳送數(shù)據(jù)nMOV AC , MEMnMOV MEM, ACnMOV SEGREG, MEM / REGMOV DS, AXnMOV MEM/REG, SEGREGMOV AX, DSnMOV MEM/REG,

39、DATAMOV AX, 3168H段寄存器之間不能傳送數(shù)據(jù)MOV指令不能改變CS當(dāng)前的內(nèi)容立即數(shù)通用寄存器段寄存器內(nèi)存MOV指令傳送方向圖n交換指令n格式:XCHG OPR1, OPR2n功能:將源操作數(shù)OPR2內(nèi)容和目的操作數(shù)OPR1 內(nèi)容互換 (OPR1)(OPR2)n說明n段寄存器不能作為操作數(shù)n無法將兩個內(nèi)存內(nèi)容互換n例:XCHG BX, BP+SI (BX)= 6F30H (BP)= 0200H (SI)= 0046H (SS)= 2F00H (2F246H)= 4154H OPR2的物理地址 = 2F00H*16d + 0200H +0046H = 2F246H指令執(zhí)行后:(BX)

40、= 4154H(BP+SI)= 6F30Hn堆棧操作命令n格式nPUSH SRC 執(zhí)行的操作(16位指令) (SP) (SP)- 2 (SP)+ 1,(SP) (SRC)nPOP DST 執(zhí)行的操作(16位指令) (DST) (SP)+ 1,(SP) (SP) (SP)+ 2注意:8086/8088中,不允許立即數(shù)進(jìn)棧 標(biāo)志寄存器的內(nèi)容入棧和出棧:PUSHF和POPFn例: PUSH AX 將寄存器AX的內(nèi)容壓入堆棧 PUSH DS 將寄存器DS的內(nèi)容壓入堆棧 PUSH WORD PTR BX 將內(nèi)存單元中的字壓入堆棧 POP CX 將堆棧棧頂16位的字送入寄存器CX中 PUSHF MOV B

41、P, SP AND BP, 0FEFFH POPF 修改標(biāo)志寄存器中TF的值n地址傳送指令n取偏移地址指令n格式: LEA REG, SRCn執(zhí)行的操作 (REG) SRCn功能:將內(nèi)存變量的偏移地址送入16位的通用寄存器中n例 LEA BX, BX+SI+0F62H (BX)= 0400H (SI)= 003CH 執(zhí)行后 BX = 0400H + 003CH+ 0F62H = 139EHn說明:LEA指令與分析操作符OFFSET功能類似,LEA的 功能更強(qiáng),指令中的操作數(shù)可帶下標(biāo)n取32位地址指令 LDS, LESn格式: LDS REG, SRC LES REG, SRCn執(zhí)行的操作 (R

42、EG)(SRC) (SREG)(SRC+2)n功能:內(nèi)存的一個雙字存儲地址,內(nèi)容的高十六位為 段地址,低十六位是偏移量地址。將偏移量地 址送入指定的寄存器中,段地址送入DS或ES中n例 ADDR DD 11223344H LDS SI, ADDR 執(zhí)行后, (DS)= 1122H (SI)= 3344HDATA SEGMENTADDR DD 56781234HBUF DW 5DUP(20)AD-BUF DD BUFSTRING DB abcdAD-STRING DD STRINGOFF-STRING DW STRINGDATA ENDSCODE SEGMENTASSUME CS:CODE, D

43、S:DATASTART: MOV AX, DATAMOV DS, AXLES DI, ADDRLEA BX, ADDRMOV AX, SEG ADDREND STARTMOV CX, BUFLDS SI, AD-BUFMOV AL, STRINGMOV AX, OFF-STRINGLES BX, AD-STRINGMOV AX, 4C00HINT 21HCODE ENS34H12H78H56H14H00H14H00H14H00H14H00H14H00H04H00H8FH1FH61H62H63H64H12H00H8FH1FH12H00H1F8FH:0000HADDRBUFAD-BUFSTRING

44、AD-STRINGOFF-STRING0004H000EH0012H0016H001AH數(shù)據(jù)段存放段地址和偏移地址存放偏移地址ES:DI = 5678H:1234HBX = 0000HAX = 1F8FHCX = 0014HDS:SI = 1F8FH:0004HAX = 0012HAL =61HES:BX = 1F8FH:0012Hn算術(shù)運(yùn)算指令n二進(jìn)制加法運(yùn)算指令A(yù)DD, ADC, INCnADD指令n格式: ADD DST, SRCn執(zhí)行的操作 (DST)(SRC)+(DST)n影響標(biāo)志位:CF, OF, ZF, SF(只考慮主要的標(biāo)志位)n例 ADD DX, 0F0F0H 指令執(zhí)行前 (

45、DX)= 4652H 1111 0000 1111 0000 + 0100 0110 0101 0010 1 0011 0111 0100 0010 指令執(zhí)行后: (DX)= 3742H ZF = 0, SF = 0, CF = 1, OF = 0n帶進(jìn)位的加法指令A(yù)DCn格式: ADC DST, SRCn執(zhí)行的操作:(DST)(SRC)+(DST)+CFn例:設(shè)目的操作數(shù)存放在DX和AX,其中DX存放高位 字。源操作數(shù)存放在BX,CX中,其中BX存放高位 字。指令執(zhí)行前: (DX)= 0002H,(AX)= 0F365H,(BX)= 0005H,(CX)= 0E024H 指令序列為:ADD

46、AX, CX (1) ADC DX, BX (2) 指令1執(zhí)行后: (AX)= 0D389H, SF =1, ZF = 0, CF = 1, OF = 0 指令2執(zhí)行后: (DX)= 0008H, SF = 0, ZF = 0, CF = 0, OF = 00002H0F365HDXAX0005H0E024HBXCXnINC指令n格式: INC OPRn執(zhí)行的操作: (OPR)(OPR)+ 1n例:X = 124, Y = 5, 將X+Y的結(jié)果存于RESULT 單元中。DATA SEGMENT X DB 124 Y DB 5 RESULT DB ?DATA ENDSCODE SEGMENT A

47、SSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS, AX MOV AL, X ADD AL, Y MOV RESULT, AL MOV AH, 4CH INT 21HCODE ENDS END STARTn二進(jìn)制減法指令SUB, SBB, DEC, NEG, CMPnSUB 減法指令n格式: SUB DST, SRCn執(zhí)行的操作: (DST)(DST)-(SRC)nSBB 帶借位減法指令n格式: SBB DST, SRCn執(zhí)行的操作: (DST)(DST)-(SRC)- CFnDEC 減1指令n格式: DEC OPRn執(zhí)行的操作: (OPR)(O

48、PR)-1nNEG 求補(bǔ)指令n格式: NEG OPRn執(zhí)行的操作: (OPR) -(OPR)n說明:把操作數(shù)按位求反后末位加1,因而執(zhí)行的操作也可以表示為: (OPR) 0FFFFH -(OPR)+1nCMP 比較指令n格式: CMP OPR1, OPR2n執(zhí)行的操作: (OPR1)-(OPR2)n說明:該指令執(zhí)行的操作與SUB指令執(zhí)行的操作一樣, 但不保存結(jié)果。 根據(jù)該指令執(zhí)行的結(jié)果設(shè)置標(biāo)志位n例:設(shè)X, Y, Z均位雙精度數(shù),他們分別存放在地 址為X, X+2, Y, Y+2, Z, Z+2的存儲單元中 中,存放時高位字在高地址中,低位字在低 地址中,在8086中如何實(shí)現(xiàn)WX+Y+24-Z

49、DATA SEGMENT X DD 11223344H Y DD 55667788H Z DD 22336699H W DD ?DATA ENDS443322118877665599663322-XX+2YY+2ZZ+2WW+2CODE SEGMENT ASSUME CS: CODE, DS:DATACODE ENDS END STARTSTART: MOV AX, DATA MOV DS, AX MOV AX, X MOV DX, X+2 ADD AX, Y ADC DX, Y+2 ADD AX, 24 ADC DX, 0 SUB AX, Z SBB DX, Z+2 MOV W, AX MO

50、V W+2, DX MOV AX, 4C00H INT 21H n二進(jìn)制乘法指令:MUL,IMULnMUL 無符號數(shù)乘法n格式: MUL SRCn執(zhí)行的操作:字節(jié)操作數(shù): (AX)(AL)*(SRC)字操作數(shù) :(DX, AX)(AX)*(SRC)nIMUL 帶符號數(shù)乘法n格式: IMUL SRCn執(zhí)行的操作與MUL相同注:乘法指令只對CF和OF有定義 對于MUL指令:如果乘積的高一半為0,則CF和OF均為0,否則為1。這樣 的條件媽設(shè)置可以用來檢查字節(jié)乘積的結(jié)果是字節(jié)還是字 對于IMUL指令:如果乘積的高一半是低一半的符號擴(kuò)展,則CF和OF均為 0,否則為1n例:如(AL)= 0B4H,(B

51、L)=11H,求指令 IMUL BL 和 MUL BL 的結(jié)果 解:(AL)= 0B4H 無符號數(shù)為180D,帶符號數(shù)為-76D (BL)= 11H 無符號數(shù)為17D,帶符號數(shù)為17D 執(zhí)行 IMUL BL 的結(jié)果為 (AX)= 0FAF4H = -1292D, CF=OF=1 執(zhí)行 MUL BL 的結(jié)果為 (AX)= 0BF4H = 3060D, CF=OF=1n二進(jìn)制除法指令:DIV,IDIVn無符號數(shù)除法 DIVn格式: DIV SRCn執(zhí)行的操作:n字節(jié)操作:16位的被除數(shù)在AX中,8位的除數(shù)為源操作數(shù),結(jié)果的8位商在AL中,8位余數(shù)在AH中 (AL)(AX)/(SRC)的商 (AH)

52、(AX)/(SRC)的余數(shù)n字操作:32位的被除數(shù)在DX,AX中,DX為高位字;16位的除數(shù)為源操作數(shù),結(jié)果的16位商在AX中,16位的余數(shù)在DX中 (AX)(DX, AX)/(SRC)的商 (DX)(DX, AX)/(SRC)的余數(shù)n帶符號數(shù)除法 IDIVn格式: IDIV SRCn執(zhí)行的操作:與DIV執(zhí)行的操作相同。但操作數(shù)必須是帶符號數(shù),商和余數(shù)也都是帶符號數(shù)n例:如(AX)= 0400H,(BL)=0B4H,求指 令 IDIV BL 和 DIV BL 的結(jié)果 解:(AX)= 0400H 無符號數(shù)為1024D,帶符號數(shù)為+1024D (BL)= 0B4H 無符號數(shù)為180D,帶符號數(shù)為-

53、76D 執(zhí)行 DIV BL 的結(jié)果為 (AH)= 7CH = 124D 余數(shù) (AL)= 05H = 5D 商 執(zhí)行 IDIV BL 的結(jié)果為 (AH)= 24H = 36D 余數(shù) (AL)= 0F3H = -13D 商n符號位擴(kuò)充:CBW, CWDnCBW 字節(jié)轉(zhuǎn)換為字n格式: CBWn執(zhí)行的操作:AL的內(nèi)容符號為擴(kuò)展到AH,形成AX中的字。即如果(AL)的最高有效位為0,則(AH)=0;如果(AL)的最高有效位為1,則(AH)=0FFHnCWD 字轉(zhuǎn)換為雙字n格式: CWDn執(zhí)行的操作:AX的內(nèi)容符號擴(kuò)展到DX,形成DX:AX中的雙字。即如果(AX)的最高有效位為0,則(DX)=0;如果(

54、AX)的最高有效位為1,則(DX)=0FFFFH例:算術(shù)綜合運(yùn)算舉例,計算(V -(X * Y + W - 540)/ X 其中,X, Y, W, V均為16位帶符號數(shù),已分別裝入X, Y, W, V單元 中,要求上式計算的結(jié)果的商存入AX寄存器,余數(shù)存入DX寄存器DATA SEGMENT X DW 1234H Y DW 2345H W DW 3456H V DW 4567HDATA ENDS MOV AX, X IMUL Y MOV CX, AX MOV BX, DX MOV AX, W CWD ADD CX, AX ADC BX, DX SUB CX, 540 SBB BX, 0 MOV

55、AX, V CWD SUB AX, CX SBB DX, BX IDIV XCODE SEGMENT ASSUME DS:DATA, CS:CODESTART: MOV AX, DATA MOV DS, AX MOV AH, 4CH INT 21HCODE ENDS END STARTn8086/8088位處理運(yùn)算指令n邏輯運(yùn)算指令nNOT 指令n格式: NOT OPRn執(zhí)行的操作:(OPR)(OPR)nAND 指令n格式: AND DST, SRCn執(zhí)行的操作:(DST)(DST)(SRC)nOR 指令n格式: OR DST, SRCn執(zhí)行的操作:(DST)(DST)(SRC)nXOR 指令

56、n格式: XOR DST, SRCn執(zhí)行的操作:(DST)(DST) (SRC)nTEST 指令n格式: TEST DST, SRCn執(zhí)行的操作:(DST)(SRC)n注:該指令執(zhí)行完畢,設(shè)置相應(yīng)的標(biāo)志位,不保存結(jié) 果n例1 要求將AL的第5位置1 MOV AL, 43H OR AL, 20H 0100 0011 0010 0000 OR 0110 0011n例2 要測試AL寄存器中第2位是否為1,若為1則 轉(zhuǎn)移到EXIT去執(zhí)行 TEST AL, 00000100B JNE EXITn移位指令n算術(shù)移位指令n格式: SAL DST, 計數(shù)值 SAR DST, 計數(shù)值n算術(shù)移位指令適用于帶符號數(shù)

57、的運(yùn)算,用SAL來乘以2,用SAR來除以2n計數(shù)值可以為1,多于1時,為CL中的內(nèi)容nCF的內(nèi)容被改變,SF, PF, ZF也根據(jù)目的操作數(shù)的新值而改變。當(dāng)符號位改變時,OF置1CF0SAL移位示意圖CFSAR移位示意圖n例 MOV CL, 5 SAR DI, CL 如果指令執(zhí)行前: (DS)= 0F800H (DI)= 180AH (0F980A)=0064H 則實(shí)際的物理地址為 = 0F800H * 16d + 180AH = 0F980A 指令執(zhí)行后, (0F980A)= 0003H CF = 0, PF = 1, ZF = 0, SF = 0, OF = 0n邏輯移位指令n格式:SHL

58、 DST, 計數(shù)值 SHR DST, 計數(shù)值n邏輯移位指令用于實(shí)現(xiàn)無符號數(shù)的運(yùn)算。SHL用來乘以2,SHR用來除以2CF0SHL移位示意圖CF0SHR移位示意圖n例: MOV CL, 2 SHL SI, CL 執(zhí)行前:(SI)= 1450H 5200D 執(zhí)行后:(SI)= 5140H 20800Dn循環(huán)移位指令n格式:ROL DST, 計數(shù)值 ROR DST, 計數(shù)值 RCL DST, 計數(shù)值 RCR DST, 計數(shù)值CFROL移位示意圖CFROR移位示意圖CFRCL移位示意圖CFRCR移位示意圖n例:(AX)=0012H,(BX)= 0034H,要求把他們 裝配在一起,形成(AX)= 123

59、4H MOV CL, 8 ROL AX, CL ADD AX, BX分支結(jié)構(gòu)程序設(shè)計nCMP 比較指令n格式: CMP OPR1, OPR2n執(zhí)行的操作: (OPR1)-(OPR2)n說明:該指令執(zhí)行的操作與SUB指令執(zhí)行的操作一樣, 但不保存結(jié)果。 根據(jù)該指令執(zhí)行的結(jié)果設(shè)置標(biāo)志位n轉(zhuǎn)移指令n無條件轉(zhuǎn)移指令n格式: JMP 目的地址(標(biāo)號)n功能:無條件跳轉(zhuǎn)到目的地址處執(zhí)行指令n轉(zhuǎn)移的情形n段內(nèi)短轉(zhuǎn)移 0000H B4H 01H NEXT: MOV AH, 01 0018H EBH E6H JMP NEXT 001AH B4H 4CH EXIT: MOV AH, 4CHn段內(nèi)近轉(zhuǎn)移 0018H

60、 E9H 0FH 01H JMP NEXT 001BH 8AH D0H MOV DL, AL 012AH B4H 4CH NEXT: MOV AH, 4CHn段間轉(zhuǎn)移 C1 SEGMENT 0018H FFH 0010H 34C0H JMP NEXTPROG C1 ENDS C2 SEGMENT . 0010H B4H 4CH NEXTPROG: MOV AH, 4CH C2 ENDSn條件轉(zhuǎn)移指令n格式: JX 目的地址(短標(biāo)號)n功能:滿足條件則轉(zhuǎn)移到指定地址處執(zhí)行n說明:nX 為13個字母n目的地址與JX指令所在的地址相對距離不超過-127 +128個字節(jié)范圍n發(fā)生跳轉(zhuǎn)時,CPU需要較長的時鐘周

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論