微機(jī)原理課件-ch5-2_第1頁(yè)
微機(jī)原理課件-ch5-2_第2頁(yè)
微機(jī)原理課件-ch5-2_第3頁(yè)
微機(jī)原理課件-ch5-2_第4頁(yè)
微機(jī)原理課件-ch5-2_第5頁(yè)
已閱讀5頁(yè),還剩103頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

下列指令源操作數(shù)和目的操作數(shù)的尋址方式分別是什么?

(1)MOV

DX,100H

(2)MOV

BX,[0100H]

(3)MOV

CX,DATA[SI]

(4)MOV

ES:[SI],AX

(5)ADD

AX,[BX][DI]

(6)AND

AX,BX

(7)XOR

AX,[BX]

(8)MOV

AL,DATA[BP][DI]

1下列指令源操作數(shù)和目的操作數(shù)的尋址方式分別是什么?

1第二節(jié)8086/8088的指令系統(tǒng)

第一部分 指令系統(tǒng)概述第二部分8086/8088的指令系統(tǒng)8086/8088的指令系統(tǒng)2第二節(jié)8086/8088的指令系統(tǒng)第一部分 指令 第一部分 指令系統(tǒng)概述8086/8088的指令系統(tǒng)中的基本指令共133條.可以分成6個(gè)功能組:1. 數(shù)據(jù)傳送(Datatransfer)2. 算術(shù)運(yùn)算(Arithmetic)3. 邏輯運(yùn)算和移位指令(Logic&Shift)4. 串操作(Stringmanipulation)5. 控制轉(zhuǎn)移(ControlTransfer)6. 處理器控制(ProcessorControl)3 第一部分 指令系統(tǒng)概述8086/8088的指令系統(tǒng)中的基本介紹指令系統(tǒng)使用的符號(hào):八位寄存器:AH,AL,BH,BH,BL,CH,CL,DH,DL十六位通用寄存器:AX,BX,CX,DX,SP,BP,SI,DI堆棧指針 SP指令指針 IP(或PC)標(biāo)志位 Flags目的和源變址寄存器 DI,SI段寄存器 CS,DS,ES,SS通用寄存器 regAL或AX(取決于操作數(shù)長(zhǎng)度)acc4介紹指令系統(tǒng)使用的符號(hào):4src,dest 源,目的操作數(shù)(下列尋址方式都可以用) [BX+SI+n],[BX+DI+n],[BP+SI+n],[BP+DI+n] [SI+n], [DI+n],[BP+n],[BX+n] [N], r

[] 存儲(chǔ)器單元的內(nèi)容(正常在數(shù)據(jù)段)ES:[] 附加存儲(chǔ)器段的內(nèi)容Sreg段寄存器(CS,DS,ES,SS)MEM內(nèi)存操作數(shù)(MEM8\MEM16)IMM

立即數(shù)(IMM8\IMM16)P88位I/O端口號(hào)5src,dest 源,目的操作數(shù)(下列尋址方式都可以用)8086/8088指令助記符表68086/8088指令助記符表68086/8088指令助記符表(續(xù))78086/8088指令助記符表(續(xù))7學(xué)習(xí)指令的注意事項(xiàng)指令的功能——該指令能夠?qū)崿F(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫(xiě)形式指令支持的尋址方式——該指令中的操作數(shù)可以采用何種尋址方式指令對(duì)標(biāo)志的影響——該指令執(zhí)行后是否對(duì)各個(gè)標(biāo)志位有影響,以及如何影響其他方面——該指令其他需要特別注意的地方,如指令執(zhí)行時(shí)的約定設(shè)置、必須預(yù)置的參數(shù)、隱含使用的寄存器等8學(xué)習(xí)指令的注意事項(xiàng)指令的功能——該指令能夠?qū)崿F(xiàn)何種操作。通常

第二部分8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(Datatransfer)(一)通用傳送指令(GeneralPurposeTransfer)(二)輸入輸出指令(InputandOutput)(三)目的地址傳送指令(Address-objecttransfer)(四)標(biāo)志傳送指令(Flagregistertransfer)9 第二部分8086/8088指令系統(tǒng)9一. 數(shù)據(jù)傳送指令功能:負(fù)責(zé)把數(shù)據(jù)、地址或立即數(shù)傳送到寄存器或存儲(chǔ)單元。特點(diǎn):它是計(jì)算機(jī)最基本、最重要的一種操作,使用比例最高。種類(分四種):

通用傳送指令包括:MOV,PUSH,POP,XCHG,XLAT。輸入輸出指令指令包括:IN,OUT。目的地址傳送指令包括:LEA,LDS,LES標(biāo)志傳送指令包括:LAHF,SAHF,PUSHF,POPF

除SAHF和POPF指令外,對(duì)標(biāo)志位沒(méi)有影響。10一. 數(shù)據(jù)傳送指令10(一)通用傳送指令(GeneralPurposeTransfer)8088提供方便靈活的通用的傳送操作,適用于大多數(shù)操作數(shù)。通用傳送指令(除了XCHG以外)是唯一允許以段寄存器為操作數(shù)指令。通用傳送指令包括: 1、MOV(Movement) 2、PUSH(Pushwordontostack) POP(Popwordoffstack)

