5條件轉(zhuǎn)移課件_第1頁
5條件轉(zhuǎn)移課件_第2頁
5條件轉(zhuǎn)移課件_第3頁
5條件轉(zhuǎn)移課件_第4頁
5條件轉(zhuǎn)移課件_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2.條件轉(zhuǎn)移指令1.簡單條件轉(zhuǎn)移指令2.無符號數(shù)條件轉(zhuǎn)移指令3.有符號數(shù)條件轉(zhuǎn)移指令它們都有通用的語句格式和功能。語句格式:操作符opr功能:如果條件滿足,則(IP)+位移量→IP。存儲器OPXXJZ+15MOVXXIPCSIP11)簡單條件轉(zhuǎn)移指令助記符轉(zhuǎn)移條件功能JE/JZZF=1相等/等于0轉(zhuǎn)移JNE/JNZZF=0不相等/不等于0轉(zhuǎn)移JSSF=1為負轉(zhuǎn)移JNSSF=0為正轉(zhuǎn)移JOOF=1溢出轉(zhuǎn)移JNOOF=0未溢出轉(zhuǎn)移JCCF=1進位位為1轉(zhuǎn)移JNCCF=0進位位為0轉(zhuǎn)移JP/JPEPF=11的個數(shù)為偶數(shù)轉(zhuǎn)移JNP/JPOPF=O1的個數(shù)為奇數(shù)轉(zhuǎn)移2控制轉(zhuǎn)移指令-例例:根據(jù)加法運算的結(jié)果,做不同的動作或者addax,tempjnz

action1……action_1:

……action_2:

addax,tempjz

action_2

…action_1:MOV…

…….action_2:

ADD…3帶符號數(shù)/無符號數(shù)比較必須區(qū)分有符號和無符號指令的適用情況,否則會出現(xiàn)錯誤.例如:AX=11111111,BX=00000000CMPAX,BX無符號數(shù)1111111(255)>

00000000(0)有符號數(shù)1111111(-1)<

000000000(0)

無符號數(shù)比較時,CF=1有借位<

CF=0沒有借位>=CFVZF=1<=CFVZF=0>5帶符號比較的情況SF=1符號為負,OF=1有溢出

SFOFSFOFA000(大于)B011(小于)C101D110-32768+3276780007FFFFFFF0001-1+1負溢正溢負數(shù)正數(shù)6控制轉(zhuǎn)移指令-測試CX4)測試CX的值為0則轉(zhuǎn)移指令JCXZCX寄存器為0則轉(zhuǎn)移格式:JCXZOPRJECXZOPR

ECX寄存器的內(nèi)容值為0則轉(zhuǎn)移指令格式:JECXZOPR測試條件(ECX)=07控制轉(zhuǎn)移指令-例movax,xcmpax,50jgtoo-highsubax,yjooverflowjnsnonneg

negaxnonneg:movresult,ax…too_high:

…overflow:例:

設X,Y均為存放在X和Y單元中的16位操作數(shù),先判斷X>50否?如果滿足條件則轉(zhuǎn)移到TOO-HIGH去執(zhí)行。然后做X-Y;如溢出則轉(zhuǎn)移到OVERFLOW去執(zhí)行。否則計算|X-Y|,并把結(jié)果存入RESULT中。8例:3.78Cx=nbx=0di=0si=0Array[bx]≤0?INCdiINCsiArray[bx]<0?BX=(BX)+2CX-1=0?AX=n,AX=(AX)-di-siYNYNNYdi:正數(shù)個數(shù)si:負數(shù)個數(shù)存儲器78250-1556055-4XXXXxxArray10例:統(tǒng)計數(shù)組中負數(shù)、0、正數(shù)的個數(shù)MOVCX,NMOVBX,0MOVDI,BXMOVSI,BXAgaig:CMPArray[BX],0JLEle-eqINCDIJMPnextle-eq:JLnextINCSInext:ADDBX,2DECCXJNZagainMOVAX,NSUBAX,DISUBAX,SIJZskipJMPneg-valskip:…neg-val…..113.條件設置指令2、比較兩個無符號數(shù),并根據(jù)比較結(jié)果目的字節(jié)置為1①SETB/SETNAE/SETCDST小于,目的字節(jié)DST置為1②SETNB/SETAE/SETNCDST不小于,目的字節(jié)DST置為1…④SETBE/SETNADST

