指令系統(控制轉移類指令)_第1頁
指令系統(控制轉移類指令)_第2頁
指令系統(控制轉移類指令)_第3頁
指令系統(控制轉移類指令)_第4頁
指令系統(控制轉移類指令)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

控制轉移指令●無條件轉移指令根據其轉移范圍的大小可以分為五種方式:指令名稱指令格式執(zhí)行操作1.段內直接短轉移JMPSHORTOPRIP←(IP)+8位位移量2.段內直接近轉移JMPNEARPTROPRIP←(IP)+16位位移量3.段內間接轉移JMPWORDPTROPRIP←(EA)4.段間直接轉移JMPFARPTROPRIP←OPR的段內偏移地址CS←OPR所在段的段地址5.段間間接轉移JMPDWORDPTROPRIP←(EA)CS←(EA+2)●1.無條件轉移指令JMP●指令功能:無條件地轉移到由地址表達式所確定的目標單元?!裰噶罡袷剑篔MP地址表達式無條件轉移指令的一般使用格式為:JMP符號地址●2.條件轉移指令(1)條件轉移指令●指令功能:根據前面指令形成的條件來確定轉移目的的地址。●指令操作:當條件滿足時程序轉移至標號處,轉移范圍只能在離當前IP的-128?+127個字節(jié)之內。按照轉移條件分為四類1.單個標志位的條件轉移指令。如JZ(JE)、JP2.兩個無符號數比較的條件轉移指令。如JB(JNAE,JC)、JBE(JNA)3.兩個有符號數比較的條件轉移指令。如JLE(JNG)、JNL(JGE)4.測試(CX)=0的條件轉移指令。如JCXZ指令分類指令格式執(zhí)行條件1.單個標志位的條件轉移指令JZ(JE)標號ZF=1JNZ(JNE)標號ZF=0JS標號SF=1JNS標號SF=0JO標號OF=1JNO標號OF=0JP標號PF=1JNP標號PF=0JC標號CF=1JNC標號CF=02.兩個無符號數比較的條件轉移指令JB(JNAE)標號CF=1(<)JNB(JAE)標號CF=0(≥)JBE(JNA)標號CF∨ZF=1(≤)JNBE(JA)標號CF∨ZF=0(>)3.兩個有符號數比較的條件轉移指令JL(JNGE)標號SF⊕OF=1(<)JNL(JGE)標號SF⊕OF=0(≥)JLE(JNG)標號(SF⊕OF)∨ZF=1(≤)JNLE(JG)標號(SF⊕OF)∨ZF=0(>)●3.(1)計數循環(huán)指令LOOP循環(huán)控制指令

●指令格式:LOOPOPR●指令功能:每執(zhí)行一次LOOP指令,CX的內容減“1”,若(CX)≠0,則循環(huán)轉移到目的地址TARGET重復執(zhí)行其間的程序段,直到(CX)=0,退出循環(huán),順序執(zhí)行下條指令。例[4-18]把數據區(qū)buffer內的50個有符號字節(jié)數將正(零歸正數)、負數分開,并分別送到NUM1和NUM2兩個緩沖區(qū)的程序如下:

LEA SI,BUFFER LEA DI,NUM1 LEA BX,NUM2 MOV CX,50BEG: MOVAL,[SI]INCSI TEST AL,80H JNZ MINUS MOV [DI],ALINCDI JMP AGAINMINUS:MOV [BX],ALINCBXAGAIN:LOOP BEG HLT(2)結果為零或相等時循環(huán)指令LOOPE/LOOPZ●指令格式:LOOPZ(LOOPE)

OPR●指令功能:使(CX)-1→CX,當(CX)≠0,且ZF=1時,則循環(huán)轉移至目的地址TATGET去重復執(zhí)行其間的程序段。當(CX)=0,或ZF=0,退出循環(huán),順序執(zhí)行本指令的下條指令。例[4–19]找出以NUM為首地址的100個字節(jié)數組中第一個非零項,并將其置于AL中,數組中若無非零項,則(AL)=0。程序如下:

MOV CX,100 LEA BX,NUM MOV SI,0FFFFHZERO:INC SI CMP BYTEPTR[BX+SI],0 LOOPZZERO JZ OVER MOV AL,[BX+SI] JMP DONEOVER:MOV AL,0DONE:HLT(3)結果不為零或不相等時循環(huán)指令LOOPNE/LOOPNZ●指令格式:LOOPNZ(LOOPNE)

OPR●循環(huán)條件:ZF=0且

(CX)≠0●執(zhí)行操作:①

(CX)←(CX)-1;②檢查是否滿足循環(huán)條件:

如滿足則實行循環(huán); 不滿足則退出循環(huán)。過程調用指令CALL與返回指令RET●4.為便于模塊化程序設計,可把某些經常重復出現的一段程序獨立編制成一個模塊,稱為一個子過程或子程序。程序中可由調用指令CALL調用子程序,在子程序執(zhí)行完成后又用返回指令RET返回調用程序繼續(xù)執(zhí)行?!襁^程調用指令CALL必須同返回指令RET成對使用。●過程定義的形式如下(詳見第五章“偽指令”):過程名

PROC[near/far]

過程體

RET

過程名 ENDP(1)CALL指令①段內直接調用●指令格式:CALL DST●執(zhí)行操作:SP←(SP)-2

(SP)+1,(SP)←(IP)

IP←(IP)+16位位移量②段內間接調用●指令格式:CALL DST●執(zhí)行操作:SP←(SP)-2

(SP)+1,(SP)←(IP)

IP←(EA)過程調用指令CALL與返回指令RET●4.(1)CALL指令③段間直接調用●指令格式:CALL DST●執(zhí)行操作:SP←(SP)-2

(SP)+1,(SP)←(CS)

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

IP←

偏移地址

CS←

段地址④段間間接調用●指令格式:CALL DST●執(zhí)行操作:SP←(SP)-2

(SP)+1,(SP)←(CS)

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

IP←

(EA)

CS←(EA+2)CALL指令不影響標志位常用格式:CALL子程序名過程調用指令CALL與返回指令RET(2)①段內返回●指令格式:RET●執(zhí)行操作:IP←((SP)+1,(SP))

SP←(SP)+2②段內帶立即數返回●指令格式:RETn●執(zhí)行操作:IP←((SP)+1,(SP))

SP←(SP)+2SP←(SP)+n

④段間帶立即數返回●指令格式:RETn●執(zhí)行操作:IP←((SP)+1,(SP))SP←(SP)+2CS←((SP)+1,(SP))SP←(SP)+2

SP←(SP)+n返回指令RET

③段間返回

●指令格式:RET

●執(zhí)行操作:IP←((SP)+1,(SP))SP←(SP)+2CS←((SP)+1,(SP))SP←(SP)+2●4.RET指令不影響標志位中斷調用與返回指令●5.將在第七章中介紹CLC ;CF←0STC ;CF←1CMC ;CF求反,即CF←┓CFCLD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論