計(jì)算機(jī)硬件技術(shù)-第3章 微處理器指令系統(tǒng)_第1頁(yè)
計(jì)算機(jī)硬件技術(shù)-第3章 微處理器指令系統(tǒng)_第2頁(yè)
計(jì)算機(jī)硬件技術(shù)-第3章 微處理器指令系統(tǒng)_第3頁(yè)
計(jì)算機(jī)硬件技術(shù)-第3章 微處理器指令系統(tǒng)_第4頁(yè)
計(jì)算機(jī)硬件技術(shù)-第3章 微處理器指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩143頁(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)介

JUST《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》

凌青華

江蘇科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院電子信箱:lingee_2000@163.com聯(lián)系電話于作業(yè)微型機(jī)硬件系統(tǒng)包括哪些主要部件?馮諾依曼型計(jì)算機(jī)體系的基本思想是什么?存儲(chǔ)程序+執(zhí)行程序十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù):整數(shù)部分注意逆序取余,小數(shù)不要丟掉小數(shù)點(diǎn)16位負(fù)數(shù)的補(bǔ)碼表示:+65=01000001,-65=10110000補(bǔ)碼的運(yùn)算注意僅有二進(jìn)制數(shù)才有補(bǔ)碼的概念JUST復(fù)習(xí)計(jì)算邏輯地址1234H:ABCDH對(duì)應(yīng)的物理地址。8086內(nèi)部的寄存器有哪些?什么是指令?指令的格式一般是什么?指令MOVAX,DS:[1234H]的含義?JUST第3章微處理器的指令系統(tǒng)8086的尋址方式數(shù)據(jù)傳送類指令算術(shù)運(yùn)算類指令邏輯運(yùn)算和移位循環(huán)類指令串操作類指令程序控制類指令處理器控制類指令CPU指令集JUST3.18086/8088的尋址方式8086/8088的尋址方式分為兩種不同的類型:數(shù)據(jù)尋址方式和程序存儲(chǔ)器尋址方式。前者是尋址操作數(shù)地址,后者是尋址程序地址(在代碼段中)在8086指令系統(tǒng)中,數(shù)據(jù)尋址方式可分為8種:

①立即尋址⑤寄存器相對(duì)尋址

②直接尋址⑥基址-變址尋址

③寄存器尋址⑦相對(duì)的基址-變址尋址

④寄存器間接尋址⑧隱含尋址JUST一.立即尋址操作數(shù)直接由指令給出——立即數(shù)立即尋址只能用于源操作數(shù)例:

MOVAX,1C8FHMOVBYTEPTR[2A00H],8FH

MOV2A00H,AX;錯(cuò)誤!

JUST立即數(shù)操作碼低8位高8位代碼段立即尋址指令在存儲(chǔ)器中的存放形式存儲(chǔ)器MOV操作碼02H31HAHAL代碼段AX例3-1MOVAX,3102H

執(zhí)行后,AH=31H,AL=02HJUST二.直接尋址指令中直接給出操作數(shù)的16位偏移地址偏移地址也稱為有效地址(EA,EffectiveAddress)默認(rèn)的段寄存器為DS,但也可以顯式地指定其他段寄存器——稱為段超越前綴偏移地址也可用符號(hào)地址來(lái)表示,如ADDR

例:

MOVAX,[2A00H]MOVDX,ES:[2A00H]MOVSI,TABLE_PTRJUST例3-2MOVAX,[3102H]AL(3102H),AH(3103H)如果DS=2000H則操作數(shù)的物理地址為:

20000H+3102H=23102H指令執(zhí)行后:AX=MOV操作碼02H31HAHAL23102HCDHABH存儲(chǔ)器代碼段數(shù)據(jù)段..ABCDHJUST字長(zhǎng)不同寄存器與段無(wú)關(guān)三.寄存器尋址操作數(shù)在寄存器中源操作數(shù)與目的操作數(shù)字長(zhǎng)要相同寄存器尋址與段地址無(wú)關(guān)例:

MOVAX,BXMOV[3F00H],AXMOVCL,ALMOVAX,BLMOVES:AX,DX××JUSTAXSI2233H2233H例3-4MOVSI,AX;SIAX

指令執(zhí)行前:AX=2233H

指令執(zhí)行后:AX=2233H,SI=2233H2233HJUST四.寄存器間接尋址操作數(shù)的偏移地址(EA)放在間址寄存器中

只有SI、DI、BX和BP可作間址寄存器物理地址=DS左移四位+BX或SI物理地址=ES左移四位+DI物理地址=SS左移四位+BP

例:MOVAX,[BX]MOVCL,CS:[DI]; MOVCX,CS:[DI]MOVAX,[DX]MOVCL,[AX]EA=

BXBPSIDI××默認(rèn)可以被超越至其他段,用:表示JUST例3-5MOVAX,[SI]若DS=6000H,

SI=1200H則指令執(zhí)行后,AX=44H33H60001200DSSI6000061200

61200HAX存儲(chǔ)器數(shù)據(jù)段

+)

120044H33H3344HJUST

EA=間址寄存器的內(nèi)容加上一個(gè)8/16位的位移量寄存器相對(duì)尋址常用于存取表格或一維數(shù)組中的元素——把表格的起始地址作為位移量,元素的下標(biāo)值放在間址寄存器中EA=BXBPSIDI+8位16位位移量(相對(duì)值)

五.寄存器相對(duì)尋址JUST物理地址=DS左移四位+BX或SI+位移量物理地址=SS左移四位+BP+位移量物理地址=ES左移四位+DI+位移量基本格式:MOVAX,[BX]XYZMOVAX,XYZ[BX]MOVAX,[BX+XYZ]

例:MOVAX,[SI]40HMOVAX,40H[SI]MOVAX,[SI+40H]五.寄存器相對(duì)尋址JUST例3-7MOVAX,DATA[BX]若DS=6000H,BX=1000H,DATA=2A00H,

若(63A00H)=66H,(63A01H)=55H

物理地址

=60000H+1000H+2A00H=63A00H指令執(zhí)行后:AX=5566HJUST六.基址-變址尋址