3、XCHG(Exchange) 4、XLAT(Translate)11(一)通用傳送指令(GeneralPurposeTran1. MOV dest, src;(dest)(src)功能:

把一個(gè)字節(jié)(B)或一個(gè)字(W)操作數(shù)由源傳送至目的。實(shí)現(xiàn): 寄存器寄存器/存儲(chǔ)器之間; 立即數(shù)寄存器/存儲(chǔ)器 寄存器/存儲(chǔ)器段寄存器之間的數(shù)據(jù)傳送。通用寄存器AXBXCXDXBPSPSIDIALBLCLDLAHBHCHDH段寄存器CSDSSSES存儲(chǔ)器立即數(shù)16位8\16位8\16位8\16位MOV指令數(shù)據(jù)傳送方向121. MOV dest, src;(dest)

具體說(shuō),通用數(shù)據(jù)傳送指令能實(shí)現(xiàn):①CPU內(nèi)部寄存器之間的數(shù)據(jù)的任意傳送

(除了碼段寄存器CS和指令指針I(yè)P以外)。 段寄存器之間不能傳送。例: MOVDL,CH ;8位寄存器8位寄存器 MOVAX,DX ;16位寄存器16位寄存器 MOVSI,BP MOVDS,BX ;通用寄存器段寄存器

MOVAX,CS ;段寄存器通用寄存器13具體說(shuō),通用數(shù)據(jù)傳送指令能實(shí)現(xiàn):13立即數(shù)傳送至CPU內(nèi)部通用寄存器組(AX、BX、CX、DX、BP、SP、SI、DI)。

用于給寄存器賦初值。

不能直接給段寄存器賦值例: MOVCL,04H ;立即數(shù)8位寄存器 MOVAX,03FFH ;立即數(shù)16位寄存器14立即數(shù)傳送至CPU內(nèi)部通用寄存器組14CPU內(nèi)部寄存器(除CS和IP外)

與存儲(chǔ)器(所有尋址方式)之間數(shù)據(jù)傳送。 可以實(shí)現(xiàn)一字節(jié)或一個(gè)字的傳送。

存儲(chǔ)單元之間不能直接傳送

例: MOVMEM,AX ;累加器存儲(chǔ)器,直接尋址 MOVMEM,DS ;段寄存器存儲(chǔ)器,直接尋址 MOVDISP[BX],CX ;寄存器存儲(chǔ)器,變址尋址 MOVAX,DISP[SI] ;存儲(chǔ)器累加器,變址尋址 MOVDS,MEM ;存儲(chǔ)器段寄存器,直接尋址 MOVCX,DISP[BX][SI] ;存儲(chǔ)器累加器,相對(duì)基址加變址15CPU內(nèi)部寄存器(除CS和IP外)15

注意:(1)不能用一條MOV指令實(shí)現(xiàn)以下傳送。

存儲(chǔ)單元之間的傳送 MOVMEM2,MEM1錯(cuò)。 MOVAX,MEM1 MOVMEM2,AX對(duì)。

立即數(shù)送段寄存器

例:MOVDS,2000H錯(cuò)。MOVAX,2000 HMOVDS,AX對(duì)。16注意:16

段寄存器之間的傳送 MOVES,DS;錯(cuò) MOVAX,DS MOVES,AX;對(duì)。注意CS和IP的使用CS和IP不能作為目標(biāo)操作數(shù),CS可以作為源操作數(shù)。例: MOVCS,AX;錯(cuò) MOVAX,CS;對(duì)。 MOVIP,AX;錯(cuò)

MOVAX,IP;對(duì)。17段寄存器之間的傳送17(2)段地址的默認(rèn) BX、SI、DI間址默認(rèn)段地址為DS, BP間址默認(rèn)段地址SS。(3) 凡是遇到給SS賦值指令,系統(tǒng)自動(dòng)禁止外部中斷,執(zhí)行本條指令和下條指令,恢復(fù)對(duì)SS寄存器賦值前的中斷開(kāi)放情況。 這樣做為了允許程序員連續(xù)用兩條指令分別對(duì)SS和SP寄存器賦值,同時(shí)又防止堆??臻g變動(dòng)過(guò)程出現(xiàn)中斷。 *在修改SS和SP的指令之間不要插入其他指令。(4) 所有通用傳送指令不影響標(biāo)志位 (除SAHF、POPF以外)。18(2)段地址的默認(rèn)18

MOV指令應(yīng)用例:實(shí)現(xiàn)將AREA1開(kāi)始的100個(gè)數(shù)據(jù)傳送到AREA2開(kāi)始的單元?!瑼REA1:AREA2:100個(gè)數(shù)據(jù)19MOV指令應(yīng)用……AREA1:AREA2:100個(gè)數(shù)分析題意:

①可以用200條MOV指令來(lái)完成100個(gè)數(shù)據(jù)傳送,指令操作重復(fù),每個(gè)數(shù)據(jù)傳送后的地址是變化的。②可以利用循環(huán),但每循環(huán)一次要修改地址(源地址和目的地址),必須把地址放在寄存器當(dāng)中,用寄存器間接尋址來(lái)尋找操作數(shù).20分析題意:20得到如下程序: … MOVSI,OFFSETAREA1 MOVDI,OFFSETAREA2 MOVCX,100AGAIN: MOVAL,[SI] MOV[DI],AL

INCSI ;修改地址指針 INCDI ;修改地址指針 DECCX ;修改個(gè)數(shù) JNZAGAIN …21得到如下程序:21指出以下這些指令的對(duì)或錯(cuò),并說(shuō)明原因。

1、MOV52,AH

2、MOVCS,AH

3、MOV[DI],[SI]

4、MOV[1000],[SI]

5、MOVIP,BX

6、MOVDS,1234H

立即數(shù)不能作為目的操作數(shù)

CS不能作為目的操作數(shù)內(nèi)存單元之間不能直接傳送內(nèi)存單元之間不能直接傳送

IP不能作為目的操作數(shù)不能用立即數(shù)對(duì)段寄存器賦值22指出以下這些指令的對(duì)或錯(cuò),并說(shuō)明原因。

立即數(shù)不能作為目的操2.PUSH(Pushwordontostack)POP(Popwordoffstack)這是兩條堆棧操作指令。(1)先回憶一下什么是堆棧,為什么需要堆棧 堆棧——按照先進(jìn)后出原則組織的一段內(nèi)存區(qū)域特點(diǎn):下推式的(規(guī)定堆棧設(shè)置在堆棧段內(nèi))改變SP的內(nèi)容,隨著推入堆棧內(nèi)容增加,SP的值減少。后進(jìn)先出工作原則(LastInFirstOut簡(jiǎn)稱LIFO)232.PUSH(Pushwordontostac堆棧用途:

存放CPU寄存器或存儲(chǔ)器中暫時(shí)不使用的數(shù)據(jù),使用數(shù)據(jù)時(shí)將其彈出;調(diào)用子程序,響應(yīng)中斷時(shí)都要用到堆棧。調(diào)用子程序(或過(guò)程)或發(fā)生中斷時(shí)要保護(hù)斷點(diǎn)的地址,子程序或中斷返回時(shí)恢復(fù)斷點(diǎn)。24堆棧用途:24調(diào)用子程序時(shí)需保留內(nèi)容:①調(diào)用子程序:將下條指令地址即IP值保留下來(lái) (8088中碼段寄存器CS和指令指針I(yè)P),才能保證子程序執(zhí)行完后準(zhǔn)確返回主程序繼續(xù)執(zhí)行。②執(zhí)行子程序時(shí),通常用到內(nèi)部寄存器,執(zhí)行結(jié)果會(huì)影響標(biāo)志位,必須在調(diào)用子程序之前將現(xiàn)狀保護(hù)起來(lái)③子程序嵌套或子程序遞歸(自調(diào)自)保留許多信息,而且保證正確返回(且后進(jìn)先出)。

后保留先取出原則(即LIFO-LASTInFirstout)。注意:SP——堆棧指針,始終指向棧頂。 SP初值用MOVSP,im來(lái)設(shè)定。25調(diào)用子程序時(shí)需保留內(nèi)容:注意:SP——堆棧指針,始終指向棧(2)堆棧操作指令(堆棧操作指令有兩條):入棧指令格式:PUSHsrc ;(SP)(SP)-2(SP)+1,(SP))(src)

把一個(gè)字從源操作數(shù)由SP指向堆棧頂部。

操作如:PUSHAX出棧指令格式:POPdest ; (dest)((SP)+1,(SP)) (SP)(SP)+2把現(xiàn)行SP所指向堆棧頂部的一個(gè)字指定的目的操作數(shù),同時(shí)進(jìn)行修改堆棧指針的操作。

操作如:POPBX26(2)堆棧操作指令(堆棧操作指令有兩條):26應(yīng)用時(shí)注意:堆棧操作都按字操作。PUSH,POP指令的操作數(shù)可能有三種:寄存器(通用寄存器,地址指針,變址寄存器),段寄存器(CS除外,PUSHCS合法,POPCS非法)存儲(chǔ)器,操作數(shù)必須是16位的,且不能是立即數(shù)。執(zhí)行PUSH指令,(SP)-2(SP),

低字節(jié)放在低地址,高字節(jié)放在高地址。

PUSH,POP指令應(yīng)該成對(duì)使用,保持堆棧原有狀態(tài)。堆棧最大容量即為SP的初值與SS之間的差。27應(yīng)用時(shí)注意:27堆棧應(yīng)用舉例:

例:用BP的基址指令代替POP指令 …MOVBP,SPPUSHAXPUSHBXPUSHCX …MOVCX,[BP-6]

MOVBX,[BP-4]MOVAX,[BP-2] …ADDSP,6例:壓入堆棧的內(nèi)容與彈出內(nèi)容順序相反…PUSH AXPUSHBXPUSHCX…POPCXPOPBXPOPAX 28堆棧應(yīng)用舉例:例:用BP的基址指令例:壓入堆棧的內(nèi)容3、交換指令(Exchange)格式:XCHGdest,src ;(dest)(src)執(zhí)行操作:

把一個(gè)字節(jié)或一個(gè)字的源操作數(shù)與目的操作數(shù)相交換??梢詫?shí)現(xiàn):寄存器之間 寄存器和存儲(chǔ)器之間注意:

