




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
程序控制類指令轉(zhuǎn)移指令循環(huán)控制子程序調(diào)用中斷控制3.9轉(zhuǎn)移指令通過修改指令的偏移地址或段地址及偏移地址實現(xiàn)程序的轉(zhuǎn)移無條件轉(zhuǎn)移指令
無條件轉(zhuǎn)移到目標(biāo)地址,執(zhí)行新的指令有條件轉(zhuǎn)移指令
在具備一定條件的情況下轉(zhuǎn)移到目標(biāo)地址無條件轉(zhuǎn)移指令格式:JMPOPRD目標(biāo)地址與JMP在同一代碼段與JMP不在同一代碼段原則上可實現(xiàn)在整個內(nèi)存空間的轉(zhuǎn)移無條件轉(zhuǎn)移指令段內(nèi)轉(zhuǎn)移轉(zhuǎn)移的目標(biāo)地址在當(dāng)前代碼段內(nèi)指令中直接給出目標(biāo)地址由指令中的寄存器或存儲器操作數(shù)指出目標(biāo)地址段內(nèi)直接尋址段內(nèi)間接尋址無條件段內(nèi)轉(zhuǎn)移段內(nèi)直接尋址JMPLabel近地址標(biāo)號位移量下一條要執(zhí)行指令的偏移地址=當(dāng)前IP+位移量┇JMP┇┇Label代碼段無條件段內(nèi)轉(zhuǎn)移段內(nèi)間接尋址JMPBXJMPWORDPTR[BX]JMP┇┇┇代碼段數(shù)據(jù)段BX=1200┇XXHXXHIP指令碼無條件轉(zhuǎn)移指令——段間轉(zhuǎn)移轉(zhuǎn)移的目標(biāo)地址不在當(dāng)前代碼段內(nèi)指令中直接給出目標(biāo)地址由指令中的32位存儲器操作數(shù)指出目標(biāo)地址段間直接尋址段間間接尋址無條件段間轉(zhuǎn)移段內(nèi)直接尋址JMPFARLabel遠(yuǎn)地址標(biāo)號JMPLabel┇┇┇代碼段1Label與JMP之間的位移量代碼段2XXHXXHXXHXXHIPCS無條件段間轉(zhuǎn)移段內(nèi)間接尋址JMPDWORDPTR[BX]XXHXXHXXHXXH[BX]IPCSJMP┇┇┇┇指令碼代碼段1代碼段2數(shù)據(jù)段條件轉(zhuǎn)移指令在滿足一定條件下,程序轉(zhuǎn)移到目標(biāo)地址繼續(xù)執(zhí)行條件轉(zhuǎn)移指令均為段內(nèi)短轉(zhuǎn)移,即轉(zhuǎn)移范圍為:-128~+127條件轉(zhuǎn)移指令的應(yīng)用1)簡單條件(直接標(biāo)志)轉(zhuǎn)移指令(共10條)根據(jù)CF、ZF、SF、OF、PF分別為1或0,共有10種狀態(tài),設(shè)置了10種轉(zhuǎn)移指令:JE/JZJSJOJCJP;標(biāo)志為1轉(zhuǎn)移JNE/JNZJNSJNOJNCJNP;標(biāo)志為0轉(zhuǎn)2)用于無符號數(shù)的條件轉(zhuǎn)移指令
①
JA/JNBE;高于/不低于等于轉(zhuǎn)移,CF∨ZF=0 ②
JNA/JBE;不高于/低于等于轉(zhuǎn)移,CF∨ZF=1 ③
JB/JNAE;低于/不高于等于轉(zhuǎn)移,CF=1 ④
JNB/JAE;不低于/高于等于轉(zhuǎn)移,CF=03)用于帶符號數(shù)的條件轉(zhuǎn)移指令
①
JG/JNLE 大于/不小于等于轉(zhuǎn)移,(SF∨OF)∨ZF=0 ②
JGE/JNL 大于等于/不小于轉(zhuǎn)移,(SF∨OF)=0 ③
JL/JNGE 小于/不大于等于轉(zhuǎn)移,(SF∨OF)=1 ④JLE/JNG 小于等于/不大于轉(zhuǎn)移,(SF∨OF)∨ZF=1
轉(zhuǎn)移指令例統(tǒng)計內(nèi)存數(shù)據(jù)段中以TABLE為首地址的100個8位符號數(shù)中正數(shù)、負(fù)數(shù)和零元數(shù)的個數(shù)。轉(zhuǎn)移指令例(流程圖)將存放各元素個數(shù)的單元清零取首地址設(shè)串長度取一個字節(jié)數(shù)正數(shù)個數(shù)加1零元素加1為負(fù)?為零?負(fù)數(shù)個數(shù)加1NYNY3.10循環(huán)控制指令控制程序在以當(dāng)前IP為中心的-128~+127范圍內(nèi)循環(huán)執(zhí)行循環(huán)次數(shù)由CX寄存器指定
LOOPLOOPZLOOPNZ無條件循環(huán)指令格式:LOOPLABEL循環(huán)條件:CX≠0操作:DECCXJNZ符號地址條件循環(huán)指令格式:LOOPZLABELLOOPELABEL循環(huán)條件:CX≠0ZF=1格式:LOOPNZLABELLOOPNELABEL循環(huán)條件:CX≠0ZF=0例:在一個由17個字符組成的字符串STRING中,現(xiàn)在查找該字符串中是否包含空格字符(其ASCII碼為20H),若未找到或尚未查完,則繼續(xù)查找,直到找到第一個空格字符或查完了才退出循環(huán)。STRINGDB‘PersonalComputer’…MOVBX,OFFSETSTRINGDECBXMOVCX,17NEXT:INCBXCMP[BX],BYTEPTR20HLOOPNENEXT…方法二:MOVDI,OFFSETSTRINGMOVAL,20HMOVCX,17
REPNESACSBJZNEXTJMPNFOUNDNEXT:…NFOUND:…3.11子程序調(diào)用返回指令段內(nèi)調(diào)用段間調(diào)用段內(nèi)直接調(diào)用段內(nèi)間接調(diào)用段間直接調(diào)用段間間接調(diào)用調(diào)用指令與轉(zhuǎn)移指令的比較用于調(diào)用一個子過程調(diào)用前須保護(hù)斷點地址子過程執(zhí)行結(jié)束后要返回原調(diào)用處繼續(xù)執(zhí)行原程序斷點恢復(fù)段內(nèi)調(diào)用子過程與原調(diào)用程序在同一代碼段,在調(diào)用之前只需保護(hù)斷點的偏移地址格式:CALLNEARPROC近過程名斷點入口地址段內(nèi)調(diào)用例CALLTIMRECALLWORDPTR[SI]直接調(diào)用間接調(diào)用段間調(diào)用子過程與原調(diào)用程序不在同一代碼段,在調(diào)用之前需保護(hù)斷點的段基地址和偏移地址。先將斷點的CS壓棧,再壓入IP格式:CALLFARPROC段間調(diào)用例CALLFARTIMRECALLDWORDPTR[SI]段間調(diào)用例格式:CALLFARPROC格式例:CALLFARTIMRECALLDWORDPTR[SI]XXHXXHCALL代碼段數(shù)據(jù)段┇SIXXHXXHCSIP返回指令從堆棧中彈出斷點地址,返回原程序格式:
RETRET指令一般位于子程序的最后3.12中斷指令中斷與過程調(diào)用:中斷是隨機(jī)事件或異常事件引起,調(diào)用則是事先已在程序中安排好響應(yīng)中斷請求不僅要保護(hù)斷點地址,還要保護(hù)PSW內(nèi)容調(diào)用指令在指令中直接給出子程序入口地址,中斷指令只給出中斷向量碼,入口地址則在向量碼指向的內(nèi)存單元中1.中斷指令格式:INTn說明:nх4中斷類型碼n=0?255nх4
XXHXXHXXHXXH入口的段地址入口的偏移地址存放中斷服務(wù)子程序入口地址的單元的偏移地址代碼段數(shù)據(jù)段┇該單元在數(shù)據(jù)段,段地址=DS┇中斷指令的執(zhí)行過程將PSW壓入堆棧;將INT指令的下一條指令的CS、IP壓棧;由n×4得到存放中斷向量的地址;將中斷向量(中斷服務(wù)程序入口地址)送CS和IP寄存器;轉(zhuǎn)入中斷服務(wù)程序。中斷指令的執(zhí)行過程n×4
22H11H00H67HIPCS68122HMOV代碼段數(shù)據(jù)段┇堆棧段SPFLAGSHFLAGSLIPHCSLCSHIPL┇SPSPSP中斷指令例執(zhí)行程序段:
CSIP
┇6200H:0110HINT21H6200H:0112HMOVAX,BX
┇12H01H00H62HSP=1200PSWLPSWHSP=11FA執(zhí)行INT指令后堆棧段中斷指令例執(zhí)行INT21H指令后IP=[21Hх4]CS==[(21Hх4)+2]0084H
23H11H00H20HIP
CS數(shù)據(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國際結(jié)算流動資金貸款合同樣本
- 鞋類定制加工合同范本
- 農(nóng)村集體土地承包合同版
- 試驗檢測技術(shù)服務(wù)合同模板
- 電力調(diào)度合同協(xié)議
- 化工原料采購合同格式范本
- 新建住房分期付款合同
- 甲乙丙三方租賃合同補(bǔ)充協(xié)議
- 搬家行業(yè)安全生產(chǎn)與事故預(yù)防考核試卷
- 危險品倉儲安全操作規(guī)程優(yōu)化考核試卷
- 水輪機(jī)調(diào)速器現(xiàn)場調(diào)試
- 一年級下冊勞動教案
- 付款申請英文模板
- 大同大學(xué)綜測細(xì)則
- 生活會前談心談話提綱
- 比較思想政治教育(第二版)第十二章課件
- 企業(yè)員工安全教育培訓(xùn)檔案 模板
- 小學(xué)校本課程-第十三課安全文明網(wǎng)上行教學(xué)課件設(shè)計
- 普通外科常見疾病臨床路徑
- 人教版區(qū)域地理課件世界地理之中亞五國【公開課教學(xué)PPT課件】高中地理
- 人教版九年級下冊初中英語全冊作業(yè)設(shè)計一課一練(課時練)
評論
0/150
提交評論