匯編復(fù)習(xí)大綱(2015秋季)_第1頁
匯編復(fù)習(xí)大綱(2015秋季)_第2頁
匯編復(fù)習(xí)大綱(2015秋季)_第3頁
匯編復(fù)習(xí)大綱(2015秋季)_第4頁
匯編復(fù)習(xí)大綱(2015秋季)_第5頁
已閱讀5頁,還剩248頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、(2015秋季學(xué)期)第第2頁頁第第1章章第第2章章第第3章章第第4章章第第5章章第第6章章第第8章章第第9章章v二進制和十六進制運算二進制和十六進制運算v數(shù)的補碼表示數(shù)的補碼表示v補碼的加法和減法補碼的加法和減法v基本邏輯運算:基本邏輯運算:ANDAND、OROR、NOTNOT、XORXORv常用字符表示法常用字符表示法第第3頁頁4X的真值符號位數(shù)值位不變10X的原碼符號位不變,數(shù)值位時)1(符號位為1變反加時)0不變(符號位為X的補碼X的反碼符號位不變,數(shù)值位時)變反(符號位為時)不變(符號位為105v邏輯運算邏輯運算AND OR NOT XORAND OR NOT XORv操作方式:按二進

2、制的位運算操作方式:按二進制的位運算例:例:(7) 10 XOR (5) 10 =(2)106 6參見p.1178v把二進制數(shù)從右到把二進制數(shù)從右到左左4 4位一撇位一撇1 1位位HexHex10101010112 A B001A2B0001 1010 0010 1011l 十六進制數(shù)的每1位對應(yīng)4位二進制數(shù)9v(100)H n(1 0000 0000)Bn(256)Dn(400)Ov(75)HBin1110101BDec71615160117OctHBO165OB: 1111 1111D: 128,64,32,16,8,4,2,1127v中央處理機中央處理機CPUCPU的組成的組成v80 x

3、8680 x86寄存器組寄存器組v存儲單元地址和內(nèi)容存儲單元地址和內(nèi)容v實模式存儲器尋址實模式存儲器尋址v保護模式寄存器尋址保護模式寄存器尋址第第10頁頁11 CPU CPU由三部分組成由三部分組成: : l 算術(shù)邏輯部件算術(shù)邏輯部件ALUALU:用來進行算術(shù)和邏輯運算。用來進行算術(shù)和邏輯運算。l 控制邏輯控制邏輯:負責(zé)對全機的控制工作。:負責(zé)對全機的控制工作。包括:取指、譯指、取操作數(shù),發(fā)執(zhí)行指令、包括:取指、譯指、取操作數(shù),發(fā)執(zhí)行指令、結(jié)果存入存儲器、對總線和結(jié)果存入存儲器、對總線和I/OI/O傳送的控制等。傳送的控制等。l 寄存器:寄存器:相當(dāng)于運算器中的一個存儲單元相當(dāng)于運算器中的一個

4、存儲單元n可見可見寄存器寄存器n不不可見可見寄存器寄存器參見p.2012v寄存器:寄存器:可見寄存器、不可見寄存器可見寄存器、不可見寄存器v可見寄存器可見寄存器:l通用寄存器通用寄存器l專用寄存器專用寄存器l段寄存器段寄存器1313參見p.21141415vAXAX:AccumulatorAccumulator,累加器,累加器n算術(shù)運算主要寄存器;在在I/OI/O時用時用AXAX與外部設(shè)備傳送信息與外部設(shè)備傳送信息vBXBX:BaseBasen在在計算存儲器地址時,作時,作16vCXCX:CountCount,計數(shù)器,計數(shù)器n所有寄存器中,只有此寄存器不能用作間接尋址!vDXDX:DataDa

5、taAXDXn在在I/OI/O操作時,操作時,DXDX可用來存放可用來存放I/OI/O的端口地址。的端口地址。n和組合存放雙字長數(shù),存放高字節(jié);17vSPSP:堆棧指針寄存器堆棧指針寄存器n指示棧頂?shù)钠频刂穠BPBP:基址指針寄存器基址指針寄存器n作為堆棧區(qū)中的基地址以便訪問的其他信息n上海大學(xué):上海大學(xué):A A樓、計算機大樓、材料大樓樓、計算機大樓、材料大樓 etc.etc.vDIDI:目的目的變址寄存器變址寄存器 vSISI:源變址寄存器源變址寄存器Stack Point Stack Point Base Base Point Point Destination IndexDestina

6、tion IndexSource Index Source Index 這些只能以16位為單位使用,存放操作數(shù)。18v在存儲器在存儲器中的特殊區(qū)域中的特殊區(qū)域nSP始終指向棧頂,總是n指示棧頂?shù)闹甘緱m數(shù)?;nBPBP可作為堆棧區(qū)中的一個可作為堆棧區(qū)中的一個地址以便訪問堆棧中的其地址以便訪問堆棧中的其他信息他信息n堆棧地址由高向低增長(象一個倒放的有底的桶)(象一個倒放的有底的桶)n存放斷點或暫存數(shù)據(jù)存放斷點或暫存數(shù)據(jù)字操作19F0 DE BC 9A 78 56 34 12 0060 0059 005d 低 地 址 高 地 址 棧 頂 SP 棧 底 BP 堆棧地址由高向低增長堆棧地址由高向低增長

7、20l 在運算過程中在運算過程中存放存放操作數(shù)操作數(shù)l 在在內(nèi)尋址時內(nèi)尋址時提供提供偏移地址偏移地址l SPSP、BPBP都可以都可以與與寄存器聯(lián)用寄存器聯(lián)用來來確定確定中的中的某單元的地址某單元的地址l 通常通常SISI、DIDI與與聯(lián)用聯(lián)用l用來確定數(shù)據(jù)中某一存儲單元的地址;用來確定數(shù)據(jù)中某一存儲單元的地址;l具備自動增減量的功能;具備自動增減量的功能;l 在串處理指令中,在串處理指令中,SISI和和DIDI作為隱含的變址寄存器作為隱含的變址寄存器lSISI和和DSDS聯(lián)用:達到在數(shù)據(jù)段中尋址的目的聯(lián)用:達到在數(shù)據(jù)段中尋址的目的lDIDI和和ESES聯(lián)用:達到在附加段中尋址的目的聯(lián)用:達到