存儲(chǔ)器之間不能交換,兩個(gè)操作數(shù)中必須有一個(gè)在寄存器中;段寄存器不能作為一個(gè)操作數(shù);允許字或字節(jié)操作,不影響標(biāo)志位。293、交換指令(Exchange)29應(yīng)用舉例: XCHGBL,DL XCHGAX,SI XCHGCOUNT[DI],AX

XCHG[BX],[DI] (錯(cuò)) XCHGDS,AX(錯(cuò))30應(yīng)用舉例:30XLAT(Translate)換碼指令:該指令不影響標(biāo)志位。格式:XLATstr_table ;(AL)←((BX)+(AL)) 或XLAT str_table——表格符號(hào)地址(首地址), 只是為了提高可讀性而設(shè)置,匯編時(shí)仍用BX。

31XLAT(Translate)換碼指令:31XLAT指令使用方法:先建立一個(gè)字節(jié)表格;表格首偏移地址存入BX;需要轉(zhuǎn)換代碼的序號(hào)(相對(duì)與表格首地址位移量)存入AL;(表中第一個(gè)元素的序號(hào)為0)執(zhí)行XLAT指令后,表中指定序號(hào)的元素存于AL中。(AL)為轉(zhuǎn)換的代碼。由于AL只有8位,所以表的長(zhǎng)度不能超過(guò)256字節(jié).

32XLAT指令使用方法:32XLAT指令應(yīng)用:

若把字符的掃描碼轉(zhuǎn)換成ASCII碼;或數(shù)字0~9轉(zhuǎn)換成7段數(shù)碼所需要的相應(yīng)代碼(字形碼)等就要用XLAT指令。例:內(nèi)存的數(shù)據(jù)段中有一張十六進(jìn)制數(shù)字的ASCII碼表。

首地址為:Hex_table,欲查出表中第10個(gè)元素(‘A’)33XLAT指令應(yīng)用:33執(zhí)行指令序列:MOVBX,OFFSETHex_tableMOVAL,0AHXLATHex_table假設(shè): (DS)=F000H, Hex_table=0040H (AL)=0AH執(zhí)行XLAT以后:(AL)=41H=(F004AH), 即“A”的ASCII碼。30H31H32H...39H41H42H...46H...Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex_table+0FH'F''B''A''9''1''2''0'16進(jìn)制數(shù)的ASCII碼表34執(zhí)行指令序列:30H31H32H...39H41H42H..(二)輸入輸出指令(InputandOutput)輸入輸出指令共兩條:

1、IN(Inputbyteorword)

2、OUT(Outputbyteorword)

輸入指令用于CPU從外設(shè)端口接受數(shù)據(jù),

輸出指令用于CPU向外設(shè)端口發(fā)送數(shù)據(jù)。無(wú)論接受還是發(fā)送數(shù)據(jù),必須通過(guò)累加器AX(字)或AL(字節(jié)),又稱累加器專用傳送指令。