小于等于,目的字節(jié)DST置為13、比較兩個帶符號數(shù),并根據(jù)比較結(jié)果目的字節(jié)置為1①SETL/SETNGEDST小于,目的字節(jié)DST置為1②SETNL/SETGEDST不小于,目的字節(jié)DST置為1③SETLE/SETNGDST

小于等于,目的字節(jié)DST置為1④SETNBE/SETGDST不小于等于,目的字節(jié)DST置為1134循環(huán)指令1)循環(huán)指令LOOP2)相等/為零循環(huán)指令LOOPE3)不相等/不為零循環(huán)指令LOOPNE4)CX為零轉(zhuǎn)移指令JCXZCX←CX-1CX=0?循環(huán)體CX←循環(huán)次數(shù)YN說明:使用LOOP指令可代替兩條指令:DECCXJNE短標號1).循環(huán)指令LOOP語句格式:LOOP短標號功能:(CX)-1≠0,則程序轉(zhuǎn)移(循環(huán));否則,順序執(zhí)行。142)相等/為零循環(huán)指令LOOPE語句格式:LOOPE/LOOPZ短標號功能:(CX)-1≠0且ZF=1,則程序轉(zhuǎn)移(循環(huán))否則,順序執(zhí)行。3)不相等/不為零循環(huán)指令LOOPNE語句格式:LOOPNE/LOOPNZ短標號功能:(CX)-1≠0,且ZF=0則程序轉(zhuǎn)移(循環(huán));否則,順序執(zhí)行。15循環(huán)指令-舉例例3.67有一個首地址array的m字數(shù)組,試編寫一個程序:求出數(shù)組的內(nèi)容之和,并把結(jié)果存入total中.movcx,mmovax,0movsi,0

st-1:addax,array[si]addsi,2loopst-1movtotal,ax17循環(huán)指令-舉例例3.68有一個串中有l(wèi)個字符,存放在str存儲區(qū)中.查找字符串中的空格,如果沒找到,則轉(zhuǎn)到not_found去執(zhí)行.movcx,lmovsi,-1moval,20hnext:incsicmpax,str[si]loopnznext

jnznot_found…not_found:185.子程序-段內(nèi)直接調(diào)用指令:CALL調(diào)用RET返回由于子程序與調(diào)用程序可以在一個段中,也可以在不同一段中,因此著這兩條指令的格式有:(1)CALL調(diào)用段內(nèi)直接調(diào)用

CALLDST操作:PUSHIPIP=(IP)+D16或EIP=((EIP)+D16)AND0000FFFFHPUSHEIP(32位)存儲器XXXX…OPXXOPXXXXOPCS:IPSUBP-AD16+寄存器IP例:CALLSUBP-A195子程序-段間直接遠調(diào)用

CS1:IP1存儲器XXCALLIP2CS2XX…OPXXXXOP例:CALLFARPTRPROGACS2:IP2PROGA棧

IP1CS1////////SS:SP③段間直接遠調(diào)用CALLDST操作:PUSHCSPUSHIP

IP←DST指定的偏移地址CS←DST指定的段地址

*PUSHCS或PUSHEIP(32位)215子程序-段間間接遠調(diào)用指令:CALL調(diào)用RET返回

CS1:IP1存儲器CALLXXXXOPXXXXIP2CS2…OPXXXXOP例:CALLFARPTR[BX+D16]CS2:IP2PROGA棧

IP1CS1////////SS:SP

DS段+EA

④段間間接遠調(diào)用CALLDST操作:PUSHCSPUSHIP

IP←(EA)CS←(EA+2)

*PUSHCS或PUSHEIP(32位)22【例3.54】比較有符號數(shù)大小,將較大的數(shù)存放在AX寄存器。CMP AX,BX ;(AX)-(BX)JNL NEXT ;若AX>=BX,轉(zhuǎn)移到NEXTXCHG AX,BX ;若AX<BX,交換NEXT:…返回本節(jié)233.7處理機控制類指令3.7.1標志位設置指令返回本章首頁1.進位標志操作指令2.方向標志操作指令3.中斷標志操作指令3.7.2

溫馨提示

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

評論

0/150

提交評論