8、在附加段中尋址的目的堆棧段堆棧段21v 8086/80888086/8088、8028680286:nIPIP、SPSP、FLAGS16FLAGS16位位v IPIP:指令指針寄存器指令指針寄存器 n存放存放代碼段代碼段中的中的偏移地址偏移地址,與,與CSCS寄存器聯(lián)用確定下一條指令寄存器聯(lián)用確定下一條指令的的物理地址物理地址,指向下一條指令的,指向下一條指令的首地址首地址。存儲器存儲器IP地址信息控制器控制器需要執(zhí)行的指令下一條指令首地址123422l SP:堆棧指針寄存器n 存放棧頂偏移地址,與堆棧段寄存器()聯(lián)用確定堆棧段中的棧頂?shù)刂贰 FLAGS:標志寄存器l 也稱程序狀態(tài)字寄存器,

9、Program Status Word, PSW 。n 存放條件碼標志、控制標志、系統(tǒng)標志SS23v條件碼標志:條件碼標志:、v控制標志位控制標志位:( (irection irection lag)lag)v系統(tǒng)標志系統(tǒng)標志位:位:nTFTF( (T Traprap F Flag)lag)、IFIF( (I Interruptnterrupt F Flag)lag)nIOPLIOPL( (I I/ /O PO Privilege rivilege L Levelevel): ):(8028680286) NT IFTF IOPL 8X86的標志寄存器:15151414131312121111

10、10109 98 87 76 65 54 43 32 21 10 024v控制標志位控制標志位 :DF DF ,DDirection irection F Flaglag 方向標志,用于串處理指令處理方向標志,用于串處理指令處理DFDF位為位為 時時,每次操作后使變址寄存器,每次操作后使變址寄存器和和量,量,使串處理從高地址向低地址方向使串處理從高地址向低地址方向處理:處理:當(dāng)當(dāng)DFDF位為位為 時時,則使,則使和和量,使串處理從低地量,使串處理從低地址向高地址方向處理:址向高地址方向處理:1 10 0高地址低地址低地址高地址25:中斷標志。:中斷標志。n當(dāng)當(dāng)IF=1IF=1時,允許中斷;時,

