版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第7章循環(huán)程序設計涉及到的循環(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是一個地址標號循環(huán)程序的結構DO-WHILE結構控制條件初始化循環(huán)體YN控制條件初始化循環(huán)體YNDO-UNTIL結構初始化:設置循環(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 ;和’$’進行比較
JZSTOP ;相等則結束
INCBL ;否則計數(shù)器加1INCSI ;地址指針加1JMPLOP ;轉回到LOPSTOP:MOVLEN,BL ;存儲字符個數(shù)
MOVAH,4CHINT21HCODEENDS ENDSTARTNY=‘$’?存串長度取串元素置指針、串長度初值為0開始結束串長度加1修改地址指針用專用的循環(huán)指令控制循環(huán)例2:求以BUF為首地址的10個內(nèi)存單元的無符號數(shù)據(jù)和。已知其和小于等于255,將結果存入第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送結果取數(shù)累加修改地址指針、計數(shù)值減1開始結束例3:在字節(jié)數(shù)組中找出第一個非0的數(shù)據(jù),并將其下標存入RES單元,假設其下標值小于10DATASEGMENTARRDB0,0,38H,46H DB89H,67H,0H,92HCNTEQU$–ARRRESDW?DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,CNT;循環(huán)次數(shù)
MOVDI,-1;數(shù)組下標從0開始AGAIN:INCDICMPARR[DI],0;和0比較
LOOPZAGAIN;為0且沒比較完,則循環(huán)
JZEXIT;比較完仍為0,轉EXITMOVRES,DI;找到了,送下標號
EXIT:MOVAH,4CHINT21HCODEENDSENDSTARTNCX=0?YN修改地址指針計數(shù)值減1Y送結果=0?初始化取數(shù)比較開始結束例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’初始化開始結束用計數(shù)器控制循環(huán)例5:已知數(shù)據(jù)塊的長度,統(tǒng)計數(shù)據(jù)塊中正數(shù)和負數(shù)的個數(shù)DATASEGMENTBUFDB–32,25,36,-18,-64,0,-3COUNTEQU$-BUFPLUSDB?;存放正數(shù)個數(shù)MINUSDB?;存放負數(shù)個數(shù)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBL,0;負數(shù)個數(shù)
MOVDL,0;正數(shù)個數(shù)
MOVSI,OFFSETBUF
MOVCX,0;循環(huán)初值
LOP1:MOVAL,[SI];取值CMPAL,0;和0比較
JGENEXT0;大于等于0轉移
INCBL;小于0,BL加1JMPNEXT1NEXT0:INCDL ;大于等于0,DL加1NEXT1:INCSI;指針加1INCCX;計數(shù)加1CMPCX,COUNT;比較次數(shù)
JLLOP1;沒結束,則繼續(xù)
MOVMINUS,BL;存負數(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初始化開始結束按問題的條件控制循環(huán)例7:記錄某個字節(jié)存儲數(shù)據(jù)單元中1的個數(shù),并把結果存入RES中。YNYN=0?取數(shù)CF=0?移位計數(shù)加1開始結束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位對應著BUF~BUF+7單元內(nèi)容的運算。即某位為0,則將相應單元內(nèi)容的最高位求反,其它位不變;而某位為1,則將相應單元內(nèi)容之高低四位互換。Y讀數(shù)據(jù)修改地址指針初始化D7求反,其余位不變傳遞處理結果N變量讀完?YN變量一位=0?數(shù)據(jù)高低四位互換開始結束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)程序設計應用舉例例9:設在以EXST為首址的存儲區(qū)中依次存放著某考區(qū)245個理科生的七門成績,現(xiàn)要統(tǒng)計每個考生的總成績,并將其存放在該考生單科成績之后的兩個單元首址送SI,學生數(shù)(外循環(huán)次數(shù))送BL
取數(shù)累加,修改地址,內(nèi)循環(huán)計數(shù)減1SI+1送SI,課程數(shù)(內(nèi)循環(huán)次數(shù))送CX
修改地址指針,指向下一個學生NY存總分NYBL-1=0?CX-1=0?開始結束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個學生,外循環(huán)次數(shù)
LOP2:MOVCX,7
;七門課成績,內(nèi)循環(huán)次數(shù)XORAX,AX ;清0,存總成績
INCSI
;跳過準考證號
LOP1:ADDAL,[SI] ;單科成績累加ADCAH,0 ;加進位位
INCSI ;修改地址指針
LOOPLOP1
;沒累加完單科成績,則繼續(xù)
MOVWORDPTR[SI],AX;累加完,存總成績
INCSI ;條過存總成績的2個單元INCSIDECBL ;外循環(huán)次數(shù)減1JNZLOP2 ;不為0,則求下個學生總成績
MOVAH,4CH
INT21HCODE
ENDS
ENDSTART例10:將N個不同的無符號數(shù)a1,a2,...,an由小到大進行排序。若每個數(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外勤會計頂崗實習報告合集6篇
- 信息通信網(wǎng)絡運行管理員試(電力通信網(wǎng)絡管理員)高級技師練習試題及答案
- 施工合同范文集錦七篇
- “太陽”說課稿設計
- 2024年標準副食批發(fā)購銷協(xié)議模板版B版
- 老舊廠區(qū)改造的背景與意義
- 2024年度女方出軌婚姻終止協(xié)議書:財產(chǎn)分割及子女監(jiān)護權安排2篇
- 2024年版城市軌道交通建設合同范本
- 2024年指標房買賣合同房產(chǎn)評估及過戶流程范本3篇
- 2024年某科技公司與某廣告公司關于區(qū)塊鏈技術廣告推廣服務的合同
- 自身免疫性肝炎的護理查房
- 《卜算子-黃州定慧院寓居作》理解性默寫(含答案)
- 部編版語文五年級上冊第一單元大單元教學設計
- 肝膿腫健康宣教
- 少先隊大隊輔導員勝任力模型研究
- 人才隊伍建設實施方案
- 德欽縣云嶺鄉(xiāng)、佛山鄉(xiāng)部分村落生活垃圾處置工程環(huán)評報告
- 積極心理學治療手冊
- 制冷車間及冷庫日常隱患排查表
- 寒假安全教育主題班會PPT-
- (完整版)聚乙烯課件
評論
0/150
提交評論