輸入、輸出指令不影響標(biāo)志位。35(二)輸入輸出指令(InputandOutput)35每個(gè)外設(shè)要占幾個(gè)端口:數(shù)據(jù)口,狀態(tài)口和控制口。36每個(gè)外設(shè)要占幾個(gè)端口:數(shù)據(jù)口,狀態(tài)口和控制口。36信息交換要通過(guò)端口,在IBMPC機(jī)里,可以配接許多外部設(shè)備,每個(gè)外設(shè)與CPU之間交換數(shù)據(jù),狀態(tài)信息和控制命令,每一種信息交換都要通過(guò)一個(gè)端口來(lái)進(jìn)行。端口數(shù):外部設(shè)備最多有65536個(gè)I/O端口。 A0-A15譯碼形成。端口號(hào):端口號(hào)(即外設(shè)端口地址)為0000H-FFFFH。PC機(jī)僅使用A0-A9譯碼形成I/O口地址,即1024H個(gè)口地址 端口號(hào):0000H-03FFH其中:A9=1,表示擴(kuò)充槽上的口地址。37信息交換要通過(guò)端口,37長(zhǎng)格式:端口號(hào)中前256個(gè)端口(0-FFH),可以直接寫(xiě)在指令中,這就是長(zhǎng)格式(直接尋址)。端口號(hào)代替指令中的PORT,機(jī)器指令用二字節(jié)表示,第二字節(jié)就是端口號(hào)。短格式:當(dāng)端口號(hào)≥256時(shí),只能使用短格式,必須先把端口號(hào)放到DX寄存器中(間接尋址)。不需要用任何段寄存器來(lái)修改它的值。38長(zhǎng)格式:381、IN(Inputbyteorword)輸入指令格式:INacc,port;(acc)(port)具體形式有四種:INAL,data8;端口地址8位,輸入一個(gè)字節(jié)INAX,data8;端口地址8位,輸入一個(gè)字INAL,DX;端口地址16位,輸入一個(gè)字節(jié)INAX,DX;端口地址16位,輸入一個(gè)字

必須通過(guò)累加器AX(字)或AL(節(jié))輸入數(shù)據(jù)。391、IN(Inputbyteorword)2、OUT(Outputbyteorword)輸出指令格式:OUTport,acc ;(port)(acc)具體形式有四種:OUTdata8,AL;端口地址8位,輸出一個(gè)字節(jié)OUTdata8,AX;端口地址8位,輸出一個(gè)字OUTDX,AL;端口地址16位,輸出一個(gè)字節(jié)OUTDX,AX;端口地址16位,輸出一個(gè)字必須通過(guò)累加器AX(字)或AL(節(jié))輸出數(shù)據(jù)。402、OUT(Outputbyteorword)例1:實(shí)現(xiàn)(29H)(28H)→(DATA_WORD) INAX,28H MOVDATA_WORD,AX例2:從端口3FCH送一個(gè)字到AX寄存器 MOVDX,3FCH INAX,DX;(AL)←(3FCH), (AH)←(3FDH)

例3:實(shí)現(xiàn)將(AL)→(05H) OUT5,AL;(05H)←(AL)41例1:實(shí)現(xiàn)(29H)(28H)→(DATA_WORD)41(三)目的地址傳送指令(Address-objecttransfer)8086/8088提供三條:

地址指針寫(xiě)入指定寄存器或寄存器對(duì)指令。 1、LEA(LoadEffectiveAddress) 2、LDS(LoadpointerusingDS) 3、LES(LoadpointerusingES)42(三)目的地址傳送指令(Address-objecttra1、LEA(LoadEffectiveAddress)格式:LEAreg16,mem16;EA(reg16)功能:加載有效地址,用于寫(xiě)進(jìn)地址指針。把指令指定存儲(chǔ)器操作數(shù)有效地址裝入指定的寄存器例:設(shè)(BX)=0400H,(SI)=003CH LEABX,[BX+SI+0F62H]執(zhí)行指令后:EA=(BX)+(SI)=0F62H=0400H+003CH+0F62H=139EH(BX)=139EH431、LEA(LoadEffectiveAddress)4注意:設(shè) (DS)=3000H BUFFER=1000H (31000H)=0040H(1)LEA指令與MOV的區(qū)別 LEABX,BUFFER;(BX)=1000H MOVBX,BUFFER;(BX)=0040HLEA指令與MOV等價(jià) LEABX,BUFFER ;(BX)=1000H MOVBX,OFFSETBUFFER;(BX)=1000H44注意:設(shè)44(2)LEA指令中的目標(biāo)寄存器必須是16位的通用寄存器,源操作數(shù)必須是一個(gè)存儲(chǔ)器。(3)請(qǐng)思考下列指令的正、誤 LEADX,BETA[BX][SI] LEADX,AX45(2)LEA指令中的目標(biāo)寄存器必須是16位的通用寄存器,2、LDS(LoadpointerusingDS)格式:LDSreg16,mem32;(reg16)←(EA) (DS)←((EA)+2))功能:將指令指定32位地址指針?biāo)椭噶钪付拇嫫骱虳S。將指令指定mem32單元的前兩個(gè)單元內(nèi)容(16位偏移量)裝入指定通用寄存器,把后兩個(gè)單元內(nèi)容(段地址)裝入到DS段寄存器。用于寫(xiě)遠(yuǎn)地址指針。462、LDS(LoadpointerusingDS)例:假設(shè):(DS)=C000H指令: LDSSI,[0010H]執(zhí)行指令后:(SI)=0180H(DS)=2000H