11、允許中斷;n IF=0IF=0時時,關(guān)閉中斷;關(guān)閉中斷;:陷井標志(跟蹤標志)。用于單步:陷井標志(跟蹤標志)。用于單步方式操作方式操作v開中斷:開中斷:允許允許CPUCPU響應(yīng)外設(shè)的中斷請求(響應(yīng)外設(shè)的中斷請求(= = ) v關(guān)中斷:關(guān)中斷:不允許不允許CPUCPU響應(yīng)外設(shè)的中斷請求響應(yīng)外設(shè)的中斷請求(= = )v兩條指令:兩條指令:設(shè)置中斷允許位(:設(shè)置中斷允許位(= = ):清除中斷允許位(:清除中斷允許位(= = ) 2627vOFOF:O Overflow verflow F Flag lag 溢出標志溢出標志n運算時如操作數(shù)超出機器表示范圍稱為運算時如操作數(shù)超出機器表示范圍稱為溢出

12、溢出。u此時此時OFOF位置位置1 1;否則置;否則置0 0。vSFSF:S Sign ign F Flag lag 符號標志符號標志n記錄運算結(jié)果的符號,結(jié)果為負時置記錄運算結(jié)果的符號,結(jié)果為負時置1 1,否則置,否則置0 0。vZFZF:Z Zero ero F Flag lag 零標志零標志n運算結(jié)果為運算結(jié)果為0 0,置,置1 1;否則置;否則置0 0。 NT OFDFIFTFSFZF AF PF CFIOPL1515141413131212111110109 98 87 76 65 54 43 32 21 10 028vAFAF:A Auxiliary uxiliary C Carr

13、y arry F Flag lag 輔助進位標志輔助進位標志n記錄運算時第記錄運算時第 位產(chǎn)生的進位值。位產(chǎn)生的進位值。n如第如第 位有進位時置位有進位時置1 1,否則置,否則置0 0。vPFPF:P Parity arity F Flag lag 奇偶標志奇偶標志n當(dāng)結(jié)果操作數(shù)中當(dāng)結(jié)果操作數(shù)中1 1為偶數(shù)時置為偶數(shù)時置1 1,否則置,否則置0 0。vCFCF:C Carry arry F Flag lag 進位標志進位標志n記錄從最高有效位產(chǎn)生的進位值記錄從最高有效位產(chǎn)生的進位值n最高有效位有進位時置最高有效位有進位時置1 1,否則置,否則置0 0。3 33 3的個數(shù)的個數(shù)151514141

14、3131212111110109 98 87 76 65 54 43 32 21 10 0 NT OFDFIFTFSFZF AF PF CFIOPL2929v條件標志位條件標志位CFCF、OFOFvCFCF位位:( (C Carry arry F Flag)lag)n表示無符號數(shù)的溢出表示無符號數(shù)的溢出 n有進位有進位CFCF=l=l;n無進位時無進位時CFCF=0=0lOFOF位:位:( (O Overflow verflow F Flag)lag)n表示帶符號數(shù)的溢出表示帶符號數(shù)的溢出n若兩個若兩個, 而而時時, ,OFOF=1=1;n否則否則OFOF=0=0。操作數(shù)的符號相同操作數(shù)的符號

15、相同結(jié)果的符號與之相反結(jié)果的符號與之相反l8 8位二進制數(shù):位二進制數(shù):為:為:02550255為為: v1616位二進制數(shù):位二進制數(shù):為:為:065535065535為:為: -32768+32767-32768+32767l無符號數(shù)無符號數(shù)l帶符號數(shù)帶符號數(shù)n無符號數(shù)無符號數(shù)n帶符號數(shù)帶符號數(shù)30v存儲單元的內(nèi)容:存儲單元的內(nèi)容:一個存儲單元存一個存儲單元存放的信息放的信息(0004) = 1234H (0004) = 1234H v字存放方式:字存放方式:n低位字節(jié)放低地址,高位字節(jié)放高地址。低位字節(jié)放低地址,高位字節(jié)放高地址。n字單元的地址以其低地址表示字單元的地址以其低地址表示v同

16、一個地址既可看作同一個地址既可看作字節(jié)單元地址字節(jié)單元地址,又可看作又可看作字單元地址。字單元地址。地址內(nèi)容31v雙字單元數(shù)據(jù)存放:雙字單元數(shù)據(jù)存放:與字單元與字單元類似類似n低位字存入低地址區(qū),高位字存入高地址區(qū)。低位字存入低地址區(qū),高位字存入高地址區(qū)。n地址由其最低字節(jié)的地址指定地址由其最低字節(jié)的地址指定(0004)=12345678H(0004)=12345678H訪問存儲器都是以字為單位進行的,也就是說,以訪問存儲器。參見p.2632v如果用如果用X X表示某存儲單元的地址,則表示某存儲單元的地址,則X X單元的單元的內(nèi)容可以表示為內(nèi)容可以表示為(X)(X)v假如假如X X單元中存放著

17、單元中存放著Y Y,而,而Y Y又是一個地址,則又是一個地址,則可用可用(Y)=(X)(Y)=(X)來表示來表示Y Y單元的內(nèi)容單元的內(nèi)容33v舉例:舉例:(0004H)=5678H(0004H)=5678H而而(5678H)=2F1EH(5678H)=2F1EH,也可記作也可記作 (0004H)=2F1EH(0004H)=2F1EH參見p.2634實模式實模式下最大尋址能力下最大尋址能力 MBMBv8086/80888086/8088地址總線寬為地址總線寬為,即,即有有條地址條地址線。線。1 120202020直接尋址能力為 MB,即為該機的最大存儲容量。l 其他處理器:其他處理器:n在在實

18、模式下只能訪問前實模式下只能訪問前 MB MB 的存儲器地址的存儲器地址11 135分分,分成若干個不超過,分成若干個不超過單元的段單元的段。64K64K16位段基址位段基址 000016位偏移地址位偏移地址 20位物理地址位物理地址 +0000015015019151136v物理地址的構(gòu)成:物理地址的構(gòu)成:n2020位物理地址由位物理地址由1616位段地址和位段地址和1616位偏移地址組成位偏移地址組成v段地址:段地址:必須是必須是小段首地址小段首地址,其低,其低4 4位一定是位一定是0 0。n只取段起始地址的高只取段起始地址的高1616位值位值v偏移地址:偏移地址:指段內(nèi)相對于段起始地址的

19、偏移值指段內(nèi)相對于段起始地址的偏移值37公式:公式:物理地址物理地址=16d=16d 段地址段地址+ +偏移地址偏移地址16位段基址位段基址 000016位偏移地址位偏移地址 20位物理地址位物理地址 +00000150150191511將段地址左移 位后加上偏移地址值就是物理地址4(在十六進制中表現(xiàn)為將段地址左移 位)1383839v8086CPU8086CPU同時可管理四個段同時可管理四個段nCSCS: :程序程序nDSDS: :數(shù)據(jù)數(shù)據(jù)nESES: :附加數(shù)據(jù)附加數(shù)據(jù)nSSSS: :堆棧堆棧注意:這里都是之間發(fā)生關(guān)系!40v端口端口(port)(port)地址:地址:又稱又稱端口號端口號

20、n連接主機和外設(shè)寄存器的接口連接主機和外設(shè)寄存器的接口n獨立于內(nèi)存儲器的獨立于內(nèi)存儲器的I/OI/O地址空間地址空間v8086/80888086/8088機:機:I/OI/O地址空間可達地址空間可達K Kl端口地址的范圍端口地址的范圍是是0000 0000 FFFFHFFFFHl占用占用2 2個字節(jié)個字節(jié)l端口可為端口可為 位或位或位位l端口端口操作常借助操作常借助DXDXv8038680386及后繼:及后繼:端口可有端口可有3232位,位, 但但I/OI/O地址空間不超過地址空間不超過64KB64KB64648 816160000000100020003001000111000FFFEFFF

21、Fv數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令v 算術(shù)運算指令算術(shù)運算指令- -加法、減法、加法、減法、乘法、除法;乘法、除法;v 邏輯運算和移位指令;邏輯運算和移位指令;v 控制轉(zhuǎn)移指令;控制轉(zhuǎn)移指令;v 串處理指令;串處理指令;v 處理機控制指令。處理機控制指令。第第41頁頁指指令令類類型型助助記記符符通通用用傳傳送送MOV, PUSH, POP, XCHG, XLAT地地址址傳傳送送LEA, LDS, LES標標志志傳傳送送PUSHF, POPF, LAHF, SAHF數(shù)數(shù)據(jù)據(jù)傳傳送送輸輸入入輸輸出出IN, OUT加加法法ADD, ADC, INC, AAA, DAA減減法法SUB, SBB, DEC,

22、NEG, CMP, AAS, DAS乘乘法法MUL, IMUL, AAM除除法法DIV, IDIV, AAD算算術(shù)術(shù)運運算算符符號號擴擴展展CBW, CWD邏邏輯輯運運算算AND, TEST, OR, XOR, NOT移移位位SHL, SAL, SHR, SAR邏邏輯輯操操作作循循環(huán)環(huán)移移位位ROL, ROR, RCL, RCR參考:指令助記符表指指令令類類型型助助記記符符串串操操作作MOVS,CMPS,SCAS,LODS,STOS串串處處理理重重復(fù)復(fù)控控制制REP,REPE/REPZ,REPNE/REPNZ無無條條件件轉(zhuǎn)轉(zhuǎn)移移JMP條條件件轉(zhuǎn)轉(zhuǎn)移移JE/JZ, JNE/JNZ, JS, JN

23、S, JO, JNOJP, JNP, JC, JNC, JCXZJA/JNBE, JAE/JNB, JB/JNAE, JBE/JNAJG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG循循環(huán)環(huán)控控制制LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ過過程程調(diào)調(diào)用用CALL, RET控控制制轉(zhuǎn)轉(zhuǎn)移移中中斷斷指指令令I(lǐng)NT, INTO, IRET處處理理機機控控制制CLC, STC, CMC,CLD, STD, CLI, STINOP, HLT, WAIT, ESC, LOCK4444v指令分類:(按操作數(shù)分)指令分類:(按操作數(shù)分)n單操作數(shù)單操作數(shù)指令指令:(

24、(一地址指令一地址指令) )操作碼操作碼 目的操作數(shù)目的操作數(shù)(OPR DEST)n如,加如,加1 1操作:操作: n雙操作數(shù)雙操作數(shù)指令指令:( (二地址指令二地址指令) ) OPR OPR DESTDEST, , SRCSRC 分為分為源操作數(shù)源操作數(shù)和和目的操作數(shù)目的操作數(shù),運算結(jié)果存放到,運算結(jié)果存放到目的操作數(shù)的地址之中。目的操作數(shù)的地址之中。n如,加法操作:如,加法操作: , , 傳送傳送指令:指令:, ,4545v指令分類:(按操作數(shù)分)指令分類:(按操作數(shù)分)n三三操作數(shù)操作數(shù)指令指令: OPR DEST,SRC,SRC1 除給出兩個參加運算的操作數(shù)外,還給出運算除給出兩個參加

25、運算的操作數(shù)外,還給出運算結(jié)果存放地址。結(jié)果存放地址。n無操作數(shù):無操作數(shù): OPR (隱含操作數(shù))(隱含操作數(shù))n如,字節(jié)如,字節(jié)轉(zhuǎn)換為字轉(zhuǎn)換為字 46468086/802868086/80286系列系列l(wèi) 立即尋址立即尋址 l 寄存器尋址寄存器尋址 l 直接尋址直接尋址 l 寄存器間接尋址寄存器間接尋址l 寄存器相對尋址寄存器相對尋址l 基址變址尋址基址變址尋址l 相對基址變址尋址相對基址變址尋址 指令中指定操作數(shù)或操作數(shù)存放位置的方法稱為。有有七種基本的尋址方式:七種基本的尋址方式:段寄存器4848l直接直接存放在指令存放在指令中,中,緊跟緊跟在操作碼之后,作為在操作碼之后,作為指令一部

26、指令一部分分存放在代碼段存放在代碼段里的里的。16位的立即數(shù),高位位的立即數(shù),高位放在高地址中,低位放在高地址中,低位放在低地址中放在低地址中。32位的立即數(shù),高位位的立即數(shù),高位放在高地址中,低位放在高地址中,低位放在低地址中。放在低地址中。4949用來表示用來表示l用于給寄存器用于給寄存器,且僅用作源操作數(shù)字段,不能用,且僅用作源操作數(shù)字段,不能用于目的操作數(shù)。于目的操作數(shù)。如:如: ,5 =(AL)=05H 5 =(AL)=05H ,3064H =(AX)=3064H3064H =(AX)=3064H 即即 (AX)=(AX)=(AHAH,ALAL)= =(30H30H,64H 64H

27、) ,12345678H12345678H =(EAX)=12345678H =(EAX)=12345678H5050下列指令錯下列指令錯MOV AHMOV AH,500500MOV 50MOV 50,ALAL不能直接給不能直接給和和賦予立即賦予立即數(shù)!數(shù)!下面下面的指令是錯誤的:的指令是錯誤的:MOV DS, 1250HMOV DS, 1250H5151v指令指定寄存器號指令指定寄存器號/ /名稱,名稱,操作數(shù)在寄存器操作數(shù)在寄存器中。中。v對對1616位操作數(shù):位操作數(shù):寄存器用寄存器用、和和。v對對8 8位操作數(shù):位操作數(shù):寄存器用寄存器用、和和。v對對3232位操作數(shù):位操作數(shù):寄存器

28、用寄存器用、和和寄存器號操作數(shù)從寄存器取寄存器5252v設(shè)設(shè)(AX)=3064H(AX)=3064H,(BX)=1234H(BX)=1234H,執(zhí)行:執(zhí)行:MOV MOV AXAX,BXBX =(=(AX)=1234HAX)=1234H,(BX)(BX)保持保持不變。不變。v設(shè)設(shè)(ECX)=0123454H(ECX)=0123454H,(EBX)=12349876H(EBX)=12349876H,執(zhí)執(zhí)行:行: MOV MOV ECXECX,EBXEBX =(=(ECX)=12349876HECX)=12349876H,(EBX)(EBX)保持保持不變。不變。53531.1. 寄存器尋址時要弄清

29、針對哪個寄存器而言寄存器尋址時要弄清針對哪個寄存器而言 源、目的寄存器分別是什么?源、目的寄存器分別是什么?vMOV ALMOV AL,BX BX 對嗎?對嗎?vMOV AXMOV AX,BH BH 對嗎?對嗎?vMOV ALMOV AL,AH AH 對嗎?對嗎?2. 源寄存器和目的寄存器的源寄存器和目的寄存器的。v有效地址的計算:有效地址的計算:=基址+(變址比例因子)+位移量n除比例因子外是固定值外,其他都可正可負。n對于基址、變址以及位移量,如未給出其值,則默認為0。5454P.385555如右圖,如右圖, ( (DS)=3000H DS)=3000H ,執(zhí)行:,執(zhí)行:MOV MOV A

30、XAX,2000H2000H ; ;位移量的值位移量的值結(jié)果為:結(jié)果為:( (AX)=3050HAX)=3050H這里以實模式計算物理地址。直接尋址方式適用于處理單個變量直接尋址方式適用于處理單個變量5656v以下兩指令等效以下兩指令等效MOV AXMOV AX,VALUE VALUE ; ;用符號地址代替數(shù)值地址用符號地址代替數(shù)值地址 ;VALUE ;VALUE存放操作單元的符號地址存放操作單元的符號地址MOV AXMOV AX,VALUEVALUE v當(dāng)當(dāng)VALUEVALUE在附加段中,應(yīng)指定段跨越前綴:在附加段中,應(yīng)指定段跨越前綴: MOV AXMOV AX,ES:VALUEES:VAL

31、UE或或 MOV AXMOV AX,ES:VALUEES:VALUE規(guī)定:雙操作數(shù)指令除規(guī)定:雙操作數(shù)指令除外只能有外只能有一個操一個操作數(shù)使用寄存器方式作數(shù)使用寄存器方式。(不能兩個都是內(nèi)存單元)(不能兩個都是內(nèi)存單元)MOV MOV VAL1VAL1,VAL2 VAL2 ; ; 錯錯 5757v有效地址存放在寄存器有效地址存放在寄存器中中n指令指令中給出中給出寄存器名稱寄存器名稱v所需的操作數(shù)在存儲器中所需的操作數(shù)在存儲器中僅包含基址或變址寄存器僅包含基址或變址寄存器內(nèi)容的內(nèi)容的一一種種成分成分n在在1616位尋址時可用寄存器為:位尋址時可用寄存器為:BXBX、BPBP、SISI和和DID

32、In在在3232位位尋址時可用寄存器為尋址時可用寄存器為:EAXEAX、EBXEBX、ECXECX、EDXEDX、ESPESP、EBPEBP、ESIESI和和EDIEDIEA操作數(shù)段基地址+存儲器寄存器基址或變址寄存器指令5858如果如果(DS)=2000H(DS)=2000H,(BX)=1000H(BX)=1000H,執(zhí)行,執(zhí)行MOV AXMOV AX,BXBX則因則因 物理地址物理地址=20000+1000=21000H=20000+1000=21000H,結(jié)果為結(jié)果為: : (AX)=50A0H (AX)=50A0HA050000010002000H:也可指定跨越前綴來取得其他段的數(shù)據(jù)M

33、OV AX,ES:BX ;用用ES代替代替DS進行進行“位移位移”5959v 1616位寄存器:指令如位寄存器:指令如 MOV AXMOV AX,SISIl 指令中指定的指令中指定的寄存器寄存器BXBX、SISI、DIDI,則操作數(shù)在,則操作數(shù)在現(xiàn)行數(shù)據(jù)段中,用現(xiàn)行數(shù)據(jù)段中,用段寄存器段寄存器DSDS , 物理地址物理地址=16d=16d(DS)(DS)十十(BX)(BX)或或 物理地址物理地址=16d=16d(DS)(DS)十十(SI)(SI)或或 物理地址物理地址=16d=16d(DS)(DS)十十(DI)(DI)l 指令中指定指令中指定,操作數(shù)在堆棧段中,用,操作數(shù)在堆棧段中,用段寄存器

34、段寄存器,物理地址物理地址=16d=16d ( () )十十( () )6060是一個基址或變址寄存器的內(nèi)是一個基址或變址寄存器的內(nèi)容和指令中指定容和指令中指定的的之之和和n有效地址由有效地址由兩種兩種成分組成成分組成v所需的操作數(shù)在存儲器中所需的操作數(shù)在存儲器中地址操作數(shù)段基地址+存儲器存儲器寄存器寄存器+EA位移量基址或變址寄存器指指 令令6161v下列兩指令等價:下列兩指令等價:MOV AXMOV AX,COUNTSICOUNTSIMOV AXMOV AX,COUNT+SICOUNT+SI ; ;這里這里COUNTCOUNT為為1616位位移量的符號地址位位移量的符號地址 。 設(shè)設(shè)COU

35、NTCOUNT= 3000H= 3000H, ( (DS)=3000HDS)=3000H,( (SI)=2000HSI)=2000H,對,對指令指令MOV AXMOV AX,COUNTSICOUNTSIn源操作數(shù)物理源操作數(shù)物理地址地址=30000+3000+2000 =30000+3000+2000 =35000H=35000Hn執(zhí)行結(jié)果是:執(zhí)行結(jié)果是: (AX)=1234H(AX)=1234H(AX)=(DS)*16d+(COUNT+(SI)62628086/80888086/8088:v物理地址物理地址= 16d= 16d ( ()+()+() ) + + 8 8位位移量位位移量或或(

36、() ) 或或1616位位移量位位移量或或( () )v物理物理地址地址= 16d= 16d( ()+()+() ) + 8 + 8位位移量位位移量或或1616位位移量位位移量v物理物理地址地址= 16d= 16d( ()+()+() ) +8+8位位移量位位移量或或1616位位移量位位移量6363; ;這里這里TABLETABLE為為3232位位位移量的位移量的符號地址符號地址,ESI,ESI內(nèi)容指向內(nèi)容指向表格中的一項表格中的一項 。v用于表格處理,用于表格處理,可設(shè)置為位移量。可設(shè)置為位移量。n利用修改基址或變址寄存器內(nèi)容取得表格中的值利用修改基址或變址寄存器內(nèi)容取得表格中的值MOV D

37、LMOV DL,ES:STRINGSIES:STRINGSIl 使用段跨越前綴使用段跨越前綴6464是一個是一個和一個和一個的內(nèi)容之的內(nèi)容之n有效地址由有效地址由兩種兩種成分成分組成組成n兩個寄存器均由段與寄存器間的默認關(guān)系兩個寄存器均由段與寄存器間的默認關(guān)系確定確定v 所需的操作數(shù)在存儲器所需的操作數(shù)在存儲器中中6565基址值操作數(shù)段基地址+存儲器存儲器基址寄存器基址寄存器+EA變址寄存器基址寄存器指指 令令變址值變寄存器變寄存器6666凡使用,,和時,默認段為段。其他寄存器多數(shù)默認段為寄存器。6767v 例例3.103.10: MOV AXMOV AX,BXDI BXDI (也可寫成:(也

38、可寫成:MOV AXMOV AX,BX+DI) BX+DI) 如,如,(DS)=2100H, (BX)=0158H, (DI)=10A5H(DS)=2100H, (BX)=0158H, (DI)=10A5H則,則,EA=0158+10A5=11FDHEA=0158+10A5=11FDH 物理地址物理地址=21000+11FD=221FDH=21000+11FD=221FDH執(zhí)行結(jié)果:執(zhí)行結(jié)果:(AX)=1234H(AX)=1234H6868MOV AX,BXDI (DS)=2100H, (BX)=0158H, (DI)=10A5H6969是一個是一個和一個和一個的內(nèi)容和一個的內(nèi)容和一個之之和和

39、n有效地址有效地址由由三種三種成分成分組成組成7070基址值操作數(shù)段基地址+存儲器存儲器基址寄存器基址寄存器+EA指指 令令變址值變址寄存器變址寄存器變址寄存器基址寄存器位移量7171v8086/8088:當(dāng)基址寄存器為當(dāng)基址寄存器為時,使用時,使用為段寄存器為段寄存器當(dāng)基址寄存器為當(dāng)基址寄存器為時,使用時,使用為段寄存器為段寄存器物理地址物理地址=16d (DS)+(BX)+ (SI) + 8位位移量位位移量或或(DI) 或或16位位移量位位移量或物理地址或物理地址=16d (SS)+(BP)+ (SI) + 8位位移量位位移量或或(DI) 或或16位位移量位位移量 7272設(shè)設(shè)(DS)=3

40、000H(DS)=3000H,(BX)=2000H(BX)=2000H,(SI)=1000H, (SI)=1000H, MASK=0250H, MASK=0250H, 例:MOV AH, 80HMOV ECX, 12345678HMOV AX, 4576H ;以上指令中的第二操作數(shù)第二操作數(shù)都是注:立即數(shù)不能作為指令中的第一操作數(shù) 例:MOV EAX, EBX ADD AX, DX ADD AX, 1234H 例:MOV BX, 1234H ; ;缺省使用段寄存器DS MOV ES:1000H, AX ;指定用段寄存器ES 例:MOV BX, DI ;EA=(DI), ;PA=(DS)*16+

41、EA若用、和等之一來指定,則其缺省的段寄存器為;若有效地址用來指定,則其缺省的段寄存器為 (即:)。 指令中給出的8位/16位偏移量用補碼表示。計算時,若偏移量是8位,則進行符號擴展成16位。當(dāng)所得的有效地址超過0FFFFH,則取其64K的模。例:MOV BX, SI+100H ;=(SI)+100H;=(DS)*16+例:例:MOV BX, BX+SI 或?qū)懗桑夯驅(qū)懗桑篗OV BX, BXSI例:MOV AX, BX+SI+200H或?qū)懗桑篗OV AX, 200HBXSI ;=(BX)+(SI)+200H; =(DS)*16+ 若有效地址用、和等之一來指定,則其缺省的段寄存器為;若有效地址用

42、來指定,則其缺省的段寄存器為。 ; =(BX)+(SI) ; =(DS)*16+ 1.1. 段內(nèi)直接尋址段內(nèi)直接尋址2.2. 段內(nèi)間接尋址段內(nèi)間接尋址3.3. 段間直接尋址段間直接尋址 4.4. 段間間接尋址段間間接尋址注:這注:這幾組指令主要是關(guān)于指令的跳幾組指令主要是關(guān)于指令的跳轉(zhuǎn),變動的轉(zhuǎn),變動的是是和和 確定一條指令的地址確定一條指令的地址 v轉(zhuǎn)移分類轉(zhuǎn)移分類: :條件轉(zhuǎn)移、無條件轉(zhuǎn)移條件轉(zhuǎn)移、無條件轉(zhuǎn)移:均為均為段內(nèi)轉(zhuǎn)移段內(nèi)轉(zhuǎn)移;:段內(nèi)與段間轉(zhuǎn)移:段內(nèi)與段間轉(zhuǎn)移都可以都可以;:同一代碼段范圍內(nèi)轉(zhuǎn)移,同一代碼段范圍內(nèi)轉(zhuǎn)移,只需改變只需改變內(nèi)容,內(nèi)容,不變。不變。:轉(zhuǎn)移到另一代碼段去執(zhí)行

43、程序,轉(zhuǎn)移到另一代碼段去執(zhí)行程序, 、均變。均變?;趩蝹€標志位的條件轉(zhuǎn)移指令基于單個標志位的條件轉(zhuǎn)移指令(Jumps Based on Special Arithmetic) 指令格式指令格式轉(zhuǎn)移條件轉(zhuǎn)移條件功能描述功能描述JE/JZ oprJE/JZ oprZF=1ZF=1Jump Equal or Jump ZeroJump Equal or Jump ZeroJNE/JNZ oprJNE/JNZ oprZF=0ZF=0Jump Not Equal or Jump Not ZeroJump Not Equal or Jump Not ZeroJC oprJC oprCF=1CF=1Jum

44、p CarryJump CarryJNC oprJNC oprCF=0CF=0Jump Not CarryJump Not CarryJO oprJO oprOF=1OF=1Jump OverflowJump OverflowJNO oprJNO oprOF=0OF=0Jump Not OverflowJump Not OverflowJP/JPE oprJP/JPE oprPF=1PF=1Jump Parity or Jump Parity EvenJump Parity or Jump Parity EvenJNP/JPO oprJNP/JPO oprPF=0PF=0Jump Not Pa

45、rity or Jump Parity OddJump Not Parity or Jump Parity OddJS oprJS oprSF=1SF=1Jump Sign (negative)Jump Sign (negative)JNS oprJNS oprSF=0SF=0Jump Not Sign (positive)Jump Not Sign (positive)無符號數(shù)的條件轉(zhuǎn)移指令無符號數(shù)的條件轉(zhuǎn)移指令(Jumps Based on Unsigned/Logic Data) 指令格式檢測的轉(zhuǎn)移條件功能描述JA/JNBE oprCF=0 and ZF=0CF=0 and ZF=0Ju

46、mp Above or Jump Not Below or EqualJAE/JNB oprCF=0CF=0Jump Above or Equal or Jump Not BelowJB/JNAE oprCF=1CF=1Jump Below or Jump Not Above or EqualJBE/JNA oprCF=1 or ZF=1CF=1 or ZF=1Jump Below or Equal or Jump Not Above指令格式檢測的轉(zhuǎn)移條件功能描述JG/JNLE oprZF=0 and SF=OFZF=0 and SF=OFJump Greater or Jump Not Le

47、ss or EqualJGE/JNL oprSF=OFSF=OFJump Greater or Equal or Jump Not LessJL/JNGE oprSFOFSFOFJump Less or Jump Not Greater or EqualJLE/JNG oprZF=1 or SFOFZF=1 or SFOFJump Less or Equal or Jump Not Greater有符號數(shù)的條件轉(zhuǎn)移指令(Jumps Based on Signed/Arithmetic Data) 基于計數(shù)的條件轉(zhuǎn)移指令JCXZ/JECXZ(Jump if CX/ECX is Zero) 指令格

48、式:JCXZ label; 若CX = 0,則轉(zhuǎn)移到label說明: label相對位移量必須在-128127之間,即只能短轉(zhuǎn)移,所有80 x86CPU都一樣。1)1) 段內(nèi)直接短轉(zhuǎn)移(段內(nèi)直接短轉(zhuǎn)移():位移量):位移量8 8位位n加操作符加操作符n只能用作段只能用作段內(nèi)內(nèi)直接尋址的直接尋址的2)2) 段內(nèi)直接近轉(zhuǎn)移(段內(nèi)直接近轉(zhuǎn)移():位移量):位移量1616位位n加操作符加操作符 可缺省可缺省。n通常,通常,如當(dāng)前如當(dāng)前( ()=3000H, NEW_ADDR=3050H)=3000H, NEW_ADDR=3050H則經(jīng)編譯后確定則經(jīng)編譯后確定=50H,指令中給出轉(zhuǎn)向的,指令中給出轉(zhuǎn)向的