若操作數(shù)的偏移地址:由基址寄存器(BX或BP)給出——基址尋址方式由變址寄存器(SI或DI)給出——變址尋址方式由一個(gè)基址寄存器的內(nèi)容和一個(gè)變址寄存器的內(nèi)容相加而形成操作數(shù)的偏移地址,稱為基址-變址尋址。EA=BXBP+SIDI注意:同一組內(nèi)的寄存器不能同時(shí)出現(xiàn)。JUST若基址寄存器用BX,則段寄存器用DS物理地址=DS左移四位+BX+SI或DI若基址寄存器用BP,則段寄存器用SS物理地址=SS左移四位+BP+SI或DIJUST例:

MOVAX,[BX][SI]MOVAX,[BX+SI]MOVAX,DS:[BP][DI]

MOVAX,[BX][BP]

MOVAX,[DI][SI]××JUST例3-9MOVAX,[BX][SI]假定:DS=8000H,BX=2000H,SI=1000H則物理地址=指令執(zhí)行后:AL=AH=80000H+2000H+1000H=83000H(83000H)(83001H)

83000操作碼DS

8000BX

2000

+SI

100083000HAHALAX代碼段數(shù)據(jù)段.........YYXXJUST七.相對(duì)的基址-變址尋址

在基址-變址尋址的基礎(chǔ)上再加上一個(gè)相對(duì)位移量EA=BXBP+SIDI+8位16位位移量

例:MOVAX,BASE[SI][BX]MOVAX,[BX+BASE][SI]MOVAX,[BX+SI+BASE]MOVAX,[BX]BASE[SI]MOVAX,[BX+SI]BASEJUST例3-10MOVAX,DATA[DI][BX]若DS=8000H,BX=2000H,DI=1000H,DATA=200H則指令執(zhí)行后AH=(83201H),AL=(83200H)8320083200HAHALAX+

DATA0200操作碼代碼段數(shù)據(jù)段.........YYXXDS

8000BX

2000

DI

1000JUST使用相對(duì)的基址-變址尋址方式可以很方便地訪問二維數(shù)組?;芳拇嫫鲾?shù)組首地址變址寄存器數(shù)組元素行址位移量數(shù)組元素列址(偏移地址)JUST八.隱含尋址指令中的操作數(shù)是隱含的例:MULBL

指令隱含了被乘數(shù)AL及乘積AX類似的指令還有:DIV、CBW、MOVS等AL×BL→AX3.18086/8088的尋址方式在8086指令系統(tǒng)中,數(shù)據(jù)尋址方式可分為8種:

①立即尋址⑤寄存器相對(duì)尋址

②直接尋址⑥基址-變址尋址

③寄存器尋址⑦相對(duì)的基址-變址尋址

④寄存器間接尋址⑧隱含尋址思考:操作數(shù)可從哪兒尋得?即操作數(shù)的“家”可能在哪兒?分別對(duì)應(yīng)哪些尋址方式?程序存儲(chǔ)器尋址方式堆棧存儲(chǔ)器尋址方式串操作指令尋址方式I/O端口尋址方式第3章微處理器的指令系統(tǒng)8086的尋址方式數(shù)據(jù)傳送類指令算術(shù)運(yùn)算類指令邏輯運(yùn)算和移位循環(huán)類指令串操作類指令程序控制類指令處理器控制類指令CPU指令集JUST3.2數(shù)據(jù)傳送類指令通用傳送指令:(MOV;XCHG;PUSH;POP)地址傳送指令:(LEA;LDS;LES)標(biāo)志傳送指令:(LAHF;SAHF;PUSHF;POPF)累加器專用傳送指令:(IN;OUT)JUSTJUST3.2.1通用數(shù)據(jù)傳送指令1、基本傳送指令(MOV)指令格式:MOVDST,SRC;操作:將SRC內(nèi)容賦給DST。所有通用傳送指令都不影響標(biāo)志位。JUST立即數(shù)段寄存器

存儲(chǔ)器

(各種尋址)

通用寄存器12345566??JUST注意:不能用MOV指令實(shí)現(xiàn)以下傳送1、存儲(chǔ)器操作數(shù)之間不能直接傳送

MOV[1000H],[DI]錯(cuò)應(yīng)改為

MOVAX,[DI]MOV[1000H],AX2、立即數(shù)不能直接傳送段寄存器

MOVDS,2000H錯(cuò)應(yīng)改為

MOVAX,2000HMOVDS,AXJUST3、段寄存器之間不能直接傳送

MOVES,DS;錯(cuò)應(yīng)改為

MOVBX,DSMOVES,BX4、CS只可以作為源操作數(shù)例:MOVCS,AX;錯(cuò)

MOVAX,CS;對(duì)5、源操作數(shù)和目的操作數(shù)的寬度必須相同3.2數(shù)據(jù)傳送類指令通用傳送指令:(MOV;PUSH;POP;XCHG)地址傳送指令:(LEA;LDS;LES)標(biāo)志傳送指令:(LAHF;SAHF;PUSHF;POPF)累加器專用傳送指令:(IN;OUT)JUSTJUST2、堆棧指令(PUSH、POP)堆棧(STACK)的概念數(shù)據(jù)的存儲(chǔ)按后進(jìn)先出(LastInFirstOut——LIFO)原則組織的一段內(nèi)存區(qū)域。JUST堆棧用途存放寄存器或存儲(chǔ)器中暫時(shí)不使用的數(shù)據(jù),在使用這些數(shù)據(jù)時(shí)可方便地將其彈出;調(diào)用子程序或發(fā)生中斷時(shí)要保護(hù)斷點(diǎn)信息(入棧),子程序或中斷返回時(shí)恢復(fù)斷點(diǎn)信息(出棧)。JUST斷點(diǎn)信息:程序斷點(diǎn)地址、標(biāo)志寄存器及其它能被子程序使用和改變的寄存器。堆棧用途如下圖JUST入棧指令(PUSH):格式:PUSHsrc

操作過程分兩步完成:(SP)

(SP)-2((SP)+1,(SP))

(src)

