![循環(huán)與分支程序設(shè)計(jì)課件_第1頁(yè)](http://file4.renrendoc.com/view/b7ffb5ac31f79bb61120e62c96ea8ab9/b7ffb5ac31f79bb61120e62c96ea8ab91.gif)
![循環(huán)與分支程序設(shè)計(jì)課件_第2頁(yè)](http://file4.renrendoc.com/view/b7ffb5ac31f79bb61120e62c96ea8ab9/b7ffb5ac31f79bb61120e62c96ea8ab92.gif)
![循環(huán)與分支程序設(shè)計(jì)課件_第3頁(yè)](http://file4.renrendoc.com/view/b7ffb5ac31f79bb61120e62c96ea8ab9/b7ffb5ac31f79bb61120e62c96ea8ab93.gif)
![循環(huán)與分支程序設(shè)計(jì)課件_第4頁(yè)](http://file4.renrendoc.com/view/b7ffb5ac31f79bb61120e62c96ea8ab9/b7ffb5ac31f79bb61120e62c96ea8ab94.gif)
![循環(huán)與分支程序設(shè)計(jì)課件_第5頁(yè)](http://file4.renrendoc.com/view/b7ffb5ac31f79bb61120e62c96ea8ab9/b7ffb5ac31f79bb61120e62c96ea8ab95.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章 循環(huán)與分支程序設(shè)計(jì)第1頁(yè),共47頁(yè)。7/29/2022ch5教學(xué)重點(diǎn)1. 掌握基本程序結(jié)構(gòu)順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)及其匯編語(yǔ)言程序設(shè)計(jì)2. 熟悉常見(jiàn)程序設(shè)計(jì)問(wèn)題:數(shù)據(jù)范圍判斷(09、AZ、az)字母大小寫(xiě)轉(zhuǎn)換;字符串傳送、比較等操作求最大最小值、數(shù)據(jù)求和、統(tǒng)計(jì)字符個(gè)數(shù)數(shù)組排序,查找,插入,刪除第2頁(yè),共47頁(yè)。7/29/2022ch5 (3)分支結(jié)構(gòu) (4) 子程序結(jié)構(gòu) 程序結(jié)構(gòu)(5)復(fù)合結(jié)構(gòu):多種程序結(jié)構(gòu)的組合 (1) 順序結(jié)構(gòu) (2) 循環(huán)結(jié)構(gòu)第3頁(yè),共47頁(yè)。7/29/2022ch5 編制匯編語(yǔ)言程序的步驟(1) 分析題意,確定算法(2) 根據(jù)算法畫(huà)出程序框圖(3) 根據(jù)框圖
2、編寫(xiě)程序(4) 上機(jī)調(diào)試程序第4頁(yè),共47頁(yè)。7/29/2022ch55.0 順序程序設(shè)計(jì)順序程序完全按指令書(shū)寫(xiě)的前后順序執(zhí)行每一條指令,是最基本、最常見(jiàn)的程序結(jié)構(gòu)一般純粹的順序結(jié)構(gòu)的程序設(shè)計(jì)較少。第5頁(yè),共47頁(yè)。7/29/2022ch5例data segmentXdw 5Ydw 6Zdw 7Wdw ?data endscode segmentmain proc far assume cs:code,ds:datastart: push ds xor ax,ax push ax mov ax,data mov ds,ax mov ax,X add ax,Y add ax,Z mov W,ax
3、 retmain endpcode ends end startWX+Y+Z第6頁(yè),共47頁(yè)。7/29/2022ch5例 代碼轉(zhuǎn)換;查表法,實(shí)現(xiàn)一位16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼顯示data segment ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h ;09的ASCII碼 db 41h,42h,43h,44h,45h,46h;AF的ASCII碼 hex db 0bh ;任意設(shè)定一個(gè)待轉(zhuǎn)換的一位16進(jìn)制數(shù)data endscode segmentmain proc far 第7頁(yè),共47頁(yè)。7/29/2022ch5例 代碼轉(zhuǎn)換 assum
4、e cs:code,ds:datastart: push ds xor ax,ax push ax mov ax,data mov ds,ax ;- mov bx,offset ASCII;BX指向ASCII碼表mov al,hex;AL取得一位16進(jìn)制數(shù),正是ASCII碼表中位移第8頁(yè),共47頁(yè)。7/29/2022ch5 and al,0fh;只有低4位是有效的,高4位清0 xlat ;換碼:ALDS:BXALmov dl,al;入口參數(shù):DLALmov ah,2;02號(hào)DOS功能調(diào)用int 21h;顯示一個(gè)ASCII碼字符retmain endpcode ends end start例 代
5、碼轉(zhuǎn)換第9頁(yè),共47頁(yè)。7/29/2022ch5;查表法,實(shí)現(xiàn)一位16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼顯示data segment ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h ;09的ASCII碼 db 41h,42h,43h,44h,45h,46h;AF的ASCII碼 hex db 0bh ;任意設(shè)定一個(gè)待轉(zhuǎn)換的一位16進(jìn)制數(shù)data endscode segmentmain proc farassume cs:code,ds:datastart: push ds xor ax,ax push ax mov ax,data mov ds,a
6、x ;- mov bx,offset ASCII;BX指向ASCII碼表mov al,hex;AL取得一位16進(jìn)制數(shù),正是ASCII碼表中位移and al,0fh;只有低4位是有效的,高4位清0 xlat ;換碼:ALDS:BXALmov dl,al;入口參數(shù):DLALmov ah,2;02號(hào)DOS功能調(diào)用int 21h;顯示一個(gè)ASCII碼字符retmain endpcode ends end start第10頁(yè),共47頁(yè)。7/29/2022ch55.1 循環(huán)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)一般是根據(jù)某一條件判斷為真或假來(lái)確定是否重復(fù)執(zhí)行循環(huán)體循環(huán)指令和轉(zhuǎn)移指令可以實(shí)現(xiàn)循環(huán)控制第11頁(yè),共47頁(yè)。7/29/
7、2022ch5 循環(huán)程序結(jié)構(gòu)形式DO-WHILE 結(jié)構(gòu) DO-UNTIL 結(jié)構(gòu)控制條件初始化循環(huán)體YN控制條件初始化循環(huán)體YN第12頁(yè),共47頁(yè)。7/29/2022ch5初始化: 設(shè)置循環(huán)的初始狀態(tài)循環(huán)體: 循環(huán)的工作部分及修改部分控制條件:計(jì)數(shù)控制(LOOP) 特征值控制(LOOPZ/LOOPNZ/ 條件跳轉(zhuǎn)指令) 循環(huán)程序結(jié)構(gòu)說(shuō)明第13頁(yè),共47頁(yè)。7/29/2022ch5例:把 BX 中的二進(jìn)制數(shù)以十六進(jìn)制的形式顯示在屏幕上 如:1011 0010 1111 1010 B B2FAH BX1234第14頁(yè),共47頁(yè)。7/29/2022ch5分析:(1)程序結(jié)構(gòu)的確定 由題意應(yīng)該把BX的內(nèi)
8、容從左到右每4位為一組在屏幕上顯示出來(lái),顯然這可以用循環(huán)結(jié)構(gòu)來(lái)完成,每次顯示一個(gè)十六進(jìn)制數(shù)位,因而循環(huán)次數(shù)是已知的,計(jì)數(shù)值為4。 (2)循環(huán)體的構(gòu)成(算法確定) 循環(huán)體應(yīng)該包括:二進(jìn)制到所顯示字符的ASCII之間的轉(zhuǎn)換,以及每個(gè)字符的顯示。 需要了解相關(guān)知識(shí):字符和其ASCII碼之間的關(guān)系? “0”“9” 30H39H, “A”F” 41H5AH如何顯示一個(gè)字符?(a)將顯示字符的ASCII碼放入DL寄存器;(b)將AH的內(nèi)容置為2(功能號(hào));(c)執(zhí)行INT 21H(DOS 功能調(diào)用)。第15頁(yè),共47頁(yè)。7/29/2022ch5(3)循環(huán)控制條件分析因?yàn)檠h(huán)次數(shù)已知,可以使用LOOP指令實(shí)
9、現(xiàn),但是必須注意:由于循環(huán)移位指令中使用CL寄存器作為移位次數(shù)寄存器,而LOOP 指令的循環(huán)次數(shù)隱含在CX寄存器中,因此,必須注意這兩者之間的沖突。除了可以使用LOOP指令之外,還可以使用條件跳轉(zhuǎn)指令來(lái)實(shí)現(xiàn)。LOOP AGAIN DEC 計(jì)數(shù)器 JNZ AGAIN第16頁(yè),共47頁(yè)。7/29/2022ch5 mov cx, 4 ;初始化rotate: push cx mov cl, 4 rol bx, cl mov al, bl and al, 0fh add al, 30h ; 09 ASCII 30H39H cmp al, 3ah jl printit add al, 7h ; AF AS
10、CII 41H46Hprintit: mov dl, al mov ah, 2 int 21h pop cx loop rotate 方法1 (LOOP)第17頁(yè),共47頁(yè)。7/29/2022ch5 mov ch, 4 ;初始化rotate: mov cl, 4 rol bx, cl mov al, bl and al, 0fh add al, 30h ; 09 ASCII 30H39H cmp al, 3ah jl printit add al, 7h ; AF ASCII 41H46Hprintit: mov dl, al mov ah, 2 int 21h dec ch jnz rota
11、te 方法2 (條件跳轉(zhuǎn)指令)第18頁(yè),共47頁(yè)。7/29/2022ch5例:將正數(shù) n 插入一個(gè)已整序的正數(shù)字?jǐn)?shù)組。該數(shù)組的首地址和末地址分別為ARRAY_HEAD, ARRAY_END。分析:題目要求在已經(jīng)排好序的正數(shù)數(shù)組中插入一個(gè)正數(shù)n,因此,解決問(wèn)題的關(guān)鍵是找到要出入正數(shù)n的位置。需要考慮如下問(wèn)題?(1)如何找到插入位置及軟件實(shí)現(xiàn)?(2)如何插入正數(shù)n及軟件實(shí)現(xiàn)?(3)數(shù)組邊界問(wèn)題考慮?第19頁(yè),共47頁(yè)。7/29/2022ch5由于數(shù)組已經(jīng)排好序,因此可以將正數(shù)n依次和數(shù)組中的數(shù)進(jìn)行比較,比較有個(gè)方向問(wèn)題,這里假設(shè)數(shù)組在存儲(chǔ)單元中按地址遞增的方向從小到大依次存放。不妨從大數(shù)開(kāi)始進(jìn)行比
12、較,當(dāng)遇到第一個(gè)比n小的數(shù),記下該位置,該位置就是要插入n 的位置。找到出入位置后,如何在不破壞原來(lái)數(shù)據(jù)順序基礎(chǔ)上插入n呢?打個(gè)比方:9個(gè)同學(xué)按高矮依次做在110號(hào)椅子上,現(xiàn)在第10個(gè)同學(xué)按照高矮要做在第5號(hào)椅子上,那么如何空出第5號(hào)椅子呢,但仍然保持高矮次序?只要9號(hào)同學(xué)移到10號(hào), 9 10, 8 9, 7 8, 6 7, 5 6就可以了。同樣,我們可以如法炮制,數(shù)組中將要插入數(shù)n位置前的數(shù)依次前移一個(gè)位置(兩個(gè)字節(jié)),空出要插入位置,將n放入即可。在插入數(shù)時(shí),可能遇到特殊情況,即數(shù)n比數(shù)組中所有的數(shù)都要大,或者小。若比所有的數(shù)都大,就不需要移動(dòng)原數(shù)組中的數(shù),直接插入即可;若比所有的數(shù)都小
13、,就將數(shù)n放在數(shù)組的首位置。第20頁(yè),共47頁(yè)。7/29/2022ch5 很顯然,查找位置和空出位置的過(guò)程就是循環(huán)比較的過(guò)程,因此采用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn),那么,循環(huán)條件如何確定呢?其中一種比較容易想到循環(huán)條件就是:數(shù)組長(zhǎng)度(或數(shù)組首地址)及Khigh,則查找失敗,置CF=1,退出程序。否則,計(jì)算中點(diǎn)mid(low+high)/2;(3)k與中點(diǎn)元素rmid比較。若k=rmid,則查找成功,程序結(jié)束;若krmid,則轉(zhuǎn)(5);(4)低半部分查找,highmid-1,返回(2),繼續(xù)查找;(5)高半部分查找,lowmid+1,返回(2),繼續(xù)查找。第38頁(yè),共47頁(yè)。7/29/2022ch5 lea
14、di, array mov ax, number ;要查找數(shù) cmp ax, di+2 ; (ax)與第一個(gè)元素比較 ja chk_last lea si, di+2 je exit ; (ax)第一個(gè)元素,找到退出 stc jmp exit ; (ax)最后一個(gè)元素,未找到退出算法第39頁(yè),共47頁(yè)。7/29/2022ch5compare: cmp ax, bx+si je exit ja higher dec cx mov high_idx, cx jmp midhigher: inc cx mov low_idx, cx jmp midno_match: stcexit: search:
15、 mov low_idx, 1 mov bx, di ;個(gè)數(shù) mov high_idx, bx mov bx, dimid: mov cx, low_idx mov dx, high_idx cmp cx, dx ja no_match add cx, dx shr cx, 1 mov si, cx shl si, 1第40頁(yè),共47頁(yè)。7/29/2022ch5(3) 地址跳躍表(值與地址有對(duì)應(yīng)關(guān)系的表)例:根據(jù) AL 寄存器中哪一位為 1(從低位到高位), 把程序轉(zhuǎn)移到 8 個(gè)不同的程序分支branch_table dw routine1 dw routine2 dw routine3 dw
16、 routine4 dw routine5 dw routine6 dw routine7 dw routine8第41頁(yè),共47頁(yè)。7/29/2022ch5 cmp al, 0 ;AL為邏輯尺 je continue lea bx, branch_tableL: shr al, 1 ;邏輯右移 jnc add1 jmp word ptr bx ;段內(nèi)間接轉(zhuǎn)移add1: add bx, type branch_table ;add bx,2 jmp Lcontinue: routine1: routine2: (寄存器間接尋址)第42頁(yè),共47頁(yè)。7/29/2022ch5(寄存器相對(duì)尋址) c
17、mp al, 0 je continue mov si, 0 L: shr al, 1 ;邏輯右移 jnc add1 jmp branch_tablesi ;段內(nèi)間接轉(zhuǎn)移add1: add si, type branch_table jmp Lcontinue: routine1: routine2: 第43頁(yè),共47頁(yè)。7/29/2022ch5(基址變址尋址) cmp al, 0 je continue lea bx, branch_table mov si, 7 * type branch_table mov cx, 8L: shl al, 1 ;邏輯左移 jnc sub1 jmp word ptr bxsi ;段內(nèi)間接轉(zhuǎn)移sub1: sub si, type branch_table ;(si)-2 loop Lcontinue: routine1: routine2: 第44頁(yè),共47頁(yè)。7/29/2022ch5 試編一程序,求三個(gè)帶符號(hào)字?jǐn)?shù)據(jù)中的最大值,并將最大值存入MAX字單元中。設(shè) 三個(gè)帶符號(hào)數(shù)分別在三個(gè)字變量X、Y、Z中存儲(chǔ)。大家做一個(gè)題目第45頁(yè),共47頁(yè)。7/29/2022ch5程序如下:DATASEGMENTX DW 00ABHY DW 5Z DW 200MAXDW ?DATAENDSCODESEG
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年沙錘行業(yè)深度研究分析報(bào)告
- 2025年七寶山四季香酒行業(yè)深度研究分析報(bào)告
- 2025年度擔(dān)保合同是否屬于單務(wù)合同的法律效力研究
- 2017農(nóng)村低保申請(qǐng)書(shū)范文
- 2025年中國(guó)烏雞白鳳丸市場(chǎng)競(jìng)爭(zhēng)格局及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025年度建筑鋼筋質(zhì)量檢測(cè)與認(rèn)證服務(wù)合同
- 2025年度新型城鎮(zhèn)化建筑材料運(yùn)輸服務(wù)協(xié)議
- 2025年度和中介簽租賃合同范本:租賃合同糾紛調(diào)解服務(wù)協(xié)議
- 2025基因檢測(cè)技術(shù)培訓(xùn)與市場(chǎng)拓展服務(wù)合同
- 2025年度城市地下綜合管廊建設(shè)項(xiàng)目招標(biāo)投標(biāo)服務(wù)合同
- 高中英語(yǔ)新課程標(biāo)準(zhǔn)解讀課件
- 骨髓增生異常綜合征教學(xué)查房
- DBJ15 31-2016建筑地基基礎(chǔ)設(shè)計(jì)規(guī)范(廣東省標(biāo)準(zhǔn))
- 2023年江蘇省鹽城市中考數(shù)學(xué)試卷及答案
- 2024新高考英語(yǔ)1卷試題及答案(含聽(tīng)力原文)
- G -B- 43068-2023 煤礦用跑車(chē)防護(hù)裝置安全技術(shù)要求(正式版)
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 2024年4月浙江省00015英語(yǔ)二試題及答案含評(píng)分參考
- 2024年注冊(cè)安全工程師考試題庫(kù)【含答案】
- 遼寧營(yíng)口面向2024大學(xué)生退役士兵專(zhuān)考專(zhuān)招(95人)高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 2024年4月自考00604英美文學(xué)選讀試題及答案含評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論