版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章循環(huán)程序設(shè)計涉及到的循環(huán)指令:
LOOP LOOPZ/LOOPE LOOPNZ/LOOPNE
LOOP指令的執(zhí)行步驟:
(1)(CX)←(CX)-1(2)檢查是否滿足測試條件,如滿足則
(IP)←(IP)+8位位移量,實行循環(huán);不滿足則IP不變,退出循環(huán)。循環(huán)指令:LOOPOPR測試條件:(CX)0為零或相等時循環(huán)指令:LOOPZ(LOOPE)OPR測試條件:ZF=1且(CX)0不為零或不相等時循環(huán)指令:LOOPNZ(LOOPNE)OPR測試條件:ZF=0且(CX)0LOOPAGAIN
DECCXJNZAGAINAGAIN是一個地址標(biāo)號循環(huán)程序的結(jié)構(gòu)DO-WHILE結(jié)構(gòu)控制條件初始化循環(huán)體YN控制條件初始化循環(huán)體YNDO-UNTIL結(jié)構(gòu)初始化:設(shè)置循環(huán)的初始狀態(tài)循環(huán)體:循環(huán)的工作部分及修改部分控制條件:計數(shù)控制特征值控制地址邊界控制用分支指令控制循環(huán)例1:在STR開始的緩沖區(qū)中存放有一個字符串,計算該字符串的長度并存入LEN單元。DATASEGMENTSTRDB’computer$’LENDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AXLEASI,STR ;串首地址
XORBL,BL ;計數(shù)器清0LOP:MOVAL,[SI] ;取一個字節(jié)
CMPAL,24H ;和’$’進(jìn)行比較
JZSTOP ;相等則結(jié)束
INCBL ;否則計數(shù)器加1INCSI ;地址指針加1JMPLOP ;轉(zhuǎn)回到LOPSTOP:MOVLEN,BL ;存儲字符個數(shù)
MOVAH,4CHINT21HCODEENDS ENDSTARTNY=‘$’?存串長度取串元素置指針、串長度初值為0開始結(jié)束串長度加1修改地址指針用專用的循環(huán)指令控制循環(huán)例2:求以BUF為首地址的10個內(nèi)存單元的無符號數(shù)據(jù)和。已知其和小于等于255,將結(jié)果存入第11個內(nèi)存單元DATASEGMENTBUFDB12H,38H,46H,0BH,09H,41H,32H,56,02H,26HRESDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AXMOVAL,0 ;存放累加之和
MOVCX,0AH ;累加次數(shù)
LEABX,BUF ;數(shù)據(jù)表的首地址
LP:ADDAL,[BX] ;累加
INCBX ;地址增1 LOOPLP;若CX-1不為0,則繼續(xù)循環(huán)
MOVRES,AL ;CX-1=0,則存累加和
MOVAH,4CHINT21HCODEENDS ENDSTARTNYCX=0?AL清0送結(jié)果取數(shù)累加修改地址指針、計數(shù)值減1開始結(jié)束例3:在字節(jié)數(shù)組中找出第一個非0的數(shù)據(jù),并將其下標(biāo)存入RES單元,假設(shè)其下標(biāo)值小于10DATASEGMENTARRDB0,0,38H,46H DB89H,67H,0H,92HCNTEQU$–ARRRESDW?DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,CNT;循環(huán)次數(shù)
MOVDI,-1;數(shù)組下標(biāo)從0開始AGAIN:INCDICMPARR[DI],0;和0比較
LOOPZAGAIN;為0且沒比較完,則循環(huán)
JZEXIT;比較完仍為0,轉(zhuǎn)EXITMOVRES,DI;找到了,送下標(biāo)號
EXIT:MOVAH,4CHINT21HCODEENDSENDSTARTNCX=0?YN修改地址指針計數(shù)值減1Y送結(jié)果=0?初始化取數(shù)比較開始結(jié)束例4:在字符串中從前向后查找空格字符(ASCII碼為20H),找到顯示Y,否則就顯示NDATASEGMENTSTRDB‘ASDFKLIOOP’LENEQU$–STRDATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX MOVCX,LENMOVSI,-1MOVAL,20HNEXT:INCSICMPAL,STR[SI] LOOPNENEXTJNZNFINDMOVDL,’Y’MOVAH,2INT21HJMPEXIT NFIND:MOVDL,’N’MOVAH,2INT21HEXIT:MOVAH,4CHINT21HCODEENDSENDSTARTNYNY取數(shù)=20H?CX=0?顯示‘Y’修改地址指針計數(shù)值減1顯示‘N’初始化開始結(jié)束用計數(shù)器控制循環(huán)例5:已知數(shù)據(jù)塊的長度,統(tǒng)計數(shù)據(jù)塊中正數(shù)和負(fù)數(shù)的個數(shù)DATASEGMENTBUFDB–32,25,36,-18,-64,0,-3COUNTEQU$-BUFPLUSDB?;存放正數(shù)個數(shù)MINUSDB?;存放負(fù)數(shù)個數(shù)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBL,0;負(fù)數(shù)個數(shù)
MOVDL,0;正數(shù)個數(shù)
MOVSI,OFFSETBUF
MOVCX,0;循環(huán)初值
LOP1:MOVAL,[SI];取值CMPAL,0;和0比較
JGENEXT0;大于等于0轉(zhuǎn)移
INCBL;小于0,BL加1JMPNEXT1NEXT0:INCDL ;大于等于0,DL加1NEXT1:INCSI;指針加1INCCX;計數(shù)加1CMPCX,COUNT;比較次數(shù)
JLLOP1;沒結(jié)束,則繼續(xù)
MOVMINUS,BL;存負(fù)數(shù)個數(shù)
MOVPLUS,DL;存正數(shù)個數(shù)
MOVAH,4CHINT21HCODEENDSENDSTART例6:將BUF單元開始的100個字節(jié)存儲單元全部清0DATASEGMENTBUFDB100DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUF;地址指針
MOVCX,64H;計數(shù)初值
LP:MOVBYTEPTR[BX],0;清0 INCBX;地址加1LOOPLP;減1不為0,則繼續(xù)
MOVAH,4CHINT21H CODEENDS ENDSTARTNY內(nèi)存單元清0CX=0?修改指針,計數(shù)值減1初始化開始結(jié)束按問題的條件控制循環(huán)例7:記錄某個字節(jié)存儲數(shù)據(jù)單元中1的個數(shù),并把結(jié)果存入RES中。YNYN=0?取數(shù)CF=0?移位計數(shù)加1開始結(jié)束DATASEGMENTNUMDB75HRESDB?DATAENDS CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AXMOVBL,NUM XORDL,DLAGAIN:TESTBL,0FFHJZNEXTSHRBL,1ADCDL,0JMPAGAINNEXT:MOVRES,DLMOVAH,4CHINT21H CODEENDS ENDSTART按邏輯變量控制循環(huán)例8:在以BUF為起始地址的內(nèi)存中放有若干個字節(jié)型無符號數(shù),假定邏輯變量的長度為一個字節(jié)(其值為10010101
),若它的D0~D7位對應(yīng)著BUF~BUF+7單元內(nèi)容的運算。即某位為0,則將相應(yīng)單元內(nèi)容的最高位求反,其它位不變;而某位為1,則將相應(yīng)單元內(nèi)容之高低四位互換。Y讀數(shù)據(jù)修改地址指針初始化D7求反,其余位不變傳遞處理結(jié)果N變量讀完?YN變量一位=0?數(shù)據(jù)高低四位互換開始結(jié)束SHRCH,1JNCNEXTMOVCL,4ROLAL,CLJMPRESNEXT:XORAL,80HRES:MOV[BX],ALINCBXDECAHJNZLPMOVAH,4CHINT21HCODEENDSENDSTARTDATASEGMENTBUFDB75H,12H,87H,98HDB81H,56H,73H,51HBEQU8CEQU10010101BDATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,BMOVCH,CLEABX,BUFLP:MOVAL,[BX]多重循環(huán)程序設(shè)計應(yīng)用舉例例9:設(shè)在以EXST為首址的存儲區(qū)中依次存放著某考區(qū)245個理科生的七門成績,現(xiàn)要統(tǒng)計每個考生的總成績,并將其存放在該考生單科成績之后的兩個單元首址送SI,學(xué)生數(shù)(外循環(huán)次數(shù))送BL
取數(shù)累加,修改地址,內(nèi)循環(huán)計數(shù)減1SI+1送SI,課程數(shù)(內(nèi)循環(huán)次數(shù))送CX
修改地址指針,指向下一個學(xué)生NY存總分NYBL-1=0?CX-1=0?開始結(jié)束DATA
SEGMENTEXSTDB01,75,82,84,92,78,49,85,00,00 DB02,83,92,63,76,82,58,69,00,00…
DATA
ENDSCODE
SEGMENT
ASSUMECS:CODE,DS:DATA
MOVAX,DATAMOVDS,AX
START:LEASI,EXST ;數(shù)據(jù)表首地址
MOVBL,245
;245個學(xué)生,外循環(huán)次數(shù)
LOP2:MOVCX,7
;七門課成績,內(nèi)循環(huán)次數(shù)XORAX,AX ;清0,存總成績
INCSI
;跳過準(zhǔn)考證號
LOP1:ADDAL,[SI] ;單科成績累加ADCAH,0 ;加進(jìn)位位
INCSI ;修改地址指針
LOOPLOP1
;沒累加完單科成績,則繼續(xù)
MOVWORDPTR[SI],AX;累加完,存總成績
INCSI ;條過存總成績的2個單元INCSIDECBL ;外循環(huán)次數(shù)減1JNZLOP2 ;不為0,則求下個學(xué)生總成績
MOVAH,4CH
INT21HCODE
ENDS
ENDSTART例10:將N個不同的無符號數(shù)a1,a2,...,an由小到大進(jìn)行排序。若每個數(shù)占一個字,則N個數(shù)可定義如下:
ADWa1,a2,a3,...,an。它們的內(nèi)存分配分別為A[0],A[2],A[4
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度停車場排水系統(tǒng)施工合同規(guī)范文本3篇
- 固化劑采購合同6篇
- 編程軟件課程設(shè)計
- 抗腫瘤新藥行業(yè)專題
- 脫甲烷塔課程設(shè)計
- 2024幼兒園招生工作計劃(31篇)
- 算法課的課程設(shè)計
- 線上課程設(shè)計基本要素
- 算數(shù)運算測試java課程設(shè)計
- 藥劑課程設(shè)計報告
- 寒假安全教育主題班會PPT-
- 學(xué)生資助手冊
- (完整版)聚乙烯課件
- 中國雷暴日多發(fā)區(qū)特征及雷電發(fā)展變化
- 20232023山東省高中學(xué)業(yè)水平測試會考題及答案政治
- 獨一味(正式稿2)
- 山西太原晉陽湖總體規(guī)劃城市設(shè)計景觀方案文本
- 干部業(yè)績相關(guān)信息采集表
- 八年級上綜合性學(xué)習(xí) 我們的互聯(lián)網(wǎng)時代 練習(xí)卷(含答案)
- 中西文化概論(第三版)PPT完整全套教學(xué)課件
- 食品批發(fā)銷售記錄制度
評論
0/150
提交評論