功能:把一個(gè)字壓入由SP指向的堆棧區(qū)。 如:PUSHAXJUST例1:PUSH[BX];(設(shè)DS:[BX]字單元數(shù)據(jù)為55AAH)xxHxxHxxHAAH55HxxHSS:[SP]指令執(zhí)行前指令執(zhí)行后SS:[SP]高位地址低位地址JUST出棧指令(POP) 格式:POPdst ;

操作:

(dst)

((SP)+1,(SP)) (SP)

(SP)+2

功能:把SP所指向的堆棧頂部的一個(gè)字送入目的地址,同時(shí)進(jìn)行修改堆棧指針。 如:POPBXPOPAX

JUST例2:POPBX;設(shè)接在例1后執(zhí)行。AAH55HxxHSS:[SP]指令執(zhí)行前AAH55HxxHSS:[SP]指令執(zhí)行后55AAHBX思考SP的初值為1000H,SS=2000H,AX=3040H,BX=5060H,試問:(1)該堆棧段的首地址是多少?末地址是多少?(2)執(zhí)行指令PUSHAX后,SP的值為多少?(3)再執(zhí)行PUSHBX及POPAX后,SP、AX、BX的值為多少?(4)此時(shí),SP所指內(nèi)存空間的數(shù)據(jù)為多少?(讀出一個(gè)字)JUSTJUST應(yīng)注意的問題

堆棧操作都按字操作,“PUSHAL”為錯(cuò)誤指令;

PUSH,POP指令的操作數(shù)可以是寄存器或存儲(chǔ)單元;PUSHCS合法,POPCS非法;執(zhí)行PUSH指令,(SP)-2

(SP),低字節(jié)放在低地址,高字節(jié)放在高地址;SP總是指向棧頂;堆棧最大容量即為SP的初值;堆棧中的數(shù)據(jù)彈出后,數(shù)據(jù)并沒有在堆棧中消失,除非壓入新數(shù)據(jù),畫圖時(shí)注意;使用堆棧指令保護(hù)和恢復(fù)現(xiàn)場(chǎng)時(shí),要注意指令的排列順序,如:PUSHAXPUSHBXPUSHDS......POPDSPOPBXPOPAX3.2數(shù)據(jù)傳送類指令通用傳送指令:(MOV;PUSH;POP;XCHG)地址傳送指令:(LEA;LDS;LES)標(biāo)志傳送指令:(LAHF;SAHF;PUSHF;POPF)累加器專用傳送指令:(IN;OUT)JUSTJUST3、交換指令(XCHG)格式:XCHGdst,src ;(dst)

(src)可以實(shí)現(xiàn):寄存器之間 寄存器和存儲(chǔ)器之間注意:存儲(chǔ)器之間不能直接交換;段寄存器不能作為操作數(shù);允許字或字節(jié)操作。熟悉?。?、交換指令(XCHG)【例3.16】設(shè)當(dāng)前CS=1000H,IP=0064H,DS=2000H,SI=3000H,AX=1234H,(23400H)=CDH,(23401H)=ABH。則執(zhí)行指令XCHGAX,[SI+0400H]的功能為什么?AX=ABCDH;(23400H)=34H,(23401H)=12HJUST3.2數(shù)據(jù)傳送類指令通用傳送指令:(MOV;PUSH;POP;XCHG)地址傳送指令:(LEA;LDS;LES)標(biāo)志傳送指令:(LAHF;SAHF;PUSHF;POPF)累加器專用傳送指令:(IN;OUT)JUSTJUST專用于傳送地址碼的指令,可傳送存儲(chǔ)器的邏輯地址(即存儲(chǔ)器操作數(shù)的段地址或偏移地址)至指定寄存器中,共包含3條指令:

LEALDSLES3.2.2目標(biāo)地址傳送指令JUST1)LEA(LoadEffectiveAddress)格式:LEAreg16,memReg16—16位通用寄存器;mem—存儲(chǔ)單元;功能:將源操作數(shù)的偏移地址傳送到目的操作數(shù);

注意:源操作數(shù)必須以直接尋址、寄存器間接尋址、寄存器相對(duì)尋址、基址變址尋址、相對(duì)基址變址尋址等方式表示的存儲(chǔ)器操作數(shù);目的操作數(shù)為一個(gè)16位的通用寄存器。JUST例:LEAAX,[DI]設(shè)(DI)=1005H執(zhí)行結(jié)果:(AX)=1005H例:LEABX,[BX+SI+0F62H]設(shè)(BX)=0400H,(SI)=003CH執(zhí)行指令后:源操作數(shù)偏移地址為:(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH則(BX)=139EH注意:LEA指令和MOV指令不同【例3.18】LEABX,[SI]指令是將SI指示的偏移地址(SI的內(nèi)容)裝入BX。而MOVBX,[SI]指令則是將由SI尋址的存儲(chǔ)單元中的數(shù)據(jù)裝入BX?!纠?.19】LEASP,[3768H]該指令是使堆棧指針SP為3768H。復(fù)習(xí)MOVBX,[SI]LEABX,[SI]已知SI=1000H,DS=2000H,ES=1000H,BX=3456H,SS=3000H

(21000H)=0CDH,(21001H)=23H,(11000H)=23H,(11001H)=0CDH,則執(zhí)行兩條指令后,BX的內(nèi)容分別是什么?JUSTJUST2)LDS(LoadpointerusingDS)(了解)格式:LDSreg16,mem ;功能:把源操作數(shù)指定的4個(gè)相繼字節(jié)的數(shù)據(jù)分別送指令指定的寄存器及DS寄存器中。(reg16)←(mem) (DS)←((mem)+2)JUST3)LES(LoadpointerusingES)(了解)格式:LESreg16,mem;功能:把源操作數(shù)指定的4個(gè)相繼字節(jié)的數(shù)據(jù)分別送指令指定的寄存器及ES寄存器中。

(reg16)←(mem)(ES)←((mem)+2)JUST例:設(shè)

(DS)=0C000H指令LDSSI,[0010H]執(zhí)行指令后:(SI)=0180H(DS)=2000H