47例:473、LES(LoadpointerusingES)格式:LESreg16,mem32;(reg16)←(EA) (ES)←((EA)+2))功能:把源操作數(shù)指定的4個(gè)相繼字節(jié)送指令指定的寄存器及ES寄存器中。此指令常常指定DI寄存器。將指令指定mem32單元的前兩個(gè)單元內(nèi)容(16位偏移量)裝入指定通用寄存器,把后兩個(gè)單元內(nèi)容(段地址)裝入到ES段寄存器。用于寫(xiě)遠(yuǎn)地址指針。483、LES(LoadpointerusingES)例:假設(shè):(DS)=B000H (BX)=080AH指令: LESDI,[BX]執(zhí)行指令后: (DI)=05A2H (ES)=4000H49例:49綜合舉例:設(shè):(DS)=5000HTABLE=1000H分析下列指令執(zhí)行結(jié)果:MOVBX,TABLE;MOVBX,OFFSETTABLE;LEABX,TABLE;LESBX,TABLE;LDSBX,TABLE;(BX)=0040H(BX)=1000H(BX)=1000H(BX)=0040H,(ES)=3000H(BX)=0040H,(DS)=3000H50綜合舉例:(BX)=0040H50(四)標(biāo)志傳送指令(Flagregistertransfer)采用了隱含寄存器(AH、Flags)操作數(shù)方式。8088有四條標(biāo)志傳送操作指令:1. LAHF(LoadAHintoflags)2. SAHF(StoreAHintoflags)3. PUSHF(Pushflagsontostack)4. POPF(Popflagsoffstack)

51(四)標(biāo)志傳送指令(Flagregistertransf1.LAHF(LoadAHintoflags)格式:LAHF;(AH)←(FLAG的低字節(jié))功能:標(biāo)志寄存器低八位(AH)。LAHF指令操作圖示意521.LAHF(LoadAHintoflags)格式:L2. SAHF(StoreAHintoflags) 格式:SAHF;(FLAG的低字節(jié))←(AH) 功能:(AH)送標(biāo)志寄存器低八位。3. PUSHF(Pushflagsontostack) 格式:PUSHF ;(SP)←(SP)-2 ((SP)+1,(SP))←(FLAG) 功能:標(biāo)志進(jìn)棧。4. POPF(Popflagsoffstack)

格式:POPF;(FLAG)←((SP)+1,(SP)) (SP)←(SP)+2 功能:標(biāo)志出棧。532. SAHF(StoreAHintoflags)5注意:(1)標(biāo)志位的影響LAHF、PUSHF不影響標(biāo)志位,SAHF、POPF由裝入的值確定標(biāo)志位的值,影響標(biāo)志位。(2)PUSHF、POPF用于保護(hù)調(diào)用過(guò)程前(FLAG),過(guò)程返回后恢復(fù)。例: … PUSH AX PUSHCX PUSHF CALLTRANSPOPFPOPCXPOPAX…54注意:POPF54下列指令源操作數(shù)和目的操作數(shù)的尋址方式分別是什么?

(1)MOV

DX,100H

(2)MOV

BX,[0100H]

(3)MOV

CX,DATA[SI]

(4)MOV

ES:[SI],AX

(5)ADD

AX,[BX][DI]

(6)AND

AX,BX

(7)XOR

AX,[BX]

(8)MOV

AL,DATA[BP][DI]

55下列指令源操作數(shù)和目的操作數(shù)的尋址方式分別是什么?

1第二節(jié)8086/8088的指令系統(tǒng)

第一部分 指令系統(tǒng)概述第二部分8086/8088的指令系統(tǒng)8086/8088的指令系統(tǒng)56第二節(jié)8086/8088的指令系統(tǒng)第一部分 指令 第一部分 指令系統(tǒng)概述8086/8088的指令系統(tǒng)中的基本指令共133條.可以分成6個(gè)功能組:1. 數(shù)據(jù)傳送(Datatransfer)2. 算術(shù)運(yùn)算(Arithmetic)3. 邏輯運(yùn)算和移位指令(Logic&Shift)4. 串操作(Stringmanipulation)5. 控制轉(zhuǎn)移(ControlTransfer)6. 處理器控制(ProcessorControl)57 第一部分 指令系統(tǒng)概述8086/8088的指令系統(tǒng)中的基本介紹指令系統(tǒng)使用的符號(hào):八位寄存器:AH,AL,BH,BH,BL,CH,CL,DH,DL十六位通用寄存器:AX,BX,CX,DX,SP,BP,SI,DI堆棧指針 SP指令指針 IP(或PC)標(biāo)志位 Flags目的和源變址寄存器 DI,SI段寄存器 CS,DS,ES,SS通用寄存器 regAL或AX(取決于操作數(shù)長(zhǎng)度)acc58介紹指令系統(tǒng)使用的符號(hào):4src,dest 源,目的操作數(shù)(下列尋址方式都可以用) [BX+SI+n],[BX+DI+n],[BP+SI+n],[BP+DI+n] [SI+n], [DI+n],[BP+n],[BX+n] [N], r

[] 存儲(chǔ)器單元的內(nèi)容(正常在數(shù)據(jù)段)ES:[] 附加存儲(chǔ)器段的內(nèi)容Sreg段寄存器(CS,DS,ES,SS)MEM內(nèi)存操作數(shù)(MEM8\MEM16)IMM

立即數(shù)(IMM8\IMM16)P88位I/O端口號(hào)59src,dest 源,目的操作數(shù)(下列尋址方式都可以用)8086/8088指令助記符表608086/8088指令助記符表68086/8088指令助記符表(續(xù))618086/8088指令助記符表(續(xù))7學(xué)習(xí)指令的注意事項(xiàng)指令的功能——該指令能夠?qū)崿F(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫(xiě)形式指令支持的尋址方式——該指令中的操作數(shù)可以采用何種尋址方式指令對(duì)標(biāo)志的影響——該指令執(zhí)行后是否對(duì)各個(gè)標(biāo)志位有影響,以及如何影響其他方面——該指令其他需要特別注意的地方,如指令執(zhí)行時(shí)的約定設(shè)置、必須預(yù)置的參數(shù)、隱含使用的寄存器等62學(xué)習(xí)指令的注意事項(xiàng)指令的功能——該指令能夠?qū)崿F(xiàn)何種操作。通常

