




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
微機(jī)原理及應(yīng)用第五章8086指令系統(tǒng)第三十一講程序控制指令之循環(huán)指令下面我們來學(xué)習(xí)循環(huán)指令程序控制指令之循環(huán)指令循環(huán)指令的操作碼是LOOPloop有環(huán),圈的這個意思,在這里就表示循環(huán)WS循環(huán)指令循環(huán)操作碼:LOOPLOOP后面是label,它是一個地址標(biāo)號,指示程序要跳轉(zhuǎn)的位置,即從這個位置開始下一輪循環(huán)循環(huán)指令循環(huán)操作碼:LOOP從該位置開始下一輪循環(huán)LABEL(地址標(biāo)號)程序控制指令之循環(huán)指令LOOP指令的功能是將cx的值減1,再判斷cx是否為0循環(huán)指令CX的值減1判斷CX是否為0如果為0說明達(dá)到了最大循環(huán)次數(shù),退出循環(huán),執(zhí)行Loop后面的指令循環(huán)指令退出循環(huán),執(zhí)行Loop后面指令[CX]-1=0如果不為0就跳轉(zhuǎn)到label指向位置處,繼續(xù)下一輪循環(huán),請大家注意循環(huán)控制指令中循環(huán)的次數(shù)要放到cx中循環(huán)指令退出循環(huán),執(zhí)行Loop后面指令[CX]-1=0繼續(xù)下一輪循環(huán)[CX]-1≠0循環(huán)次數(shù)放到CX大家記得還有什么值是要放到CX中的?對,串操作的時候,把串的長度要放到CX中,其實(shí)大家想想,串操作也是一種類似的循環(huán)操作,而且循環(huán)的次數(shù)就是串的長度,那么把串的長度放到CX中就不足為奇了哪些值要放到CX中串的長度循環(huán)次數(shù)循環(huán)指令循環(huán)指令控制轉(zhuǎn)移的目的地址在以IP為中心-128到正127的范圍內(nèi)而且循環(huán)指令不會影響標(biāo)志位的結(jié)果循環(huán)指令以IP為中心-128到+127的范圍內(nèi)控制轉(zhuǎn)移的目的地址循環(huán)控制指令分無條件循環(huán)和有條件循環(huán),請大家注意,循環(huán)控制指令的基本要求是CX不為0,才能循環(huán),所以,無論是無條件循環(huán)還是有條件循環(huán)都有一個條件就是CX不為0,循環(huán)控制指令無條件循環(huán)有條件循環(huán)CX≠0它們的區(qū)別是,無條件循環(huán)是說除了cx不為0這個條件以外,沒有其他的條件而有條件循環(huán)是說除了CX不為0這個條件以外,還有其他的條件要滿足,才能繼續(xù)循環(huán)循環(huán)控制指令無條件循環(huán)有條件循環(huán)只有CX≠0一個條件除CX≠0外還有條件無條件循環(huán)就是LOOPLABLE,其中LOOP指令執(zhí)行的功能相當(dāng)于,將CX減1無條件循環(huán)LOOPLABLE功能:[CX]-1然后判斷cx是否為0,如果不為0就跳轉(zhuǎn)到LABLE的位置繼續(xù),如果為0就退出循環(huán),執(zhí)行下一條指令無條件循環(huán)LOOPLABLE功能:[CX]-1跳轉(zhuǎn)到LABLE位置繼續(xù)循環(huán)CX≠0退出循環(huán)并執(zhí)行下一條指令CX=0條件循環(huán)指令通常還會看zf的狀態(tài)所以,它常會跟在影響zf標(biāo)志位的指令后面條件循環(huán)指令注意ZF的狀態(tài)常跟在影響ZF標(biāo)志位的指令后面比如,loopzlable,它的意思是如果cx不為0并且zf=1,也就是說上一次運(yùn)算的結(jié)果為0的話,那么就跳轉(zhuǎn)到label處繼續(xù)執(zhí)行條件循環(huán)指令舉例LOOPZLABLE循環(huán)條件:CX≠0且ZF=1上次結(jié)果為0而LOOPNZlabel,的意思是如果cx不為0并且zf等于0,也就是說上一次運(yùn)算的結(jié)果不為0的話,就跳轉(zhuǎn)到label處繼續(xù)執(zhí)行條件循環(huán)指令舉例LOOPNZLABLE循環(huán)條件:CX≠0且ZF=0上次結(jié)果不為0我們來看一個具體的例子,以data為首地址的內(nèi)存數(shù)據(jù)段中存放了200個16位的有符號數(shù),找到里面的最大值和最小值,并分別存放在max和min為首的內(nèi)存單元中例子在以DATA為首地址的內(nèi)存數(shù)據(jù)段中,存放有200個16位有符號數(shù)找出其中最大值和最小值,并分別存放在MAX和MIN為首的內(nèi)存單元中這個題目需要我們遍歷200個16位的有符號數(shù),可以使用循環(huán)指令,在一次循環(huán)中,我們需要做什么呢?例子在以DATA為首地址的內(nèi)存數(shù)據(jù)段中,存放有200個16位有符號數(shù)找出其中最大值和最小值,并分別存放在MAX和MIN為首的內(nèi)存單元中遍歷200個16位的有符號數(shù)循環(huán)指令要獲取到一個16位的有符號數(shù),然后跟min和max比較,如果它小于min的值,就拿這個數(shù)更新min的值,如果它大于max的值,就拿這個數(shù)更新max的值,分析到這里我們可以畫個流程圖,然后搭一下程序框圖,再進(jìn)行填空01先取數(shù)據(jù)段中第一個數(shù),將其同時暫存于MAX和MIN中02循環(huán)讀取其他數(shù),并分別與MAX和MIN中的數(shù)進(jìn)行比較03若小于MIN則取代原MIN中的數(shù),若大于MAX則取代原MAX中的數(shù)畫流程圖搭程序框圖填空下面我們來看程序,首先是初始化的部分,在初始化的部分要先獲取DATA的地址,設(shè)置循環(huán)的次數(shù)cx為200初始化部分設(shè)置DATA指針設(shè)置計(jì)數(shù)器LEASI,DATAMOVCX,200在程序的主體部分,主要分兩步,第一步是獲取一個字,第二步是把它跟max和min比較程序主體部分取第一個數(shù),分別賦給MAX和MIN取第二個數(shù),分別跟MAX和MIN比較,根據(jù)結(jié)果跳轉(zhuǎn)首先從si指向的兩個連續(xù)的內(nèi)存單元中取出16位的有符號數(shù)傳送到AX中,然后將ax的值分別賦給max和min,這樣第一個數(shù)我們就處理完了,將si加2,cx-1程序主體部分取第一個數(shù),分別賦給MAX和MIN取第二個數(shù),分別跟MAX和MIN比較,根據(jù)結(jié)果跳轉(zhuǎn)MOVAX,[SI]MOVMAX,AXMOVMIN,AXADDSI,2再去取第二個數(shù),從這個數(shù)開始就需要跟max和min進(jìn)行數(shù)值大小的比較,所以,這一步是循環(huán)的開始部分,它的前面有一個標(biāo)號START,在循環(huán)體中,首先獲取下一個值,把它跟max和min進(jìn)行比較程序主體部分取第一個數(shù),分別賦給MAX和MIN取第二個數(shù),分別跟MAX和MIN比較,根據(jù)結(jié)果跳轉(zhuǎn)MOVAX,[SI]MOVMAX,AXMOVMIN,AXADDSI,2DECCXCMPAX,MINJLMINOPRCMPAX,MAXJGMAXOPRMOVAX,[SI]START:如果小于min的話,就用ax的值更新min,如果大于max的話,就用ax的值更新max,否則,就說明這個值介于min和max之間,那我們什么也不需要做,直接跳轉(zhuǎn)到NEXT這個位置上,MOVAX,[SI]MOVMAX,AXMOVMIN,AXADDSI,2JMPNEXTDECCXCMPAX,MINJLMINOPRCMPAX,MAXJGMAXOPRMOVAX,[SI]START:用AX的值更新MIN小于MIN用AX的值更新MAX大于MAX先來看next這個位置,將SI加2然后交給loop去判斷循環(huán)次數(shù)是否達(dá)到,如果達(dá)到了就退出循環(huán),否則回到start處繼續(xù)下一輪循環(huán)MOVAX,[SI]MOVMAX,AXMOVMIN,AXADDSI,2JMPNEXTDECCXCMPAX,MINJLMINOPRCMPAX,MAXJGMAXOPRMOVAX,[SI]START:SI加2后交給LOOP判斷循環(huán)次數(shù)是否達(dá)到達(dá)到:退出循環(huán)未達(dá)到:回到start處繼續(xù)下一輪循環(huán)再來看,更新min和max的指令,我們可以使用exchange指令,直接將AX和min的值交換,以達(dá)到更新min的目的,更新MIN和MAX的指令EXCHANGE指令交換AX和MIN的值更新MIN同理,使用exchenage指令可以直接將ax和max的值交換,以達(dá)到更新max的目的更新MIN和MAX的指令EXCHANGE指令交換AX
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年春秋筆法考試題及答案
- 2025年面試組長筆試題庫及答案
- 2025年污水污泥濃度試題及答案
- 2025年媒介融合面試題及答案
- 2025年美育廣場考試題目及答案
- 2025年危險化學(xué)品生產(chǎn)單位安全生產(chǎn)管理人員考試題(附答案)
- 2025年創(chuàng)業(yè)知識競賽題庫大全
- 2025年海外金融知識競賽題庫
- 2025年張掖市遴選試題及答案
- 2026屆高考英語總復(fù)習(xí)分類語法填空-冠詞、名詞
- 標(biāo)準(zhǔn)化工程師考試匯編
- 馬戲團(tuán)演出安保服務(wù)協(xié)議
- 公路工程環(huán)境保護(hù)管理責(zé)任制度
- 專題10-一次函數(shù)的實(shí)際應(yīng)用中最值問題(教師版含解析)-2021年中考數(shù)學(xué)復(fù)習(xí)重難點(diǎn)與壓軸題型訓(xùn)練
- 鏈家新人成長手冊10
- 成人重癥患者人工氣道濕化護(hù)理專家共識 解讀
- 游戲宣傳合同范本
- JGJ 450-2018 老年人照料設(shè)施建筑設(shè)計(jì)標(biāo)準(zhǔn)
- DL∕ T 780-2001 配電系統(tǒng)中性點(diǎn)接地電阻器
- (正式版)YS∕T 5040-2024 有色金屬礦山工程項(xiàng)目可行性研究報(bào)告編制標(biāo)準(zhǔn)
- GB/T 36548-2024電化學(xué)儲能電站接入電網(wǎng)測試規(guī)程
評論
0/150
提交評論