80H01H00H20HC000H:0010H(DS)C0011HC0012HC0013H......存儲(chǔ)器C0010HJUST例:設(shè)(DS)=B000H(BX)=080AH指令LESDI,[BX]執(zhí)行指令后: (DI)=05A2H (ES)=4000HA2H05H00H40HB000H:080AH(DS)B080BHB080CHB080DH......存儲(chǔ)器(BX)B080AH3.2數(shù)據(jù)傳送類指令通用傳送指令:(MOV;PUSH;POP;XCHG)地址傳送指令:(LEA;LDS;LES)標(biāo)志傳送指令:(LAHF;SAHF;PUSHF;POPF)累加器專用傳送指令:(IN;OUT)JUST3.2數(shù)據(jù)傳送類指令通用傳送指令:(MOV;PUSH;POP;XCHG)地址傳送指令:(LEA;LDS;LES)標(biāo)志傳送指令:(LAHF;SAHF;PUSHF;POPF)累加器專用傳送指令:(IN;OUT)JUSTJUST3.2.3標(biāo)志傳送指令

8086有四條標(biāo)志傳送操作指令:

1)LAHF(LoadAHfromflags)(了解)格式:LAHF;功能:標(biāo)志寄存器低八位傳送給AH

(AH)←(PSW的低字節(jié))JUST2)SAHF(StoreAHintoFlags)(了解)格式:SAHF

功能:AH內(nèi)容傳送給標(biāo)志寄存器低八位。(PSW的低字節(jié))←(AH)JUST3)PUSHF(PushFlags) 格式:PUSHF ; 功能:標(biāo)志進(jìn)棧。(SP)←(SP)-2

((SP)+1,(SP))←(PSW)4)POPF(PopFlags)

格式:POPF; 功能:標(biāo)志出棧。(PSW)←((SP)+1,(SP))(SP)←(SP)+23.2數(shù)據(jù)傳送類指令通用傳送指令;(MOV;PUSH;POP;XCHG)地址傳送指令;(LEA;LDS;LES)標(biāo)志傳送指令;(LAHF;SAHF;PUSHF;POPF)I/O數(shù)據(jù)傳送指令;(IN;OUT)JUSTJUST3.2.4I/O數(shù)據(jù)傳送指令

1)輸入指令(IN)功能:用于CPU從外設(shè)端口接收數(shù)據(jù)。具體形式有四種:

INAL,data8;從8位端口地址輸入一個(gè)字節(jié)

INAX,data8;從8位端口地址輸入一個(gè)字

INAL,DX;從16位端口地址輸入一個(gè)字節(jié)

INAX,DX;從16位端口地址輸入一個(gè)字JUST例1:

INAX,80H;

從地址為80H的端口讀入一個(gè)字節(jié);例2:

MOVDX,1020H;

將16位端口地址賦給DXINAL,DX;

從(DX)為地址的端口讀入16位數(shù)據(jù)JUST

注意:1)CPU對(duì)各個(gè)外部設(shè)備接口也采用地址編碼。8086CPU連接外部設(shè)備的地址可以是8位或16位。存儲(chǔ)器I/O接口輸入設(shè)備I/O接口數(shù)據(jù)總線DB控制總線CB地址總線AB輸出設(shè)備CPU20位8位或16位JUST

注意:2)8086CPU訪問存儲(chǔ)器和訪問外部設(shè)備采用不同的指令形式,外設(shè)地址與存儲(chǔ)器地址可以重疊。思考:從數(shù)據(jù)段偏移地址為1234H的內(nèi)存以及端口地址為1234H的IO接口,分別讀一個(gè)字至BX和CX。另外:CPU的IO/M’引腳控制存儲(chǔ)器或外設(shè)被選通,當(dāng)訪問存儲(chǔ)器時(shí)IO/M’引腳輸出低電平,當(dāng)訪問外設(shè)時(shí)IO/M’引腳輸出高電平。JUST

MOVBX,[1234H];從存儲(chǔ)器的[1234H]單元讀數(shù)據(jù),放

入BX。CPU執(zhí)行該指令使IO/M’=0

MOVDX,1234H

;立即數(shù)賦給DX

INAX,DX;從地址為[1234H]的外設(shè)讀數(shù)據(jù),

CPU執(zhí)行該指令使IO/M’=1存儲(chǔ)器I/O接口輸入設(shè)備I/O接口數(shù)據(jù)總線DB控制總線CB地址總線AB輸出設(shè)備CPUIO/M’JUST

2)輸出指令(OUT)

功能:用于CPU向外設(shè)端口發(fā)送數(shù)據(jù)四種形式:

OUTdata8,AL;向8位地址端口輸出一個(gè)字節(jié)

OUTdata8,AX;向8位地址端口輸出一個(gè)字

OUTDX,AL;向16位地址端口輸出一個(gè)字節(jié)

OUTDX,AX;向16位地址端口輸出一個(gè)字注意:IO輸入時(shí)一定是端口送數(shù)據(jù)至累加器,輸出時(shí)一定是累加器向端口送數(shù)據(jù)JUST3.2數(shù)據(jù)傳送類指令通用傳送指令;(MOV;XCHG;PUSH;POP)地址傳送指令;(LEA;LDS;LES)標(biāo)志傳送指令;(LAHF;SAHF;PUSHF;POPF)I/O數(shù)據(jù)傳送指令;(IN;OUT)【累加器專用傳送指令】3.3算術(shù)運(yùn)算類指令包括:加法指令、減法指令、乘法指令、除法指令3.3.1加法指令A(yù)DD(Addition)加法指令A(yù)DC(AddwithCarry)帶進(jìn)位加法指令I(lǐng)NC(Increment)加1指令A(yù)AA(ASCIIadjustforaddition)ASCII加法調(diào)整指令(了解)DAA(Decimaladjustforaddition)十進(jìn)制加法調(diào)整指令(了解)JUSTJUST1)不含進(jìn)位的加法指令A(yù)DD指令格式:ADDdest,src;功能:(dest)

(dest)+(src) Src:立即數(shù),通用寄存器,存儲(chǔ)器