49、=3050H短跳轉(zhuǎn)短跳轉(zhuǎn)只能只能使用使用段內(nèi)段內(nèi)直接尋址的直接尋址的 位位如當(dāng)前如當(dāng)前( ()=3000H, NEW_ADDR=3050H)=3000H, NEW_ADDR=3050H則經(jīng)編譯后確定則經(jīng)編譯后確定=50H,指令中給出轉(zhuǎn)向的,指令中給出轉(zhuǎn)向的=3050H短跳轉(zhuǎn)短跳轉(zhuǎn)“JMP SHORT 標號標號”功能:功能:(IP)=(IP)+例:例: NEW_ADDRNEW_ADDRv位移量計算同前位移量計算同前n注:注:80386-80386-代碼段的偏移地址放在代碼段的偏移地址放在EIPEIP中中表示在同一表示在同一轉(zhuǎn)移,位移量在:轉(zhuǎn)移,位移量在:-3276832767-327683276

50、7字節(jié)范圍字節(jié)范圍n這種尋址方式對于條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令這種尋址方式對于條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令都適用。l 近跳轉(zhuǎn)中,近跳轉(zhuǎn)中,可缺省。可缺省。例:例: NEW_ADDRNEW_ADDRv位移量計算同前位移量計算同前n注:注:80386-80386-代碼段的偏移地址放在代碼段的偏移地址放在EIPEIP中中表示在同一表示在同一轉(zhuǎn)移,位移量在:轉(zhuǎn)移,位移量在:-3276832767-3276832767字節(jié)范圍字節(jié)范圍n這種尋址方式對于條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令這種尋址方式對于條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令都適用。l 近跳轉(zhuǎn)中,近跳轉(zhuǎn)中,可缺省??扇笔??!癑MP NEAR PTR 標號標號”功能:功能

