版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 串的基本概念 順序存放在內(nèi)存中的一組數(shù)據(jù),稱為串。 用串的首(末)地址、元素類型、串的長度表示。3.3.4 串處理指令 MOVS 串傳送指令 STOS 存入串指令 LODS從串取指令 CMPS串比較指令 SCAS串掃描指令 INS串輸入指令 OUTS串輸出指令配合使用的前綴有: REP 重復(fù) REPE/REPZ 相等/為零則重復(fù) REPNE/REPNZ 不相等/不為零則重復(fù)1、與REP配合工作的 MOVS/STOS/LODS/INS/OUTS 格式: REP MOVS / STOS / LODS /INS/OUTS 執(zhí)行操作:(1) 如(CX)= 0則退出REP,否則轉(zhuǎn)(2)(2) (CX)
2、 (CX) -1 (3) 執(zhí)行MOVS / STOS / LODS/INS/OUTS(4) 重復(fù)(1) (3)MOVS 串傳送指令格式:MOVS DST, SRC 須指明傳送的是字節(jié)、字、雙字MOVSB (字節(jié))MOVSW (字)MOVSD (雙字)(386后)例:MOVS ES: BYTE PTR DI, DS: SI 低地址高地址DSES(SI) (DI)執(zhí)行操作:(1) (DI) (SI) (2) 字節(jié)操作:(SI)(SI)1, (DI)(DI)1 字操作: (SI)(SI)2, (DI)(DI)2 方向標(biāo)志DF=0時用 +,DF=1時用 - 。執(zhí)行REP MOVS之前,應(yīng)先做好:(1)
3、首地址(末地址) SI(2)目的串首地址(末地址) DI(3)串長度 CX(4)建立方向標(biāo)志(CLD使DF=0,STD使DF=1)注意: 源串默認(rèn)在數(shù)據(jù)段中,目的串必須在附加段中,但源串可以使用段跨越前綴來修改例datarea segmentmess1 db personal_computerdatarea endsextra segmentmess2 db 17 dup (?)extra endscode segment(ES,DS裝填)lea si, mess1 lea di, mess2 mov cx, 17 cld rep movsb code endslea si, mess1+16
4、 lea di, mess2+16 mov cx, 17 std rep movsbSTOS存入串指令STOS DST (例:STOS ES: BYTE PTRDI )STOSB (字節(jié))STOSW (字)執(zhí)行操作:字節(jié)操作:(DI)(AL), (DI)(DI)1 字操作: (DI)(AX), (DI)(DI)2 例:把附加段中的5個字節(jié)緩沖區(qū)mess2置為20Hlea di, mess2mov al, 20Hmov cx, 5cldrep stosb自學(xué):LODS 從串取指令I(lǐng)NS 串輸入指令OUTS 串輸出指令與REPE/REPZ和REPNE/REPNZ配合工作的CMPS 和SCAS 格式
5、: REPE/REPZ (REPNE/REPNZ) CMPS / SCAS 執(zhí)行操作:(1) 如(CX)=0或ZF=0 (ZF=1)則退出, 否則轉(zhuǎn)(2) (2) (CX)(CX)-1 (3) 執(zhí)行CMPS / SCAS (4) 重復(fù)(1) (3)CMPS串比較指令 CMPS SRC, DSTCMPSB (字節(jié))CMPSW (字) 執(zhí)行操作: (1) (SI) - (DI) 根據(jù)比較結(jié)果設(shè)置條件標(biāo)志位:相等 ZF=1 不等 ZF=0 (2) 字節(jié)操作:(SI)(SI)1, (DI)(DI)1 字操作: (SI)(SI)2, (DI)(DI)2 SCAS串掃描指令SCAS DSTSCASB (字
6、節(jié))SCASW (字) 執(zhí)行操作: 字節(jié)操作:(AL) - (DI), (DI)(DI)1 字操作: (AX) - (DI), (DI)(DI)2 CMPS/SCAS與REPE/REPZ和REPNE/REPNZ配合用于比較兩個數(shù)據(jù)串,或從一個字符串中查找一個指定的字符例:從一個字符串中查找一個指定的字符mess db COMPUTERlea di, messmov al, Tmov cx, 8cldrepne scasb(DI): 相匹配字符的下一個地址(CX):剩下還未比較的字符個數(shù)COMPUTER(di) COMPUTER(di) 例 比較兩個字符串,都是8個元素,找出它們不相匹配的位置
7、lea si, mess1lea di, mess2mov cx, 8cldrepe cmpsb無條件轉(zhuǎn)移指令 JMP格式: JMP 標(biāo)號段內(nèi)直接短轉(zhuǎn)移 JMP SHORT OPR 執(zhí)行操作:(IP)(IP)+8位位移量(-128127) 例: . JMP SHORT HELLO HELLO: MOV AL, 33.3.5控制轉(zhuǎn)移指令段內(nèi)直接近轉(zhuǎn)移 JMP NEAR PTR OPR 執(zhí)行操作:(IP)(IP)+16位位移量段內(nèi)間接轉(zhuǎn)移 JMP WORD PTR OPR 執(zhí)行操作:(IP)(EA)段間直接轉(zhuǎn)移 JMP FAR PTR OPR 執(zhí)行操作:(IP)OPR的段內(nèi)偏移地址 (CS)OPR
8、所在段的段地址 段間間接轉(zhuǎn)移 JMP DWORD PTR OPR 執(zhí)行操作:(IP)(EA) (CS)(EA+2)條件轉(zhuǎn)移指令 條件轉(zhuǎn)移指令根據(jù)上一條指令所設(shè)置的條件碼來判斷測試條件,滿足測試條件則轉(zhuǎn)移到由指令指定的轉(zhuǎn)向地址去執(zhí)行那里的程序;如果不滿足條件則執(zhí)行下一條指令。 8086中的條件轉(zhuǎn)移只可以使用短轉(zhuǎn)移,即只能使用段內(nèi)直接尋址的8位位移量(-128127) 所有的條件轉(zhuǎn)移指令都不影響條件碼根據(jù)單個條件標(biāo)志的設(shè)置情況轉(zhuǎn)移格式 測試條件 JZ(JE) OPR ZF=1 JNZ(JNE) OPR ZF=0 JS OPR SF=1 JNS OPR SF=0 JO OPR OF=1 JNO OP
9、R OF=0 JP(JPE) OPR PF=1 JNP(JPO) OPR PF=0 JC OPR CF=0 JNC OPR CF=1比較兩個無符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移* 格式 JNBE(JA) OPR 比較兩個帶符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移* 格式 JNLE(JG) OPR 測試CX的值為0則轉(zhuǎn)移 格式 測試條件 JCXZ OPR (CX)=0例3.76 X50,轉(zhuǎn)到TOO_HIGH; 計算X-Y,溢出轉(zhuǎn)到OVERFLOW,否則 |X-Y|RESULT MOV AX, XCMP AX, 50JNLE TOO_HIGHSUB AX, YJO OVERFLOWJNS NONNEGNEG AX NO
10、NNEG: MOV RESULT, AX TOO_HIGH: OVERFLOW: 例3.77 、是雙精度數(shù),分別存于DX,AX及BX,CX中, 時轉(zhuǎn)X,否則轉(zhuǎn)Y。CMP DX, BXJNLE XJL YCMP AX, CXJNBE XY: .X: .循環(huán)指令注意:* CX中存放循環(huán)次數(shù) * 只能使用段內(nèi)直接尋址的8位位移量(-128127)LOOPLOOPZ / LOOPELOOPNZ / LOOPNE 執(zhí)行步驟: (1) (CX)(CX) -1 (2) 檢查是否滿足測試條件,如滿足則 (IP)(IP)+8位位移量,實行 循環(huán);不滿足則IP不變,退出循環(huán)。循環(huán)指令:LOOP OPR測試條件:(
11、CX) 0為零或相等時循環(huán)指令:LOOPZ(LOOPE) OPR測試條件:ZF=1且(CX) 0不為零或不相等時循環(huán)指令:LOOPNZ(LOOPNE) OPR測試條件:ZF=0且(CX) 0 MOV CX, N AGAIN: DEC CX JNZ AGAIN MOV CX, N AGAIN: LOOP AGAIN循環(huán)的條件轉(zhuǎn)移指令實現(xiàn)方法循環(huán)的循環(huán)指令實現(xiàn)方法例3.80 求首地址為ARRAY的M個字之和,結(jié)果存入TOTAL。 MOV CX, M MOV AX, 0 MOV SI, 0START_LOOP: ADD AX, ARRAYSIADD SI, 2LOOP START_LOOPMOV T
12、OTAL, AX例:在多重循環(huán)的程序結(jié)構(gòu)中,CX計數(shù)器的保存和恢復(fù) MOV CX, MAGAIN: PUSH CX MOV CX, NNEXT: LOOP NEXT POP CX LOOP AGAIN MOV DI, MAGAIN: MOV CX, NNEXT: LOOP NEXT DEC DI JNZ AGAIN子程序調(diào)用和返回指令code segmentmain proc far call sub retmain endpsub proc near retsub endpcode ends 段內(nèi)調(diào)用和返回code1 segmentmain proc far call sub retmain
13、 endpcode1 endscode2 segmentsub proc far retsub endpcode2 ends 段間調(diào)用和返回 CALL調(diào)用指令(以16位為例)段內(nèi)直接近調(diào)用:CALL DST執(zhí)行操作: PUSH (IP) (IP)(IP)+16位位移量 例: CALL SUB段內(nèi)間接近調(diào)用:CALL DST執(zhí)行操作: PUSH (IP) (IP)(EA) 例:CALL BX CALL WORD PTR 3000H段間直接遠(yuǎn)調(diào)用:CALL DST執(zhí)行操作: PUSH (CS) PUSH (IP) (IP)DST偏移地址 (CS)DST段地址 例:CALL SUB_NAME段間間接
14、遠(yuǎn)調(diào)用:CALL DST執(zhí)行操作: PUSH (CS) PUSH (IP) (IP)(EA) (CS)(EA+2) 例:CALL DWORD PTR BX RET返回指令段內(nèi)近返回:RET執(zhí)行操作: (IP) POP ( )段內(nèi)帶立即數(shù)近返回:RET EXP執(zhí)行操作: (IP) POP ( ) (SP)(SP)+D16(由EXP計算得到)帶立即數(shù) 用于調(diào)用程序調(diào)用子程序時的參數(shù)傳遞段間遠(yuǎn)返回:RET執(zhí)行操作: (IP)POP ( ) (CS)POP ( ) 段間帶立即數(shù)遠(yuǎn)返回:RET EXP執(zhí)行操作: (IP)POP ( ) (CS)POP ( ) (SP)(SP)+D16(由EXP計算得到)
15、(AX)(BX)(CX)(SP) (IP) 例:帶立即數(shù)返回code segmentmain proc far push ax push bx push cx call sub retmain endpsub proc near ret 6sub endpcode ends (SP) 堆棧段(SP)中斷指令1、什么是中斷? 2、什么是中斷例行程序?3、CPU響應(yīng)一次中斷的過程是怎樣的?4、什么是中斷向量? 中斷例行程序的入口地址當(dāng)系統(tǒng)運行或程序運行期間在遇到某些特殊情況時,需要計算機自動執(zhí)行的一組專門的例行程序進(jìn)行處理。中斷時所執(zhí)行的這組程序類似與子程序的調(diào)用,只不過多了保護FLAGS中斷向量
16、:中斷例行程序的入口地址,存放于中斷向量區(qū)。 類型0的(IP) 類型0的(CS) 類型1的(IP) 類型1的(CS) 類型N的(IP) 類型N的(CS) 類型255的(IP) 類型255的(CS)0000000004 4*N003FC類型0類型1 類型N類型255中斷向量區(qū) 中斷指令: INT TYPE 或 INT (隱含的類型號為3)執(zhí)行操作: PUSH (FLAGS) IF0 TF0 AC0 PUSH (CS) PUSH (IP) (IP)(TYPE*4) (CS)(TYPE*4+2)溢出中斷指令:INTO執(zhí)行操作: 若OF=1, (IP)(10H) (CS)(12H)從中斷返回指令:IR
17、ETIRET執(zhí)行操作:(IP)POP ( )(CS) POP ( )(FLAGS) POP ( ) 注意:* TYPE (0 255) 是中斷類型號。 * INT(INTO)指令執(zhí)行完,把IF和TF置0,但不影響 其它標(biāo)志位。 * IRET指令執(zhí)行完,標(biāo)志位由堆棧中取出的值確定。3.3.6 處理機控制指令 1、標(biāo)志處理指令: CLC CF0 CMC CFCF STC CF1 CLD DF0 STD DF1 CLI IF0 STI IF1 注意: * 只影響本指令指定的標(biāo)志進(jìn)位位置0進(jìn)位位置取反進(jìn)位位置1方向標(biāo)志置0方向標(biāo)志置1中斷標(biāo)志置0中斷標(biāo)志置12、其他處理機控制指令: NOP 無操作 (機器碼占一個字節(jié)) HLT 暫停機 (次外中斷,之后繼續(xù)執(zhí)行程) ESC 換碼 WAIT 等待 (等待外中
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社工協(xié)理員考試題及答案
- 青島高空實操考試題庫及答案
- 貴州省安順市關(guān)嶺布依族苗族自治縣2025-2026學(xué)年七年級上學(xué)期1月期末考試語文試卷(含答案)
- 天津市武清區(qū)2024-2025學(xué)年八年級上學(xué)期期末地理試題(含答案)
- 2026年深圳中考語文名句名篇默寫試卷(附答案可下載)
- 2026年深圳中考物理滑輪及其應(yīng)用試卷(附答案可下載)
- 2026年大學(xué)大二(建筑環(huán)境與能源應(yīng)用工程)傳熱學(xué)階段測試試題及答案
- 2026年深圳中考數(shù)學(xué)三輪復(fù)習(xí)沖刺試卷(附答案可下載)
- 猜明星游戲題庫及答案
- 自考英語4題庫及答案
- 2025-2030泉州市鞋類制造行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2026陜西省森林資源管理局局屬企業(yè)招聘(55人)備考題庫及答案1套
- 2025-2026學(xué)年人教版高二物理上學(xué)期期末模擬卷(含答案)
- 涉密部門保密季度檢查表及規(guī)范流程
- 病種成本核算與臨床路徑精細(xì)化管理
- 項目管理專員年底工作總結(jié)及2026年項目管理計劃
- 臨床重點專科檢驗科評分標(biāo)準(zhǔn)與評估報告
- 2025年東北三省四市教研聯(lián)合體高考模擬試題(二)語文
- 蕉嶺縣幅地質(zhì)圖說明書
- 電梯控制系統(tǒng)論文
- (完整word版)人教版初中語文必背古詩詞(完整版)
評論
0/150
提交評論