dest:通用寄存器,存儲(chǔ)器例:

ADDCL,10 ADDDX,SI ADDAX,[2F00H] ADD100H[BX],AL ADDBYTEPTR[DI],30H JUST特點(diǎn):可進(jìn)行8位或16位的無(wú)符號(hào)數(shù)或有符號(hào)數(shù)加法運(yùn)算;

源操作數(shù)和目標(biāo)操作數(shù)不能同時(shí)為存儲(chǔ)器,不能為段寄存器;指令影響標(biāo)志位8位(有符號(hào))數(shù)相加,和超出范圍(-128~+127),或16位(有符號(hào))數(shù)相加,和超出范圍(-32768~+32767),則O=18位(無(wú)符號(hào))數(shù)相加,和超過255,或16位(無(wú)符號(hào))數(shù)相加,和超過65535,則C=1,其他標(biāo)志(S,A,P,Z)由運(yùn)算結(jié)果按定義確定。3.3算術(shù)運(yùn)算類指令【例3.25】寄存器加法。若將AX、BX、CX和DX的內(nèi)容累加,再將所得的16位的和數(shù)存入AX,則加法程序段如下:ADDAX,BX ;AX←AX+BXADDAX,CX ;AX←AX+BX+CXADDAX,DX ;AX←AX+BX+CX+DX3.3算術(shù)運(yùn)算類指令【例3.26】MOVDL,12HADDDL,34H程序執(zhí)行后,標(biāo)志寄存器的結(jié)果是什么?OF=0(沒有溢出),SF=0(結(jié)果為正),ZF=0(結(jié)果不是0),PF=0(奇偶性為奇),CF=0(沒有進(jìn)位)。JUST2)含進(jìn)位加法指令A(yù)DC(Addwithcarry)格式:ADCdest,src;功能:(dest)←(dest)+(src)+C

C:進(jìn)位標(biāo)志C的當(dāng)前值特點(diǎn):與ADD同。類型舉例:

ADCCX,300 ADCAL,BL ADCDX,[SI]

JUST

用途:ADC指令主要用于多字節(jié)運(yùn)算中。

如:求兩個(gè)32位數(shù)12345678H與0ABCDEFABH之和MOVAX,1234HMOVBX,5678HADDBX,0EFABHADCAX,0ABCDHJUST3)加1指令I(lǐng)NC(Incrementby1)格式:INC dest ;功能:(dest)←(dest)+1 dest:通用寄存器、存儲(chǔ)器;用途:用于在循環(huán)程序中修改循環(huán)次數(shù)或地址指針。JUST例:

INCDL ;8位寄存器+1

INCSI

;16位寄存器+1而

INC[2100]

;錯(cuò)誤,應(yīng)寫成

INCWORDPTR[2100]

存儲(chǔ)器內(nèi)容+1(字操作)又如

INCBYTEPTR[BX][SI]

;字節(jié)操作

JUST3.3.2減法指令(Subtraction)

8086有7條減法指令:SUB(Subtraction)不含借位減法指令SBB(SubtractionwithBorrow)含借位減法指令DEC(Decrementby1)減1指令CMP(Compare)比較指令

NEG(Negate) 求補(bǔ)指令(熟悉)AAS(ASCIIAdjustforSubtraction)減法ASCII調(diào)整指令(了解)DAS(DecimalAdjustforSubtraction)減法十進(jìn)制調(diào)整指令(了解)JUST1)不含借位減法指令SUB(Subtraction)

格式:SUB:dest,src;功能:(dest)←(dest)-(src)

Src:立即數(shù),通用寄存器,存儲(chǔ)器。

Dest:通用寄存器,存儲(chǔ)器。例: SUBAL,37H SUBBX,DX

3.3.2減法指令【例3.30】SUBAX,[BX]設(shè)當(dāng)前CS=1000H,IP=60C0H,DS=2000H,BX=970EH。JUST2)含借位減法指令SBB(Subtractionwithborrow)

格式:SBBdest,src;功能:(dest)←(dest)-(src)-C Src: 立即數(shù),通用寄存器,存儲(chǔ)器

dest:通用寄存器,存儲(chǔ)器例:SBBBX,100H SBBCX,DX SBBWORDPTR100H[BP],100

JUST3)減1指令DEC(Decrementby1)

格式:DECdest

功能:(dest)←(dest)-1dest:通用寄存器、存儲(chǔ)器。不能是段寄存器。用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。JUST4)求補(bǔ)指令NEG(Negate)

格式:NEGdest;

功能:(dest)←0-(dest)dest:通用寄存器、存儲(chǔ)器。操作:把操作數(shù)按位求反后末位+1。若AL=00000100=+4,執(zhí)行NEGAL指令后AL=?AL=11111100=[-4]補(bǔ);若AL=11101110=[-18]補(bǔ),執(zhí)行NEGAL指令后將變成00010010=+18。JUST5)比較指令CMP(Compare)格式:CMPdest,src ;(dest)-(src) 結(jié)果不保留,只是用來(lái)影響標(biāo)志位。影響標(biāo)志:A、C、O、P、S、Z。

src:立即數(shù),通用寄存器,存儲(chǔ)器。

dest:通用寄存器,存儲(chǔ)器。例:CMPAL,0AH ;寄存器與立即數(shù)比較

CMPCX,DI ;寄存器與寄存器比較

CMPAX,[1000H] ;寄存器與存儲(chǔ)器比較

CMP[BX+5],SI;存儲(chǔ)器與寄存器比較JUST用途:用比較指令來(lái)比較兩個(gè)數(shù)之間的關(guān)系

(1)根據(jù)Z標(biāo)志,判斷兩者是否相等;(2)根據(jù)C標(biāo)志,判斷兩個(gè)無(wú)符號(hào)數(shù)的大小;(3)用S、O標(biāo)志,判斷兩個(gè)帶符號(hào)數(shù)的大小OF=0,若SF=0,則A>B,否則A<BOF=1,若SF=1,則A>B,否則A<B復(fù)習(xí)判斷下列指令書寫是否正確MOVAL,BXMOVAL,CLINC[BX]MOV5,ALMOV[BX],[SI]MOVBL,0F5HMOVDX,2000HPOPCSPUSHCSINBX,DXJUST復(fù)習(xí)編程實(shí)現(xiàn)200減去AL中的內(nèi)容,結(jié)果存在DS數(shù)據(jù)段,偏移地址為DI的內(nèi)存單元中。JUSTJUST3.3.3乘法指令1)無(wú)符號(hào)乘法(MUL)格式:MULSRC