51、:(IP)=(IP)+ 轉(zhuǎn)向轉(zhuǎn)向的的是是一個一個或是一或是一個個的內(nèi)容,用該值來取代的內(nèi)容,用該值來取代寄存器的寄存器的內(nèi)容。內(nèi)容。段內(nèi)間接尋址轉(zhuǎn)移指令:段內(nèi)間接尋址轉(zhuǎn)移指令:BXBXn BP+TABLE BP+TABLE 注:注:說明所取得的轉(zhuǎn)向地址是一個說明所取得的轉(zhuǎn)向地址是一個(1616位)位)有效地址。有效地址。WORD PTRWORD PTR直接把求得的轉(zhuǎn)向直接把求得的轉(zhuǎn)向送到送到寄存器寄存器 計算公式計算公式: : 物理地址物理地址=16d=16d (DS)+EA(DS)+EA例 : 假 設(shè)例 : 假 設(shè) ( D S ) =( D S ) = 2 0 0 0 H2 0 0 0 H

52、, ( ( B X ) = 1 2 5 6 HB X ) = 1 2 5 6 H ,(SI)=528FH(SI)=528FH; ;位移量位移量TABLETABLE的內(nèi)容的內(nèi)容= 20A1H= 20A1H,(232F7H)=3280H(232F7H)=3280H,(264E5H)=2450H(264E5H)=2450H,對指令,對指令 BX BX ;( ;(IPIP)=1256H)=1256H TABLE+BX TABLE+BX; ;( (IP)=3280HIP)=3280H BXSI BXSI;(IP)=2450H;(IP)=2450H TABLE TABLE ;(IP)=20A1H;(IP)

