




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、控制轉(zhuǎn)移類指令,用于改變程序中指令執(zhí)行路徑 程序轉(zhuǎn)移指令 循環(huán)指令 子程序調(diào)用指令,兩種不同類型 無條件轉(zhuǎn)移:指令執(zhí)行與狀態(tài)無關(guān),指令將改變程序執(zhí)行的順序。 條件跳轉(zhuǎn):指令的執(zhí)行要視指定的條件是否滿足,如條件滿足則轉(zhuǎn)移發(fā)生,否則順序執(zhí)行下一條指令,一般根據(jù)執(zhí)行上一指令后標(biāo)志寄存器的狀態(tài)而決定是否轉(zhuǎn)移,程序轉(zhuǎn)移指令,無條件轉(zhuǎn)移指令,JMP OP 段內(nèi)直接轉(zhuǎn)移 段內(nèi)間接轉(zhuǎn)移 段間直接轉(zhuǎn)移 段間間接轉(zhuǎn)移,無條件轉(zhuǎn)移指令,段內(nèi)直接轉(zhuǎn)移,當(dāng)跳轉(zhuǎn)的范圍在128 +127時(shí),稱為段內(nèi)直接短轉(zhuǎn)移。 格式:JMP SHORT OPR 當(dāng)跳轉(zhuǎn)的范圍超過一個(gè)字節(jié)所表達(dá)的有符號數(shù)范圍,但跳轉(zhuǎn)目的標(biāo)號仍在同一段內(nèi),稱為
2、段內(nèi)直接近轉(zhuǎn)移。 格式:JMP NEAR PTR OPR (IP)+disp(IP),段內(nèi)間接轉(zhuǎn)移,轉(zhuǎn)移指令的操作數(shù)是16位的通用寄存器或存儲器操作數(shù),轉(zhuǎn)移指令的目的地址為: JMP WORD PTR OPR (EA) (IP) , EA由OPR的尋址方式確定,可使用除立即數(shù)方式以外的任一種尋址方式,1)JMP BX BX的內(nèi)容將直接加載指令指針I(yè)P。 2)JMP WORD PTRBX+DI 該指令的操作數(shù)有效地址: EA=(BX)+(DI) 指令指針I(yè)P為: IPDS:BX+DI,段間直接轉(zhuǎn)移,段間轉(zhuǎn)移是指轉(zhuǎn)移的目的地址是屬于另一個(gè)代碼段,因而在發(fā)生跳轉(zhuǎn)時(shí),CS和IP需要一起更改,指令轉(zhuǎn)移標(biāo)
3、號的屬性為遠(yuǎn)標(biāo)號。 例如: JMP FAR PTR LABEL_NAME,段間間接轉(zhuǎn)移,段間間接轉(zhuǎn)移的操作數(shù)為32位存儲器操作數(shù),存儲器中的第一個(gè)字加載IP,第二字加載CS。 例如: JMP DWORD PTR BX+SI JMP ALPHA BP+DI,條件轉(zhuǎn)移指令,簡單條件轉(zhuǎn)移指令 無符號數(shù)條件轉(zhuǎn)移指令 有符號數(shù)條件轉(zhuǎn)移指令 它們都有通用的語句格式和功能。 語句格式: 標(biāo)號: 操作符 短標(biāo)號 功能: 如果條件滿足,則(IP)位移量IP。,Part I JMP AA, Part II,AA Part III,條件跳轉(zhuǎn)指令,條件不滿足時(shí)執(zhí)行指令,條件滿足時(shí) 執(zhí)行指令,條件滿足?,否,是,助記符
4、 意義 測試條件 JE/JZ 等于 (ZF)=1 JNE/JNZ 不等于 (ZF)=0 JC 有進(jìn)位或有借位 (CF)=1 JNC 無進(jìn)位或無借位 (CF)=0 JO 有溢出 (OF)=1 JNO 無溢出 (OF)=0 JP/JPE 奇偶位為1/偶 (PF)=1 JNP/JPO 奇偶位為0/奇 (PF)=0 JS 為負(fù) (SF)=1 JNS 為正 (SF)=0 JCXZ CX內(nèi)容為0 (CX)=0,簡單條件轉(zhuǎn)移指令,無符號數(shù)條件轉(zhuǎn)移指令,助記符 意義 測試條件 JA/JNBE 大于或不小于等于 (CF)+(ZF)=0 JAE/JNB 大于等于或不小于 (CF)=0 JB/JNAE 小于或不大于
5、等于 (CF)=1 JBE/JNA 小于等于或不大于 (CF)+(ZF)=1,【例】比較無符號數(shù)大小,將較大的數(shù)存放AX寄存器。,CMPAX, BX ;(AX)(BX) JNBNEXT ;若AX=BX,轉(zhuǎn)移到NEXT XCHGAX,BX ;若AXBX,交換 NEXT:,有符號數(shù)條件轉(zhuǎn)移指令,助記符 意義 測試條件 JG/JNLE 大于或不小于等于 (SF)(OF)+(ZF)=0 JGE/JNL 大于等于或不小于 (SF)(OF)=0 JL/JNGE 小于或不大于等于 (SF)(OF)=1 JLE/JNG 小于等于或不大于 (SF)(OF)+(ZF)=1,【例】比較有符號數(shù)大小,將較大的數(shù)存放在
6、AX寄存器。,CMPAX,BX;(AX)(BX) JNLNEXT ;若AX=BX,轉(zhuǎn)移到NEXT XCHGAX,BX;若AXBX,交換 NEXT:,【例jump】在存儲器中有一個(gè)首地址為array的N字?jǐn)?shù)組,要求測試其中正數(shù)、0、負(fù)數(shù)的個(gè)數(shù),正數(shù)的個(gè)數(shù)放在DI中,0的個(gè)數(shù)放在SI中,并根據(jù)N(DI)(SI)求得負(fù)數(shù)的個(gè)數(shù)放在AX中,如果有負(fù)數(shù)則轉(zhuǎn)NEGVAL中去執(zhí)行。,data segment array dw 0ef12h,1234h,3456h,7891h,4532h,0h,0eeadh,8876h,7765h,4567h N dw 10 mess db have negtive$ dat
7、a ends code segment assume cs:code,ds:data,es:data, main proc far mov ax,data mov ds,ax mov es,ax,mov bx,0 mov si,bx mov di,bx mov cx,N again:mov ax,arraybx cmp ax,0 jle lessoreq inc di jmp next lessoreq:jl next inc si,next:inc bx inc bx dec cx jnz again mov ax,n sub ax,si sub ax,di jz skip,negval:
8、lea dx,mess mov ah,09h int 21h mov ah,01h int 21h skip: mov ah,4ch int 21h main endp code ends end main,循環(huán)指令,共同特點(diǎn): 指令用CX作為記數(shù)器,重復(fù)控制指令每執(zhí)行一次CX減1,用CX是否減至為零來判斷循環(huán)轉(zhuǎn)移; 指令長度為2字節(jié),第一字節(jié)是指令操作碼,第二字節(jié)是相對偏移量,均屬相對短轉(zhuǎn)移。 循環(huán)指令LOOP 相等/為零循環(huán)指令LOOPE 不相等/不為零循環(huán)指令LOOPNE,LOOP,LOOP 短標(biāo)號 功能: (CX)(CX)-1, 測試CX的內(nèi)容是否為0, 若(CX)0則轉(zhuǎn)移至目標(biāo)操作數(shù)
9、, 否則順序執(zhí)行下一條指令。 它等效于以下兩條指令組合: DEC CX JNE 短標(biāo)號,【例310】 將數(shù)據(jù)段中數(shù)據(jù)長度為COUNT的數(shù)據(jù)塊BLOCK的負(fù)數(shù)分揀出來,存放在MINUS為首地址的緩存區(qū)中,并統(tǒng)計(jì)其負(fù)數(shù)的個(gè)數(shù)存放在MNUM變量中。,LOOP,DATA SEGMENT BLOCK DB 1AH,0CH,89H,97H,04,32H,75H,4BH COUNT EQU $-BLOCK MINUS DB COUNT DUP(?) MNUM DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR MO
10、V AX,DATA MOV DS,AX MOV ES,AX LEA SI,BLOCK LEA DI,MINUS,MOV CX,COUNT AGAIN: MOV AL,SI OR AL,AL JNS NEXT MOV DI,AL INC MNUM INC DI NEXT: INC SI LOOP AGAIN MOV Ah,4CH INT 21H MAIN ENDP CODE ENDS END MAIN,相等/為零循環(huán)指令LOOPE,語句格式: LOOPE 短標(biāo)號 LOOPZ 短標(biāo)號 功能: (CX)1 0且ZF=1, 則程序轉(zhuǎn)移(循環(huán)); 否則,順序執(zhí)行。 注意:狀態(tài)標(biāo)志ZF是LOOPZ/LOO
11、PE之前的指令執(zhí)行時(shí)所生成的ZF標(biāo)志,CX寄存器減1并不影響ZF的狀態(tài)。,例311在一數(shù)據(jù)緩沖區(qū)中尋找非零元素的起始地址,設(shè)緩沖區(qū)BUFFER的數(shù)據(jù)個(gè)數(shù)為COUNT。,DATA SEGMENT buffer DB 0H,00H,89H,97H,04,32H,75H,4BH COUNT EQU $-BUFFER DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR MOV AX,DATA MOV DS,AX,LEA SI,BUFFER MOV CX,COUNT AGAIN: MOV AL,SI INC SI OR AL,AL LO
12、OPZ again OR CL,30H MOV DL,CL MOV AH,2 INT 21H,MOV AH,1 INT 21H MOV Ah,4CH INT 21H MAIN ENDP CODE ENDS END MAIN,不相等/不為零循環(huán)指令,語句格式: LOOPNE 短標(biāo)號 LOOPNZ 短標(biāo)號 功能: (CX)10, 則程序轉(zhuǎn)移(循環(huán)); 否則,順序執(zhí)行。 除轉(zhuǎn)移條件需(ZF)=0以外,其余同LOOPZ。,子程序調(diào)用CALL,子程序是完成某一功能的特殊程序段,每當(dāng)程序需要這一功能時(shí),可以調(diào)用該子程序,而不必重復(fù)書寫這個(gè)代碼段,這樣可以主程序簡明,占用較少的內(nèi)存空間。,第一條指令,返回,
13、子程序A,調(diào)用子程序A,下一條指令,下一條指令,調(diào)用子程序A,主程序,子程序調(diào)用過程,子程序調(diào)用指令,1子程序調(diào)用指令CALL (1)段內(nèi)直接調(diào)用 (2)段內(nèi)間接調(diào)用 (3)段間直接調(diào)用 (4)段間間接調(diào)用 2返回指令RET (1)語句格式: RET 或RET n (2)語句格式: RETF 或RETF n,段內(nèi)直接調(diào)用,段內(nèi)調(diào)用是指被調(diào)用的子程序與調(diào)用主程序同處在一個(gè)代碼段中,因而段寄存器CS保持不變,在調(diào)用時(shí)只需改變指令指針I(yè)P,屬于NEAR轉(zhuǎn)移。 指令格式: CALL NEAR_PROC 其中NEAR_PROC可以為過程名或標(biāo)號, 指令執(zhí)行過程如下: 堆棧指針 (SP)(SP)-2 (S
14、P+1):(SP)(IP) (IP)(IP)+disp16,段內(nèi)間接調(diào)用,指令格式: CALL OP OP可以是通用寄存器或字存儲器操作數(shù) 指令執(zhí)行過程如下: 堆棧指針 (SP)(SP)-2 (SP+1):(SP)(IP) (IP)(EA) 例:CALL BX CALL MEM_WORD CALL WORD PTRBX,段間調(diào)用的CALL指令,段間調(diào)用是指被調(diào)用的子程序與調(diào)用的主程序處于兩個(gè)不同的代碼段內(nèi),因而當(dāng)程序進(jìn)行調(diào)用轉(zhuǎn)移時(shí),CS和IP需一起變更。 根據(jù)操作數(shù)的類型可以將段間調(diào)用指令分成段間直接調(diào)用和段間間接調(diào)用。,段間直接調(diào)用,指令格式:CALL FAR_PROC 其中FAR_PROC
15、可以為遠(yuǎn)過程名或遠(yuǎn)標(biāo)號。 指令執(zhí)行的過程如下: (SP)(SP)-2 (SP+1):(SP)(CS) (CS)SEG FAR_PROC (SP)(SP)2 (SP+1):(SP)(IP) (IP)OFFSET FAR_PROC,段間間接調(diào)用,指令格式:CALL MEMORY32 概念:段間間接調(diào)用的操作數(shù)應(yīng)為32位存儲器操作數(shù)。指令執(zhí)行過程與上述段間直接調(diào)用類似,所不同的是使用存儲器中第一個(gè)字加載IP,使用存儲器中的第二個(gè)字加載CS。 如: CALL DWORD PTRBX,子程序返回指令,指令格式: RET 或 RET n RETF 或 RETF n 其中RET為近過程的結(jié)束返回指令, RE
16、TF為遠(yuǎn)過程的結(jié)束返回指令, 帶參數(shù)n的RET或RETF指令可將傳遞的參數(shù)彈出作廢。,子程序返回指令,RET n指令執(zhí)行過程如下: (IP)(SP+1):(SP) (SP)(SP)+2 (SP)(SP)+n RETF n指令執(zhí)行過程如下: (IP)(SP+1):(SP) (SP)(SP)+2 (CS)(SP+1):(SP) (SP)(SP)+2 (SP)(SP)+n,DATA SEGMENT ASCVAL DB 4 DUP( ),$ BINVAL DW 045AH DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA,【例312】將二進(jìn)
17、制數(shù)045AH轉(zhuǎn)換為四位十進(jìn)制數(shù)并用ASCII表示。,MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,ASCVAL+3 MOV CX,10 MOV AX,BINVAL CALL B10CONV MOV AH,9 ; DISPLAY ASCII VALUE LEA DX,ASCVAL INT 21H MOV AX,4C00H INT 21H MAIN ENDP,B10CONV PROC NEAR B20: CMP AX,CX JB B30 XOR DX,DX DIV CX OR DL, 30H MOV SI,DL DEC SI JMP B
18、20 B30: OR AL, 30H MOV SI, AL RET B10CONV ENDP CODE ENDS END MAIN,處理機(jī)控制指令,三類12條,主要用于設(shè)置和清除CPU的狀態(tài)標(biāo)志位,使CPU與協(xié)處理器同步或執(zhí)行空操作。 狀態(tài)標(biāo)志位操作指令 外部同步指令,狀態(tài)標(biāo)志位操作指令,控制進(jìn)位標(biāo)志位CF 清進(jìn)位 CLC ;CF0 設(shè)置進(jìn)位 STC ;CF1 控制方向標(biāo)志位DF 清數(shù)據(jù)方向標(biāo)志位 CLD ;DF0 設(shè)置數(shù)據(jù)方向標(biāo)志位 STD ;DF1 控制中斷允許標(biāo)志位 禁止可屏蔽中斷請求 CLI ;IF0 允許可屏蔽中斷請求 STI ;IF1,外部同步指令,80386CPU具有多處理機(jī)的特征,為使硬件充分發(fā)揮功能,在軟件上設(shè)置了下述幾條指令,來實(shí)現(xiàn)多處理機(jī)系統(tǒng)中的同步功能,以便共享系統(tǒng)資源。 HLT WAIT ESC LOCK NOP,HLT停機(jī)指令
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二二屆中考數(shù)學(xué)試卷
- 肋骨骨折護(hù)理措施
- 2024年10月浙商銀行總行公司銀行部社會招聘筆試歷年參考題庫附帶答案詳解
- 配件庫管培訓(xùn)課件
- 鵪鶉養(yǎng)殖培訓(xùn)課件
- 2025至2030城市建設(shè)規(guī)劃行業(yè)市場占有率及投資前景評估規(guī)劃報(bào)告
- 2024年紫云縣貓營鎮(zhèn)招聘林管員筆試真題
- 2024年杭州臨安區(qū)專職社區(qū)工作者招聘筆試真題
- 第五漫展數(shù)學(xué)試卷
- 高難度聯(lián)考數(shù)學(xué)試卷
- 質(zhì)量環(huán)境職業(yè)健康安全管理體系三合一整合全套體系文件(管理手冊+程序文件)
- 廣東省茂名市直屬學(xué)校2023-2024學(xué)年七年級下學(xué)期期末數(shù)學(xué)試題
- QBT 102T-2023 甜菜糖廠設(shè)計(jì)規(guī)范 (正式版)
- 舌系帶短縮治療指南制定與更新
- 2025屆湖南省長郡中學(xué)、雅禮中學(xué)等四校高一物理第二學(xué)期期末經(jīng)典試題含解析
- 野外鉆探施工危險(xiǎn)源辨識及風(fēng)險(xiǎn)評價(jià)表
- 保健食品經(jīng)營質(zhì)量管理規(guī)范
- 醫(yī)療器械的風(fēng)險(xiǎn)管理培訓(xùn)
- PCR室作業(yè)指導(dǎo)書-檢驗(yàn)SOP文件
- 中華民族共同體概論課件專家版7第七講 華夷一體與中華民族空前繁盛(隋唐五代時(shí)期)
- 醫(yī)院保潔服務(wù)投標(biāo)方案(技術(shù)方案)
評論
0/150
提交評論