操作:

字節(jié)操作數(shù):AX←(AL)*(SRC)

字操作數(shù):DX:AX←(AX)*(SRC)2)帶符號(hào)乘法(IMUL)格式:IMULSRC操作:同MUL,但操作數(shù)和乘積均帶符號(hào);按有符號(hào)數(shù)的規(guī)則相乘;JUST舉例:

MULBL;AX←(AL)*(BL)MULBX;

AX←(AX)*(BX)的低16位DX←(AX)*(BX)的高16位JUST3.3.4除法指令1)無(wú)符號(hào)除法(DIV)格式:DIVSRC操作:字節(jié)除數(shù):AL←(AX)/(SRC)之商

AH←(AX)/(SRC)之余數(shù)字除數(shù):AX←(DX:AX)/(SRC)之商

DX←(DX:AX)/(SRC)之余數(shù)JUST2)帶符號(hào)除法(IDIV)格式:IDIVSRC操作:同DIV指令JUST3)字節(jié)擴(kuò)展指令(CBW)(了解)格式:CBW;ConvertBytetoWord

功能:將AL字節(jié)擴(kuò)展成字,符號(hào)位及高字節(jié)在AH中;4)字?jǐn)U展指令(CWD)(了解)格式:

CWD;ConvertWordtoDoubleWord

功能:AX擴(kuò)展成雙字,符號(hào)位及高字在DX中;注意:這兩條指令的作用是為IDIV指令設(shè)置的符號(hào)擴(kuò)展指令,用于對(duì)被除數(shù)AL或AX進(jìn)行擴(kuò)展JUST3.3.5十進(jìn)制調(diào)整指令(了解)共六條DAA壓縮BCD碼的加法十進(jìn)制調(diào)整DAS壓縮BCD碼的減法十進(jìn)制調(diào)整AAA非壓縮BCD碼的加法十進(jìn)制調(diào)整AAS非壓縮BCD碼的減法十進(jìn)制調(diào)整AAM乘法的十進(jìn)制調(diào)整AAD除法的十進(jìn)制調(diào)整3.3算術(shù)運(yùn)算指令加法指令A(yù)DD,ADC,INC減法指令SUB,SBB,DEC,NEG,CMP乘法指令MUL,IMUL除法指令DIV,IDIV,CBW,CWD十進(jìn)制調(diào)整指令DAA,DAS,AAA,AAS,AAM,AADJUST3.4邏輯運(yùn)算和移位循環(huán)類指令3.4.1邏輯運(yùn)算指令A(yù)ND:邏輯“與”指令TEST:測(cè)試指令OR:邏輯“或”指令XOR:(eXclusiveOR)邏輯“異或”指令NOT:邏輯“非”指令JUSTJUST1)“與”指令A(yù)ND

格式:ANDdest,src;功能:(dest)

(dest)∧(src)

src:立即數(shù)、通用寄存器、存儲(chǔ)器。

dest:通用寄存器、存儲(chǔ)器。

兩操作數(shù)不能同為存儲(chǔ)器操作數(shù)操作類型舉例:ANDAL,0FH ANDCX,DI ANDSI,[2456H]JUST2)測(cè)試指令TEST

格式:TESTdest,src;(dest)∧(src)

src、dest的規(guī)則同“AND”

操作:操作數(shù)相與,結(jié)果不保存,用來(lái)改變標(biāo)志位。操作類型舉例:

TESTBH,7 TESTSI,BP TESTDI,1030H[BX] JUST3)“或”指令OR

格式:ORdest,src;

dest:寄存器、存儲(chǔ)器。

src:立即數(shù)、寄存器、存儲(chǔ)器。

不能同時(shí)為存儲(chǔ)器操作數(shù)JUST4)“異或”指令XOR

格式:XORdest,src dest:寄存器、存儲(chǔ)器。

src:立即數(shù)、寄存器、存儲(chǔ)器

按位比較,不相同則為1,相同則為0;

不能同時(shí)為存儲(chǔ)器操作數(shù)JUST5)“非”指令NOT

格式:NOTdest;操作:按位求反操作數(shù):寄存器、存儲(chǔ)器,不能是立即數(shù)。

JUST邏輯運(yùn)算指令的應(yīng)用①屏蔽若干位。(常用指令)

ANDAL,01H;ANDAL,0FH;②使若干位置1(常用指令)

ORBL,0F0H;③清除CF、OF

ANDAL,AL(ANDAL,0FFH;ORBL,BL;……)定義:邏輯運(yùn)算指令執(zhí)行后CF,OF為0,AF未定義,其他標(biāo)志位根據(jù)結(jié)果確定屏蔽AL的D7~D1,保留D0屏蔽AL高4位,保留低4位使BL高4位置1,低4位不變JUST④求反NOTAL/NOTWORDPTR[BX+DI]⑤對(duì)指定位求反

XORAL,0FH;AL高4位不變,低4位求反

XORCL,55H;⑥清除寄存器及CF(常用指令)

XORAX,AX/XORBX,BXXORBYTEPTR[BX],BYTEPTR[BX]×X⊕0=XX⊕1=X邏輯運(yùn)算指令的應(yīng)用CL偶數(shù)位求反,奇數(shù)位不變JUST⑦不改變操作數(shù),測(cè)試操作數(shù)或操作數(shù)的指定位TESTAL,0FFH;由ZF標(biāo)志判斷AL是否為零;也可以用CMP指令。TESTAL,01;由ZF標(biāo)志判斷AL的D0是否為零,;ZF=1,則AL.D0=0