53、=20A1H 求各指令轉(zhuǎn)向的求各指令轉(zhuǎn)向的(IP)=(IP)=?WORD PTRWORD PTRSHORTSHORTv目標地址在指令中目標地址在指令中v指令中直接提供了轉(zhuǎn)向指令中直接提供了轉(zhuǎn)向和和2828偏移地址段地址IP寄存器CS寄存器指令l 例:例:JMP JMP NEW_ROUTINENEW_ROUTINEnNEW_ROUTINE NEW_ROUTINE 為轉(zhuǎn)向的符號地址為轉(zhuǎn)向的符號地址表示表示FAR PTR FAR PTR nFAR PTRFAR PTR偏移地址取代偏移地址取代寄存器內(nèi)容寄存器內(nèi)容段地址取代段地址取代寄存器內(nèi)容寄存器內(nèi)容v段間轉(zhuǎn)移,段間轉(zhuǎn)移,和和都要更新,都要更新,v新

54、新和新和新由指令操作碼之后的連續(xù)兩個由指令操作碼之后的連續(xù)兩個字字提供提供OP用段間轉(zhuǎn)移的操作符用段間轉(zhuǎn)移的操作符表示:轉(zhuǎn)移表示:轉(zhuǎn)移距離超過距離超過32K字節(jié),字節(jié),或在或在不同不同段之間轉(zhuǎn)移。段之間轉(zhuǎn)移。FAR PTRl FARv目標地址存放在存儲器中目標地址存放在存儲器中v指令形式:指令形式:SISI arrayBX+SIarrayBX+SI INTERS+BXINTERS+BX其中,其中,INTERS+BX說明尋址方式為直接變說明尋址方式為直接變址尋址方式,址尋址方式,為雙字操作符,為雙字操作符,說明轉(zhuǎn)向地址需取雙字為段間轉(zhuǎn)移指令。說明轉(zhuǎn)向地址需取雙字為段間轉(zhuǎn)移指令。v用存儲器中的第一