第二部分8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(Datatransfer)(一)通用傳送指令(GeneralPurposeTransfer)(二)輸入輸出指令(InputandOutput)(三)目的地址傳送指令(Address-objecttransfer)(四)標(biāo)志傳送指令(Flagregistertransfer)63 第二部分8086/8088指令系統(tǒng)9一. 數(shù)據(jù)傳送指令功能:負(fù)責(zé)把數(shù)據(jù)、地址或立即數(shù)傳送到寄存器或存儲(chǔ)單元。特點(diǎn):它是計(jì)算機(jī)最基本、最重要的一種操作,使用比例最高。種類(分四種):

通用傳送指令包括:MOV,PUSH,POP,XCHG,XLAT。輸入輸出指令指令包括:IN,OUT。目的地址傳送指令包括:LEA,LDS,LES標(biāo)志傳送指令包括:LAHF,SAHF,PUSHF,POPF

除SAHF和POPF指令外,對(duì)標(biāo)志位沒(méi)有影響。64一. 數(shù)據(jù)傳送指令10(一)通用傳送指令(GeneralPurposeTransfer)8088提供方便靈活的通用的傳送操作,適用于大多數(shù)操作數(shù)。通用傳送指令(除了XCHG以外)是唯一允許以段寄存器為操作數(shù)指令。通用傳送指令包括: 1、MOV(Movement) 2、PUSH(Pushwordontostack) POP(Popwordoffstack)

