版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章循環(huán)與分支程序設(shè)計學(xué)習(xí)目標(biāo):了解并掌握循環(huán)程序的構(gòu)造方法,尤其是對循環(huán)控制條件的設(shè)置以及可能出現(xiàn)的邊界情況的考慮。掌握起泡排序算法這種多重循環(huán)程序設(shè)計中的常用方法。交換標(biāo)志位的設(shè)置在此算法中更能提高效率。學(xué)會在數(shù)組排序算法中采用折半查找法來提高查找效率。學(xué)會使用跳躍表法實現(xiàn)CASE結(jié)構(gòu)?!?.1循環(huán)程序設(shè)計一、循環(huán)程序的結(jié)構(gòu)形式二、循環(huán)程序設(shè)計三、多重循環(huán)程序設(shè)計一、循環(huán)程序的結(jié)構(gòu)形式結(jié)束初始化控制條件Y循環(huán)體N修改部分先判斷,后循環(huán)一、循環(huán)程序的結(jié)構(gòu)形式初始化循環(huán)體修改部分Y控制條件N結(jié)束先循環(huán),后判斷prognam
segmentassume
cs:prognamstart:movrotate:ch,4movcl,4rolbx,clmoval,blandal,0fhaddal,30hcmpal,3ahjlprintitaddal,7hprintit:mov
dl,almov
ah,2int
21hdec
chjnz
rotatemov
ah,4chint
21hprognam
endsend
start例5.2
在ADDR單元存放著數(shù)Y的地址,試編制一程序把Y中1的個數(shù)存入COUNT單元中開始1的個數(shù)計數(shù)器←0循環(huán)次數(shù)計數(shù)器CX←16Y左移一次CF=1NY1的個數(shù)計數(shù)器+1NCX
←CX-1=0YCOUNT
←1的個數(shù)計數(shù)器結(jié)束
循環(huán)次數(shù)固定,完全由循環(huán)計數(shù)器控制SEGMENTDW
1234HDATAYADDR
COUNT
DATA
CODEDW
YDB
?ENDSSEGMENTASSUME
CS:CODE,DS:DATAMOV
AX,DATAMOV
DS,AXMOV
DL,0MOV
BX,ADDRMOV
AX,[BX]MOV
CX,16START:REPEAT:SHL
AX,1JNC
NEXTINC
DLNEXT:
LOOP
REPEATEXIT0:
MOV
COUNT,DLMOV
AH,4CHINT
21HCODE
ENDS?????????END
START例5.2開始1的個數(shù)計數(shù)器←0循環(huán)次數(shù)計數(shù)器CX←161的個數(shù)計數(shù)器+1結(jié)束NNCX
←CX-1=0YCOUNT
←1的個數(shù)計數(shù)器Y=0NY左移一次YCF=1
Y例5.2SEGMENTDW
1234HDATAYADDR
COUNT
DATA
CODEDW
YDB
?ENDSSEGMENTASSUME
CS:CODE,DS:DATAMOV
AX,DATAMOV
DS,AXMOV
DL,0MOV
BX,ADDRMOV
AX,[BX]MOV
CX,16START:REPEAT:?????????CMP
AX,0JZ
EXIT0SHL
AX,1JNC
NEXTINC
DLCODE
ENDSEND
START例5.2NEXT:
LOOJPMRPERPEPAETAT
EXIT0:
MOV
COUNT,DLMOV
AH,4CHINT
21H例在附加段中,有一個首地址為LIST和未經(jīng) 排序的字?jǐn)?shù)組。在數(shù)組的第一個字中,存放 著該數(shù)組的長度,數(shù)組的首地址已存放在DI 寄存器中,AX寄存器中存放著一個數(shù)。要求 編制一程序:在數(shù)組中查找該數(shù),如果找到 此數(shù),則把它從數(shù)組中刪除。循環(huán)程序設(shè)計del_ul
proc
nearcldpush
dimov
cx,es:[di]add
di,2repne
scaswje
deletepop
dijmp
short
exitdelete:jcxz
dec_cntnext_el:mov
bx,ex:[di]mov
es:[di-2],bxadd
di,2loop
next_eldec_cnt:pop
didec
word
ptr
es:[di]exit:retdel_up
endp例5.4將正數(shù)N插入一個已升序排列的字?jǐn)?shù)組的正確位置該數(shù)組的首地址和末地址分別為ARRAY_
HEAD和ARRAY_
END,其中所有的數(shù)均為正數(shù)。解法一:從數(shù)組的尾部開始比較N較大,則在比較對象后插入,結(jié)束循環(huán)N較小,則把比較對象及其后元素后移一 個字循環(huán)結(jié)束的控制:?執(zhí)行插入操作后結(jié)束循環(huán)若N比所有元素都小,掃描整個數(shù)組后仍無法結(jié)束循環(huán),將-1加 在數(shù)組前可解決該問題32DHE
?
E-
A2D3,
37,
49,N15,2?
-
23?,
3
37,
49,15,2
2,將N放在K的位置修改地址K后移一個字單元結(jié)束開始(ARRAY_HEAD-2)←-1初始化變址寄存器SIYK<=NN例5.4Datareaxsegmentdw
?Array_head
dw3,5,15,23,37,49dw
105dw
32endssegmentArray_endnDatareaProgramassumecs:program,ds:datareaStart:mov
ax,datareamov
ds,axmov
ax,n???mov
array_head-2,mov
si,0??Insert:
mov??array_end[si+2],axmov
ah,4chint
21hProgram
ends?end
start例5.4Comp:?cmpovarbrxa,ya_rernady[_sein]d,[asxi]?
cmp
bjxl,eaixnsert?
jle
imnosvebrxt,array_end[movarray_end[si+2],bxsub
si,2jmp
comp例5.4將正數(shù)N插入一個已升序排列的字?jǐn)?shù)組的正確位置。該數(shù)組的首地址和末地址分別為ARRAY_
HEAD和
ARRAY_
END,其中所有的數(shù)均為正數(shù)。解法二:從數(shù)組的頭部開始比較N較小,則在比較對象前插入,結(jié)束循環(huán)N較大,則把比較對象及其前元素前移一循環(huán)結(jié)束的控制:?個字可掃描整個數(shù)組,循環(huán)次數(shù)為數(shù)組元素個數(shù)執(zhí)行插入操作后結(jié)束循環(huán)若N比所有元素都小,形成新的頭;若N比所有元素都大,則被 置于尾部例5.4
例5設(shè)有數(shù)組X(X1,…,X10)和Y(Y1,…,Y10),編程計算數(shù)組Z
(Z1,…,Z10),其中:Z1
=
X1
+
Y1
Z2
=
X2
+
Y2
Z3
=
X3
-
Y3
Z4
=
X4
-
Y4
Z5
=
X5
-
Y5
Z6
=
X6
+
Y6
Z7
=
X7
-
Y7
Z8
=
X8
-
Y8
Z9
=
X9
+
Y9Z10
=
X10
+
Y10datarea
segmentx
dwx1,x2,x3,x4,x5,x6.x7,x8,x9,x10y
dwy1,y2,y3,y4,y5,y6,y7,y8,y9,y10logic_rule
dw
00dchdatareaprognamassumeendssegmentcs:prognam,ds:datareastart:mov
ax,datareamov
ds,axmov
bx,0mov
cx,10mov
dx,logic_rulenext:movshrz
dw
z1,z2,z3,z4,z5,z6,z7,z8,z9,z10
jcax,x[bx]dx,1subtractax,y[bx]addjmp
short
resultsubtract:subresult:movaddax,y[bx]z[bx],axbx,2loop
nextmovintah,4ch21hprognamendsend
start例5.5試編制一程序:從鍵盤輸入一行字
符,要求第一個鍵入的字符必須是空格符, 如不是,則退出程序;如是,則開始接收
鍵入的字符并順序存放在首地址為BUFFER的緩沖區(qū)中(空格符不存入),直到接收到第二個空格符時退出程序。datareabufferflagdatareaprognamassumesegmentdb
80
dup(?)db
?endssegmentcs:prognam,ds:datareastart:mov
ax,datareamov
ds,axlea
bx,buffermov
flag,0next:
movintah,0121htest
flag,01hjnz
followcmp
al,20hjnz
exitmov
flag,1jmp
nextfollow:
cmp
al,20hjz
exit
mov
[bx],alinc
bxjmp
nextexit:
mov
ah,4chint
21hprognam
endsend
start三、多重循環(huán)程序設(shè)計例5.7有一個首地址為A的N字?jǐn)?shù)組,請編制程序使該數(shù)組中的數(shù)按照從大到小的次序整序?冒泡法從第一個元素開始,依次對相鄰的兩個元素進(jìn)行比較,使前一個元素不大于后一個元素;將所有元素比較完之后,最大的元素排到了最后;然后,除掉最后一個元素之外的元素依上述方法再進(jìn)行比較,得到次大的元素排在后面;如此重復(fù),直至完成就實現(xiàn)元素從小到大的排序?這需要一個雙重循環(huán)程序結(jié)構(gòu)冒泡法的排序序號數(shù)比
較遍
數(shù)123413232161582851615815316158161641583232325885
溫馨提示
- 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建筑項目銅門定制及安裝工程合同
- 2024年香港地區(qū)離婚協(xié)議模板版
- 2024年版杭州婚房房產(chǎn)分割協(xié)議書
- 2024年版簡易工程施工承包合同范本版B版
- 2025版勞動人事爭議仲裁院勞動爭議仲裁院爭議案件調(diào)解與仲裁員監(jiān)督合同2篇
- 2025版煙酒電商平臺合作協(xié)議細(xì)則3篇
- 2023年中空玻璃設(shè)備項目融資計劃書
- 課題申報書:代際傳遞視角下兒童期情感忽視對小學(xué)生心理健康的影響及其干預(yù)措施研究
- 2025年度股東股權(quán)變更協(xié)議參考范本3篇
- 課題申報書:大學(xué)生學(xué)習(xí)過程數(shù)字化建模與評估研究
- 小學(xué)數(shù)學(xué)綜合素質(zhì)評價專項方案
- 石家莊藁城市2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)測試卷(含答案)
- 模型預(yù)測控制現(xiàn)狀與挑戰(zhàn)
- 福建省漳州市2023~2024學(xué)年高一上學(xué)期期末質(zhì)量檢測地理試題(含答案解析)
- 青春逢盛世奮斗正當(dāng)時
- MOOC創(chuàng)新創(chuàng)業(yè)與管理基礎(chǔ)(東南大學(xué))
- 2023年經(jīng)濟(jì)地理學(xué)李小建課后答案
- 中職課程思政說課比賽 課件
- 陳州的勵志故事
- 公司報價管理辦法
- 農(nóng)貿(mào)市場安全生產(chǎn)風(fēng)險分級管控和隱患排查治理雙體系方案全套資料2019-2020完整實施方案模板
評論
0/150
提交評論