55、個字的內(nèi)容取代用存儲器中的第一個字的內(nèi)容取代( () )v用存儲器中的第二個字的內(nèi)容取代用存儲器中的第二個字的內(nèi)容取代( () )偏移地址段地址IP寄存器CS寄存器存儲器求物理地址求物理地址用存儲器中兩個相繼用存儲器中兩個相繼的內(nèi)容取代的內(nèi)容取代和和寄存器中的原始內(nèi)容,以達到轉(zhuǎn)移的目的。寄存器中的原始內(nèi)容,以達到轉(zhuǎn)移的目的。v段間間接尋址用雙字操作符段間間接尋址用雙字操作符,段間轉(zhuǎn)移轉(zhuǎn)向地址需取段間轉(zhuǎn)移轉(zhuǎn)向地址需取v例:例: TABLESITABLESIv例:例: ES:TABLESIES:TABLESIv例:例: SPSPv例:例: ARRAYARRAYv注意:注意:與與 ARRAYARRA

56、Y的區(qū)別的區(qū)別 Address Address ; ;無條件轉(zhuǎn)移無條件轉(zhuǎn)移 ADDR1 ADDR1; ;段內(nèi)直接尋址段內(nèi)直接尋址;跳;跳8 8位位 ADDR2ADDR2 ; ;段內(nèi)直接尋址段內(nèi)直接尋址; ;跳跳1616位位 TABLE TABLE ; ;段內(nèi)間接尋址段內(nèi)間接尋址 ADDR3 ADDR3 ; ;段間段間直接尋址直接尋址SHORTSHORTNEAR PTR NEAR PTR FAR PTR FAR PTR AGAIN+AGAIN+ ; ;段間間接尋址段間間接尋址 ; ;段內(nèi)間接尋址段內(nèi)間接尋址 + + ; ;段內(nèi)間接尋址段內(nèi)間接尋址DWORD PTR DWORD PTR 指令系統(tǒng)可