3、XCHG(Exchange) 4、XLAT(Translate)65(一)通用傳送指令(GeneralPurposeTran1. MOV dest, src;(dest)(src)功能:

把一個(gè)字節(jié)(B)或一個(gè)字(W)操作數(shù)由源傳送至目的。實(shí)現(xiàn): 寄存器寄存器/存儲(chǔ)器之間; 立即數(shù)寄存器/存儲(chǔ)器 寄存器/存儲(chǔ)器段寄存器之間的數(shù)據(jù)傳送。通用寄存器AXBXCXDXBPSPSIDIALBLCLDLAHBHCHDH段寄存器CSDSSSES存儲(chǔ)器立即數(shù)16位8\16位8\16位8\16位MOV指令數(shù)據(jù)傳送方向661. MOV dest, src;(dest)

具體說(shuō),通用數(shù)據(jù)傳送指令能實(shí)現(xiàn):①CPU內(nèi)部寄存器之間的數(shù)據(jù)的任意傳送

(除了碼段寄存器CS和指令指針I(yè)P以外)。 段寄存器之間不能傳送。例: MOVDL,CH ;8位寄存器8位寄存器 MOVAX,DX ;16位寄存器16位寄存器 MOVSI,BP MOVDS,BX ;通用寄存器段寄存器

MOVAX,CS ;段寄存器通用寄存器67具體說(shuō),通用數(shù)據(jù)傳送指令能實(shí)現(xiàn):13立即數(shù)傳送至CPU內(nèi)部通用寄存器組(AX、BX、CX、DX、BP、SP、SI、DI)。

用于給寄存器賦初值。

不能直接給段寄存器賦值例: MOVCL,04H ;立即數(shù)8位寄存器 MOVAX,03FFH ;立即數(shù)16位寄存器68立即數(shù)傳送至CPU內(nèi)部通用寄存器組14CPU內(nèi)部寄存器(除CS和IP外)

與存儲(chǔ)器(所有尋址方式)之間數(shù)據(jù)傳送。 可以實(shí)現(xiàn)一字節(jié)或一個(gè)字的傳送。

存儲(chǔ)單元之間不能直接傳送

例: MOVMEM,AX ;累加器存儲(chǔ)器,直接尋址 MOVMEM,DS ;段寄存器存儲(chǔ)器,直接尋址 MOVDISP[BX],CX ;寄存器存儲(chǔ)器,變址尋址 MOVAX,DISP[SI] ;存儲(chǔ)器累加器,變址尋址 MOVDS,MEM ;存儲(chǔ)器段寄存器,直接尋址 MOVCX,DISP[BX][SI] ;存儲(chǔ)器累加器,相對(duì)基址加變址69CPU內(nèi)部寄存器(除CS和IP外)15

注意:(1)不能用一條MOV指令實(shí)現(xiàn)以下傳送。

存儲(chǔ)單元之間的傳送 MOVMEM2,MEM1錯(cuò)。 MOVAX,MEM1 MOVMEM2,AX對(duì)。

立即數(shù)送段寄存器

例:MOVDS,2000H錯(cuò)。MOVAX,2000 HMOVDS,AX對(duì)。70注意:16

段寄存器之間的傳送 MOVES,DS;錯(cuò) MOVAX,DS MOVES,AX;對(duì)。注意CS和IP的使用CS和IP不能作為目標(biāo)操作數(shù),CS可以作為源操作數(shù)。例: MOVCS,AX;錯(cuò) MOVAX,CS;對(duì)。 MOVIP,AX;錯(cuò)

MOVAX,IP;對(duì)。71段寄存器之間的傳送17(2)段地址的默認(rèn) BX、SI、DI間址默認(rèn)段地址為DS, BP間址默認(rèn)段地址SS。(3) 凡是遇到給SS賦值指令,系統(tǒng)自動(dòng)禁止外部中斷,執(zhí)行本條指令和下條指令,恢復(fù)對(duì)SS寄存器賦值前的中斷開(kāi)放情況。 這樣做為了允許程序員連續(xù)用兩條指令分別對(duì)SS和SP寄存器賦值,同時(shí)又防止堆??臻g變動(dòng)過(guò)程出現(xiàn)中斷。 *在修改SS和SP的指令之間不要插入其他指令。(4) 所有通用傳送指令不影響標(biāo)志位 (除SAHF、POPF以外)。72(2)段地址的默認(rèn)18

MOV指令應(yīng)用例:實(shí)現(xiàn)將AREA1開(kāi)始的100個(gè)數(shù)據(jù)傳送到AREA2開(kāi)始的單元?!瑼REA1:AREA2:100個(gè)數(shù)據(jù)73MOV指令應(yīng)用……AREA1:AREA2:100個(gè)數(shù)分析題意:

①可以用200條MOV指令來(lái)完成100個(gè)數(shù)據(jù)傳送,指令操作重復(fù),每個(gè)數(shù)據(jù)傳送后的地址是變化的。②可以利用循環(huán),但每循環(huán)一次要修改地址(源地址和目的地址),必須把地址放在寄存器當(dāng)中,用寄存器間接尋址來(lái)尋找操作數(shù).74分析題意:20得到如下程序: … MOVSI,OFFSETAREA1 MOVDI,OFFSETAREA2 MOVCX,100AGAIN: MOVAL,[SI] MOV[DI],AL

INCSI ;修改地址指針 INCDI ;修改地址指針 DECCX ;修改個(gè)數(shù) JNZAGAIN …75得到如下程序:21指出以下這些指令的對(duì)或錯(cuò),并說(shuō)明原因。

1、MOV52,AH

2、MOVCS,AH

3、MOV[DI],[SI]

4、MOV[1000],[SI]

5、MOVIP,BX

6、MOVDS,1234H

立即數(shù)不能作為目的操作數(shù)

CS不能作為目的操作數(shù)內(nèi)存單元之間不能直接傳送內(nèi)存單元之間不能直接傳送

IP不能作為目的操作數(shù)不能用立即數(shù)對(duì)段寄存器賦值76指出以下這些指令的對(duì)或錯(cuò),并說(shuō)明原因。

立即數(shù)不能作為目的操2.PUSH(Pushwordontostack)POP(Popwordoffstack)這是兩條堆棧操作指令。(1)先回憶一下什么是堆棧,為什么需要堆棧 堆?!凑障冗M(jìn)后出原則組織的一段內(nèi)存區(qū)域特點(diǎn):下推式的(規(guī)定堆棧設(shè)置在堆棧段內(nèi))改變SP的內(nèi)容,隨著推入堆棧內(nèi)容增加,SP的值減少。后進(jìn)先出工作原則(LastInFirstOut簡(jiǎn)稱LIFO)772.PUSH(Pushwordontostac堆棧用途:

存放CPU寄存器或存儲(chǔ)器中暫時(shí)不使用的數(shù)據(jù),使用數(shù)據(jù)時(shí)將其彈出;調(diào)用子程序,響應(yīng)中斷時(shí)都要用到堆棧。調(diào)用子程序(或過(guò)程)或發(fā)生中斷時(shí)要保護(hù)斷點(diǎn)的地址,子程序或中斷返回時(shí)恢復(fù)斷點(diǎn)。78堆棧用途:24調(diào)用子程序時(shí)需保留內(nèi)容:①調(diào)用子程序:將下條指令地址即IP值保留下來(lái) (8088中碼段寄存器CS和指令指針I(yè)P),才能保證子程序執(zhí)行完后準(zhǔn)確返回主程序繼續(xù)執(zhí)行。②執(zhí)行子程序時(shí),通常用到內(nèi)部寄存器,執(zhí)行結(jié)果會(huì)影響標(biāo)志位,必須在調(diào)用子程序之前將現(xiàn)狀保護(hù)起來(lái)③子程序嵌套或子程序遞歸(自調(diào)自)保留許多信息,而且保證正確返回(且后進(jìn)先出)。

后保留先取出原則(即LIFO-LASTInFirstout)。注意:SP——堆棧指針,始終指向棧頂。 SP初值用MOVSP,im來(lái)設(shè)定。79調(diào)用子程序時(shí)需保留內(nèi)容:注意:SP——堆棧指針,始終指向棧(2)堆棧操作指令(堆棧操作指令有兩條):入棧指令格式:PUSHsrc ;(SP)(SP)-2(SP)+1,(SP))(src)

把一個(gè)字從源操作數(shù)由SP指向堆棧頂部。

操作如:PUSHAX出棧指令格式:POPdest ; (dest)((SP)+1,(SP)) (SP)(SP)+2把現(xiàn)行SP所指向堆棧頂部的一個(gè)字指定的目的操作數(shù),同時(shí)進(jìn)行修改堆棧指針的操作。

操作如:POPBX80(2)堆棧操作指令(堆棧操作指令有兩條):26應(yīng)用時(shí)注意:堆棧操作都按字操作。PUSH,POP指令的操作數(shù)可能有三種:寄存器(通用寄存器,地址指針,變址寄存器),段寄存器(CS除外,PUSHCS合法,POPCS非法)存儲(chǔ)器,操作數(shù)必須是16位的,且不能是立即數(shù)。執(zhí)行PUSH指令,(SP)-2(SP),

低字節(jié)放在低地址,高字節(jié)放在高地址。

PUSH,POP指令應(yīng)該成對(duì)使用,保持堆棧原有狀態(tài)。堆棧最大容量即為SP的初值與SS之間的差。81應(yīng)用時(shí)注意:27堆棧應(yīng)用舉例:

例:用BP的基址指令代替POP指令 …MOVBP,SPPUSHAXPUSHBXPUSHCX …MOVCX,[BP-6]

MOVBX,[BP-4]MOVAX,[BP-2] …ADDSP,6例:壓入堆棧的內(nèi)容與彈出內(nèi)容順序相反…PUSH AXPUSHBXPUSHCX…POPCXPOPBXPOPAX 82堆棧應(yīng)用舉例:例:用BP的基址指令例:壓入堆棧的內(nèi)容3、交換指令(Exchange)格式:XCHGdest,src ;(dest)(src)執(zhí)行操作:

把一個(gè)字節(jié)或一個(gè)字的源操作數(shù)與目的操作數(shù)相交換??梢詫?shí)現(xiàn):寄存器之間 寄存器和存儲(chǔ)器之間注意:

存儲(chǔ)器之間不能交換,兩個(gè)操作數(shù)中必須有一個(gè)在寄存器中;段寄存器不能作為一個(gè)操作數(shù);允許字或字節(jié)操作,不影響標(biāo)志位。833、交換指令(Exchange)29應(yīng)用舉例: XCHGBL,DL XCHGAX,SI XCHGCOUNT[DI],AX

XCHG[BX],[DI] (錯(cuò)) XCHGDS,AX(錯(cuò))84應(yīng)用舉例:30XLAT(Translate)換碼指令:該指令不影響標(biāo)志位。格式:XLATstr_table ;(AL)←((BX)+(AL)) 或XLAT str_table——表格符號(hào)地址(首地址), 只是為了提高可讀性而設(shè)置,匯編時(shí)仍用BX。