;ZF=0,則AL.D0=1ANDAL,01;也可完成上述功能,但是改變了目的操作數(shù)邏輯運(yùn)算指令的應(yīng)用JUST3.4.2移位指令共有以下8條SAL(ShiftArithmeticLeft)

算術(shù)左移SAR(Shiftarithmeticright)

算術(shù)右移SHL(Shiftlogicalleft)邏輯左移SHR(Shiftlogicalright)

邏輯右移ROL(Rotateleft)

循環(huán)左移ROR(Rotateright)

循環(huán)右移RCL(Rotateleftwithcarry)

帶進(jìn)位循環(huán)左移RCR(Rotaterightwithcarry)

帶進(jìn)位循環(huán)右移JUST

移位指令的格式

操作碼reg/mem,CountCount=1或CL,指定移位次數(shù)移1位或移位次數(shù)在CL中

SHLAH,1SALSI,CLSALWORDPTR[BX+5],1ROLBH,1ROLDX,CL

字節(jié)或字操作,通用寄存器或存儲(chǔ)器操作數(shù)JUST1)邏輯左移/算術(shù)左移指令SHL/SAL

這兩條指令實(shí)現(xiàn)相同的操作操作示意圖如下圖,相當(dāng)于無(wú)符號(hào)數(shù)×2

例:

MOVAH,3FH;

SALAH,1;

MOVCL,2SALAH,CL;0C操作數(shù)(AH)=00111111B(63D)(AH)=01111110=7EH(126D)(AH)=11111000=0F8H(248D)JUST2)邏輯右移指令SHR

操作示意圖如下:

指令格式舉例:

SHRBL,1 SHRAX,CL SHRBYTEPTR[DI+BP],1

相當(dāng)于無(wú)符號(hào)數(shù)除以2 操作數(shù)C0JUST3)算術(shù)右移指令SAR

指令操作示意圖如下圖所示

舉例:

MOVAL,88HMOVCL,2SARAL,CL 操作數(shù)C執(zhí)行結(jié)果AL=11100010JUST4)不含進(jìn)位標(biāo)志循環(huán)左移指令ROL

操作示意圖如下C操作數(shù)

指令格式舉例:

ROLBH,1 ROLDX,CL ROLWORDPTR12H[DI],1

JUST5)不含C的循環(huán)右移指令ROR

操作示意圖如下C操作數(shù)JUST6)含C循環(huán)左移指令RCL

操作示意圖如下 C操作數(shù)

指令格式舉例:

RCLBX,1 RCLDL,CL

JUST7)含C循環(huán)右移指令RCR

操作示意圖如下C操作數(shù)

指令格式舉例:

RCRDI,1 RCRSI,CL JUST注意:標(biāo)志設(shè)置

AF:對(duì)AF無(wú)定義;

CF:按移入的值或?yàn)?或?yàn)?;根據(jù)移位后的結(jié)果設(shè)置SF、ZF、PF;

OF:當(dāng)移動(dòng)1位時(shí),移位后如果符號(hào)位發(fā)生變化,則OF=1,符號(hào)位不發(fā)生變化,則OF=0,移位次數(shù)大于1時(shí),OF不定。3.4邏輯運(yùn)算和移位循環(huán)類指令邏輯運(yùn)算指令A(yù)ND,TEST,OR,XOR,NOT移位指令SHL,SHR,SAL,SAR循環(huán)移位指令ROL,ROR,RCL,RCRJUST3.5串操作指令串操作類指令是唯一能在存儲(chǔ)器內(nèi)的源與目標(biāo)之間進(jìn)行操作的指令。為縮短指令長(zhǎng)度,串操作指令均采用隱含尋址方式源數(shù)據(jù)串一般在當(dāng)前數(shù)據(jù)段中,即由DS段寄存器提供段地址,其偏移地址必須由源變址寄存器SI提供;目標(biāo)串必須在附加段中,即由ES段寄存器提供段地址,其偏移地址必須由目標(biāo)變址寄存器DI提供。JUST3.5串操作指令8086有5種基本串操作:MOVS(Movestring)串傳送指令CMPS(Comparestring)串比較指令SCAS(Scanstring)串掃描指令LODS(Loadfromstring)取串指令STOS(Storeintostring)存串指令JUSTJUST串傳送指令MOVS

串傳送有2種格式:

(1)MOVSB字節(jié)傳送;把數(shù)據(jù)段中SI尋址的數(shù)據(jù)傳送到附加段中DI尋址的存儲(chǔ)區(qū)域中;然后修改SI、DI。

(ES:DI)←(DS:SI);(SI)←(SI)±1;(DI)←(DI)±1

當(dāng)方向標(biāo)志D=0時(shí)用“+”,D=1時(shí)用“-”JUST2000H:1000H附加段(ES)21001H21002H21003H......存儲(chǔ)器21000H80H01H9AH20H1000H:0010H數(shù)據(jù)段(DS)10011H10012H10013H......存儲(chǔ)器10010HJUSTMOVAX,1000HMOVDS,AX;數(shù)據(jù)段地址賦值

MOVAX,2000HMOVES,AX;附加段地址賦值

MOVSI,0013H;源數(shù)據(jù)塊首地址

MOVDI,1003H;目的數(shù)據(jù)塊首地址

MOVCX,4;數(shù)據(jù)塊長(zhǎng)度賦計(jì)數(shù)器

STD//設(shè)置方向標(biāo)志LP:MOVSB;完成一個(gè)字節(jié)數(shù)據(jù)傳送

DECCX;計(jì)數(shù)器減一

JNZLP;結(jié)果不為0,重復(fù)傳送

HLTJUSTMOVAX,1000HMOVDS,AX;數(shù)據(jù)段地址賦值

MOVAX,2000HMOVES,AX;附加段地址賦值

MOVSI,0013H;源數(shù)據(jù)塊首地址(最高位地址)

MOVDI,1003H;目的數(shù)據(jù)塊首地址(最高位地址)

MOVCX,4;數(shù)據(jù)塊長(zhǎng)度賦計(jì)數(shù)器

STDLP:MOVAL,[SI]MOV[DI],ALDECSIDECDIDECCXJNZLPHLTJUST(2)MOVSW