57、分為指令系統(tǒng)可分為6 6組組: :1.1. 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令2.2. 算術(shù)指令算術(shù)指令- -乘法與除法乘法與除法3.3. 邏輯指令邏輯指令4.4. 控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令5.5. 串處理指令串處理指令6.6. 處理機控制指令處理機控制指令1.1. 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令2.2. 累加器專用傳送指令累加器專用傳送指令 3.3. 地址傳送指令地址傳送指令 4.4. 標志寄存器傳送指令標志寄存器傳送指令 5.5. 類型轉(zhuǎn)換指令類型轉(zhuǎn)換指令一、通用數(shù)據(jù)傳送指令一、通用數(shù)據(jù)傳送指令1. (來自Move ):傳送指令 一般形式:MOV dst, src; (dst) (src),將源操

58、作數(shù)src復(fù)制到目的操作 數(shù)dst,src不變。說明:兩個操作數(shù)的數(shù)據(jù)類型要相同,要同為8位、16位或32位;兩個操作數(shù)中必須有一個寄存器,但不能同時為;代碼段寄存器CS不能為,但可作為源操作數(shù);指令指針I(yè)P不能作為MOV指令的操作數(shù);立即數(shù)不能作為;l立即數(shù)不能直接傳給;兩個操作數(shù)不能同時為對標志位無影響8 8位通用寄存器位通用寄存器8 8個個: ALAL、AHAH、BLBL、BHBH、CLCL、CHCH、DLDL、DHDH。1616位通用寄存器位通用寄存器8 8個個:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、BPBP、SPSP。3232位通用寄存器位通用寄存器8 8個個:

59、EAXEAX、EBXEBX、ECXECX、EDXEDX、ESIESI、EDIEDI、EBPEBP、ESPESP。數(shù)據(jù)傳送指令 100101vMOV DSMOV DS,32543D32543DvMOV DSMOV DS,DATA DATA ; ;這里的這里的DATADATA為段名為段名 ; ; 注意:如注意:如DATADATA為變量名或標號地址,則指為變量名或標號地址,則指令令 MOV DSMOV DS,DATADATA是正確的是正確的vMOV CSMOV CS,AXAXvMOV SSMOV SS,DSDSvMOV SIMOV SI,TABLE TABLE v匯編指令中,匯編指令中,方括號方括號

60、 的含義的含義 :n表示一種間接間接的取操作數(shù)方式n寄存器能加方括號的只有4個:nSI, DI, BX, BPn常數(shù)、變量名也可以加方括號,比如 020Hn常數(shù)加方括號表示地址,而不加,則表示立即數(shù)。n但,變量名是否加方括號情況一樣,都是間接尋址。102102v如:如:ADD AL , SI n與AL中內(nèi)容相加的數(shù),不是SI寄存器的內(nèi)容,而是以SI的內(nèi)容作為的內(nèi)存操作數(shù)。103103v方括號方括號內(nèi),內(nèi),可以不同表達方式??梢圆煌磉_方式。n SI 是 nSI是nSI+2是n又稱,也可以寫成2SI形式。 nBX+SI是n也可寫成BXSI nBX+SI+20H是n可以寫成20HBXSI之類的形式

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論