85XLAT(Translate)換碼指令:31XLAT指令使用方法:先建立一個(gè)字節(jié)表格;表格首偏移地址存入BX;需要轉(zhuǎn)換代碼的序號(hào)(相對(duì)與表格首地址位移量)存入AL;(表中第一個(gè)元素的序號(hào)為0)執(zhí)行XLAT指令后,表中指定序號(hào)的元素存于AL中。(AL)為轉(zhuǎn)換的代碼。由于AL只有8位,所以表的長(zhǎng)度不能超過(guò)256字節(jié).

86XLAT指令使用方法:32XLAT指令應(yīng)用:

若把字符的掃描碼轉(zhuǎn)換成ASCII碼;或數(shù)字0~9轉(zhuǎn)換成7段數(shù)碼所需要的相應(yīng)代碼(字形碼)等就要用XLAT指令。例:內(nèi)存的數(shù)據(jù)段中有一張十六進(jìn)制數(shù)字的ASCII碼表。

首地址為:Hex_table,欲查出表中第10個(gè)元素(‘A’)87XLAT指令應(yīng)用:33執(zhí)行指令序列:MOVBX,OFFSETHex_tableMOVAL,0AHXLATHex_table假設(shè): (DS)=F000H, Hex_table=0040H (AL)=0AH執(zhí)行XLAT以后:(AL)=41H=(F004AH), 即“A”的ASCII碼。30H31H32H...39H41H42H...46H...Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex_table+0FH'F''B''A''9''1''2''0'16進(jìn)制數(shù)的ASCII碼表88執(zhí)行指令序列:30H31H32H...39H41H42H..(二)輸入輸出指令(InputandOutput)輸入輸出指令共兩條:

1、IN(Inputbyteorword)

2、OUT(Outputbyteorword)

輸入指令用于CPU從外設(shè)端口接受數(shù)據(jù),

輸出指令用于CPU向外設(shè)端口發(fā)送數(shù)據(jù)。無(wú)論接受還是發(fā)送數(shù)據(jù),必須通過(guò)累加器AX(字)或AL(字節(jié)),又稱累加器專用傳送指令。

輸入、輸出指令不影響標(biāo)志位。89(二)輸入輸出指令(InputandOutput)35每個(gè)外設(shè)要占幾個(gè)端口:數(shù)據(jù)口,狀態(tài)口和控制口。90每個(gè)外設(shè)要占幾個(gè)端口:數(shù)據(jù)口,狀態(tài)口和控制口。36信息交換要通過(guò)端口,在IBMPC機(jī)里,可以配接許多外部設(shè)備,每個(gè)外設(shè)與CPU之間交換數(shù)據(jù),狀態(tài)信息和控制命令,每一種信息交換都要通過(guò)一個(gè)端口來(lái)進(jìn)行。端口數(shù):外部設(shè)備最多有65536個(gè)I/O端口。 A0-A15譯碼形成。端口號(hào):端口號(hào)(即外設(shè)端口地址)為0000H-FFFFH。PC機(jī)僅使用A0-A9譯碼形成I/O口地址,即1024H個(gè)口地址 端口號(hào):0000H-03FFH其中:A9=1,表示擴(kuò)充槽上的口地址。91信息交換要通過(guò)端口,37長(zhǎng)格式:端口號(hào)中前256個(gè)端口(0-FFH),可以直接寫(xiě)在指令中,這就是長(zhǎng)格式(直接尋址)。端口號(hào)代替指令中的PORT,機(jī)器指令用二字節(jié)表示,第二字節(jié)就是端口號(hào)。短格式:當(dāng)端口號(hào)≥256時(shí),只能使用短格式,必須先把端口號(hào)放到DX寄存器中(間接尋址)。不需要用任何段寄存器來(lái)修改它的值。92長(zhǎng)格式:381、IN(Inputbyteorword)輸入指令格式:INacc,port;(acc)(port)具體形式有四種:INAL,data8;端口地址8位,輸入一個(gè)字節(jié)INAX,data8;端口地址8位,輸入一個(gè)字INAL,DX;端口地址16位,輸入一個(gè)字節(jié)INAX,DX;端口地址16位,輸入一個(gè)字

必須通過(guò)累加器AX(字)或AL(節(jié))輸入數(shù)據(jù)。931、IN(Inputbyteorword)2、OUT(Outputbyteorword)輸出指令格式:OUTport,acc ;(port)(acc)具體形式有四種:OUTdata8,AL;端口地址8位,輸出一個(gè)字節(jié)OUTdata8,AX;端口地址8位,輸出一個(gè)字OUTDX,AL;端口地址16位,輸出一個(gè)字節(jié)OUTDX,AX;端口地址16位,輸出一個(gè)字必須通過(guò)累加器AX(字)或AL(節(jié))輸出數(shù)據(jù)。942、OUT(Outputbyteorword)例1:實(shí)現(xiàn)(29H)(28H)→(DATA_WORD) INAX,28H MOVDATA_WORD,AX例2:從端口3FCH送一個(gè)字到AX寄存器 MOVDX,3FCH INAX,DX;(AL)←(3FCH), (AH)←(3FDH)

例3:實(shí)現(xiàn)將(AL)→(05H) OUT5,AL;(05H)←(AL)95例1:實(shí)現(xiàn)(29H)(28H)→(DATA_WORD)41(三)目的地址傳送指令(Address-objecttransfer)8086/8088提供三條:

地址指針寫(xiě)入指定寄存器或寄存器對(duì)指令。 1、LEA(LoadEffectiveAddress) 2、LDS(LoadpointerusingDS) 3、LES(LoadpointerusingES)96(三)目的地址傳送指令(Address-objecttra1、LEA(LoadEffectiveAddress)格式:LEAreg16,mem16;EA(reg16)功能:加載有效地址,用于寫(xiě)進(jìn)地址指針。把指令指定存儲(chǔ)器操作數(shù)有效地址裝入指定的寄存器例:設(shè)(BX)=0400H,(SI)=003CH LEA

溫馨提示

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