操作:字傳送;(ES:DI)←(DS:SI);(SI)←(SI)±2;(DI)←(DI)±2

當(dāng)方向標(biāo)志D=0時(shí)用“+”,D=1時(shí)用“-”可見,該類指令可以實(shí)現(xiàn)從存儲(chǔ)器到存儲(chǔ)器的數(shù)據(jù)傳送;而且傳送非常簡(jiǎn)便JUSTREP重復(fù)前綴指令重復(fù)串操作執(zhí)行過程:(1)當(dāng)(CX)≠0,

(CX)(CX)-1

,執(zhí)行REP后的串指令。

(2)當(dāng)(CX)=0

,結(jié)束REP,執(zhí)行下一條指令。REP執(zhí)行流程圖注意:重復(fù)前綴不能單獨(dú)使用,只能附加在串操作指令前面,使串操作重復(fù)執(zhí)行JUST

如上例可用REP操作如下

MOVAX,1000HMOVDS,AXMOVAX,2000HMOVES,AXMOVSI,0010HMOVDI,1000HMOVCX,4;數(shù)據(jù)塊長(zhǎng)度賦計(jì)數(shù)器

CLDREPMOVSB;重復(fù)完成字節(jié)數(shù)據(jù)傳送

HLT3.5串操作指令8086有5種基本串操作:

MOVS(Movestring)串傳送指令

CMPS(Comparestring)串比較指令

SCAS(Scanstring)串掃描指令

LODS(Loadfromstring)取串指令

STOS(Storeintostring)存串指令JUST3.6程序控制類指令控制傳送指令包括四種:轉(zhuǎn)移指令(條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移3.6.1,3.6.2)循環(huán)控制指令(3.6.3)過程調(diào)用指令(3.6.1P.114)中斷指令(3.6.4)JUSTJUST(一)轉(zhuǎn)移指令

轉(zhuǎn)移指令控制程序從一處轉(zhuǎn)換到另一處執(zhí)行。在CPU內(nèi)部,轉(zhuǎn)移是通過將目標(biāo)地址傳送給IP來(lái)實(shí)現(xiàn)的。轉(zhuǎn)移指令包括兩種:無(wú)條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令

1、無(wú)條件轉(zhuǎn)移指令JMP(Jump)

格式:JMP語(yǔ)句標(biāo)號(hào)

JMPLP;3.6.2條件轉(zhuǎn)移指令JUST2、條件轉(zhuǎn)移指令

1)根據(jù)單個(gè)條件標(biāo)志轉(zhuǎn)移①

Z標(biāo)志

JZ/JNZ

;

JE/JNE

JumponZero;JumponEqual

②C標(biāo)志

JC/JNC

③P標(biāo)志

JP/JNP;JPE/JPO

JumponParity;JumponEven;JumponOddJUST④S標(biāo)志

JS/JNS⑤O標(biāo)志

JO/JNO

2)根據(jù)兩個(gè)無(wú)符號(hào)數(shù)大小關(guān)系轉(zhuǎn)移(高于、低于)

JB、JNAE;JA、JNBEJBE、JNA;JAE、JNBJZ(或JE)/JNZ(或JNE)JB:JumponBelow;JAE:JumponAboveorEqual

JUST3)根據(jù)兩個(gè)帶符號(hào)數(shù)比較結(jié)果轉(zhuǎn)移(大于,小于)

JL(JNGE)

JLE(JNG)JG(JNLE)JGE(JNL)

L—Less;G—Greater;E—Equal注意:所有條件轉(zhuǎn)移指令都是段內(nèi)(-128~+127)范圍內(nèi)轉(zhuǎn)移。JUST標(biāo)志轉(zhuǎn)移指令舉例計(jì)算X-Y的絕對(duì)值,X和Y為16位操作數(shù),結(jié)果存入result

MOVAX,X;

SUBAX,Y;

JNSNO_NEG;//(X-Y)如為正數(shù),不求絕對(duì)值

NEGAX;//求絕對(duì)值

NO_NEG:MOVresult,AX;//保存結(jié)果JUST根據(jù)無(wú)符號(hào)數(shù)大小關(guān)系轉(zhuǎn)移舉例AX和BX為無(wú)符號(hào)數(shù),比較大小,將較大的數(shù)放入AX中。

CMPAX,BX;

JNBNEXT

;如AX≥BX,不處理

MOVAX,BX;AX<BX,BX送入AX中NEXT:……JUST根據(jù)有符號(hào)數(shù)大小關(guān)系轉(zhuǎn)移舉例AX和BX為有符號(hào)數(shù),比較大小,將較大的數(shù)放入AX中。

CMPAX,BX;

JNLNEXT

;如AX≥BX,不處理

MOVAX,BX;AX<BX,BX送入AX中NEXT:……JUST3、過程(子程序)調(diào)用指令子程序—程序中具有獨(dú)立功能的部分編寫成獨(dú)立程序模塊。主程序中調(diào)用子程序

CALL

子過程名子程序返回指令RET(return)在子程序的結(jié)尾,用來(lái)返回主程序JUST3.6.3循環(huán)控制指令

1、無(wú)條件循環(huán)

LOOP

語(yǔ)句標(biāo)號(hào)

執(zhí)行操作:①(CX)←(CX)-1②若(CX)≠0,繼續(xù)循環(huán);

否則退出循環(huán),執(zhí)行LOOP指令之后的指令。JUSTMOVAX,0000HMOVBX,0001HMOVCX,000AHLP:ADDAX,BX LOOPLP……JUST

2、條件循環(huán)

1)LOOPZ/LOOPE

語(yǔ)句標(biāo)號(hào)

執(zhí)行操作:①(CX)←(CX)-1②若CX≠0且Z=1,轉(zhuǎn)向目標(biāo)地址去執(zhí)行;

否則執(zhí)行LOOP指令之后的指令。

JUST2)LOOPNZ/LOOPNE

語(yǔ)句標(biāo)號(hào)

執(zhí)行操作:①(CX)←(CX)-1②若CX≠0且Z=0,轉(zhuǎn)向目標(biāo)地址去

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論