順序分支程序設(shè)計實用教案

上傳人:牛*** 文檔編號:74094922 上傳時間:2022-04-12 格式:PPTX 頁數(shù):37 大?。?0.65MB
收藏 版權(quán)申訴 舉報 下載
順序分支程序設(shè)計實用教案_第1頁
第1頁 / 共37頁
順序分支程序設(shè)計實用教案_第2頁
第2頁 / 共37頁
順序分支程序設(shè)計實用教案_第3頁
第3頁 / 共37頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《順序分支程序設(shè)計實用教案》由會員分享,可在線閱讀,更多相關(guān)《順序分支程序設(shè)計實用教案(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第第6章微型章微型(wixng)計算機計算機的程序設(shè)計的程序設(shè)計6.1程序設(shè)計步驟(bzhu)1376.2簡單程序1386.3分支程序1406.4循環(huán)程序1436.5子程序1466.6查表程序150第1頁/共37頁第一頁,共37頁。匯編語言(hu bin y yn)程序設(shè)計歸納如下7個步驟:(1) 分析問題: 分析問題就是全面理解問題,要把解決問題所需條件、原始數(shù)據(jù)、輸入和輸出信息、運行速度要求、運算精度要求和結(jié)果形式(xngsh)等搞清楚。(2) 建立數(shù)學(xué)模型: 在對問題全面理解后,需要建立數(shù)學(xué)模型,這是把問題向計算機處理方式轉(zhuǎn)化的第1步驟。建立數(shù)學(xué)模型是把問題數(shù)學(xué)化、公式化第2頁/共37頁

2、第二頁,共37頁。(3) 確定算法: 建立數(shù)學(xué)模型后,許多情況下還不能直接進行程序設(shè)計,需要確定符合計算機運算的算法。 計算機的算法比較靈活,一般要優(yōu)選邏輯簡單、運算速度快、精度高的算法用于程序設(shè)計;此外,還要考慮占用內(nèi)存空間小、編程容易等特點。(4) 繪制程序流程圖: 程序流程圖是用箭頭線段、框圖及菱形(ln xn)圖等繪制的一種圖。用它能夠把程序內(nèi)容直接描述出來,第3頁/共37頁第三頁,共37頁。(5) 內(nèi)存空間分配: 匯編語言的重要特點之一是能夠直接用機器指令或偽指令為數(shù)據(jù)或代碼程序分配內(nèi)存空間。 86系列存儲器結(jié)構(gòu)是分段的,如代碼段、數(shù)據(jù)段、堆棧段或附加段,在程序設(shè)計時要考慮(kol)

3、分段結(jié)構(gòu),(6) 編制程序與靜態(tài)檢查: 編制程序就是按計算機語法規(guī)定書寫計算機解決問題的過程。編制程序首先關(guān)心的還是程序結(jié)構(gòu),它應(yīng)是模塊化和通用子程序結(jié)構(gòu),程序的結(jié)構(gòu)要層次簡單、清楚、易讀、易維護為好。第4頁/共37頁第四頁,共37頁。(7) 程序調(diào)試(實驗): 程序調(diào)試是程序設(shè)計最后一步,也是非常重要的一步。沒有調(diào)試過的程序,很難保證程序無錯誤,程序調(diào)試是不可缺省的。 例如在編輯、匯編、連接或用調(diào)試軟件(如DEBUG)調(diào)試時都可以(ky)發(fā)現(xiàn)錯誤并設(shè)法修改程序。第5頁/共37頁第五頁,共37頁。6.2 順序程序設(shè)計(shj) 沒有分支(fnzh)、循環(huán)等轉(zhuǎn)移指令的程序,會按指令書寫的前后順利

4、依次執(zhí)行,這就是順序程序 順序結(jié)構(gòu)是最基本的程序結(jié)構(gòu) 完全采用順序結(jié)構(gòu)編寫的程序并不多見第6頁/共37頁第六頁,共37頁?!纠?.1】字加法(jif)用數(shù)據(jù)運算指令,對兩個(lin )16位數(shù)做加法運算。這兩個(lin )數(shù)從地址10050H開始連續(xù)存放,低位在小地址一端,結(jié)果放在這兩個(lin )數(shù)之后。(1) 分析題目:它是一個16位數(shù)相加的問題。在用加法指令時,必須要考慮低8位和低8位相加后產(chǎn)生的進位問題。(2) 根據(jù)86系列指令系統(tǒng),可以直接對累加器AX做字操作,但在低位相加后,會影響標志寄存器的進位位CF,所以,要用帶進位的加法指令。第7頁/共37頁第七頁,共37頁。流程圖第8頁/共

5、37頁第八頁,共37頁。程序(chngx)MOVAX,1000HMOVDS,AX ; DS1000HMOVSI,50H ; 被加數(shù)指針SI50HMOVDI,52H ; 加數(shù)指針DI52HMOVBX,54H; 和的指針BX54HCLC ; 清CFXORAX,AX ; 清AX冗余(rn y)MOVAX,SI ; 取一個字到AXADCAX,DI ; AXAX+DI+CFMOVBX,AX ; 存一個字到BXHLT ; 暫停第9頁/共37頁第九頁,共37頁?!纠?.2】拆字節(jié)(z ji) 將內(nèi)存(10050)單元的內(nèi)容拆成兩段,每段4位,并將它們分別(fnbi)存入內(nèi)存(10051)和(10052)單元

6、。 即(10050)單元中的低4位放入(10051)的低4位,(10050)單元中的高4位放入(10052)的低4位,而(10051)和(10052)的高4位均為零。第10頁/共37頁第十頁,共37頁。流程圖第11頁/共37頁第十一頁,共37頁。MOV AX, 1000HMOV DS,AXMOV SI, 50H ;需拆字節(jié)的指針MOV AL,SIAND AL,0FH ;高4位清0MOV SI+1,AL ;保存(bocn)MOV AL,SIMOV CL,4SHR AL,CL ;高4位移到低4位MOV SI+2,AL ;保存(bocn)第12頁/共37頁第十二頁,共37頁。補充例題(lt):查表程

7、序采用查表法,實現(xiàn)(shxin)一位16進制數(shù)轉(zhuǎn)換為ASCII碼顯示第13頁/共37頁第十三頁,共37頁。例 數(shù)據(jù)(shj)段、代碼段 ;數(shù)據(jù)段ASCIIdb 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;對應(yīng)0 9的ASCII碼db 41h,42h,43h,44h,45h,46h ;對應(yīng)A F的ASCII碼hexdb 04h,0bh ;假設(shè)(jish)兩個數(shù)據(jù);代碼段mov bx,offset ASCII ;BX指向ASCII碼表mov al,hex ;AL取得一位16進制數(shù) ;恰好就是ASCII碼表中的位移and al,0fh ;只有低4位是有效的,高4

8、位清0Xlat ;換碼:ALDS:BXALXLAT第14頁/共37頁第十四頁,共37頁。例 代碼段(續(xù))mov dl,al;入口參數(shù)(cnsh):DLALmov ah,2;02號DOS功能調(diào)用int 21h;顯示一個ASCII碼字符mov al,hex+1;轉(zhuǎn)換并顯示下一個數(shù)據(jù)and al,0fhxlatmov dl,almov ah,2int 21hXLAT第15頁/共37頁第十五頁,共37頁。chaobiao.asm源程序stack segment stackdb 100 dup(?)stack endsdata segment ;數(shù)據(jù)段ASCII db 30h,31h,32h,33h,3

9、4h,35h,36h,37h,38h,39h ;對應(yīng)(duyng)0 9的ASCII碼db 41h,42h,43h,44h,45h,46h ;對應(yīng)(duyng)A F的ASCII碼hexdb 04h,0bh ;假設(shè)兩個數(shù)據(jù)data endscode segment ;代碼段assume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax第16頁/共37頁第十六頁,共37頁。mov bx,offset ASCII ;BX指向ASCII碼表mov al,hex ;AL取得一位16進制數(shù) ;恰好就是ASCII碼表中的位移and al,0fh ;只有

10、低4位是有效(yuxio)的,高4位清0Xlat ;換碼:ALDS:BXALmov dl,al;入口參數(shù):DLALmov ah,2;02號DOS功能調(diào)用int 21h ;顯示一個ASCII碼字符mov al,hex+1 ;轉(zhuǎn)換并顯示下一個數(shù)據(jù)and al,0fhxlatmov dl,almov ah,2int 21hmov ax,4c00hint 21h ;返回;返回(fnhu)操作操作系統(tǒng)系統(tǒng)code endsend start第17頁/共37頁第十七頁,共37頁。6.3 分支(fnzh)程序設(shè)計 分支程序根據(jù)條件是真或假決定執(zhí)行與否 判斷的條件是各種指令,如CMP、TEST等執(zhí)行后形成的狀

11、態(tài)標志 轉(zhuǎn)移指令Jcc和JMP可以(ky)實現(xiàn)分支控制 分支結(jié)構(gòu)有 單分支結(jié)構(gòu) 雙分支結(jié)構(gòu) 多分支結(jié)構(gòu)第18頁/共37頁第十八頁,共37頁。Jcc指令(zhlng)的分類(P133 表) Jcc指令不影響標志,但要利用標志(表2-4) 根據(jù)利用的標志位不同(b tn),分成三種情況: 判斷單個標志位狀態(tài) 比較無符號數(shù)高低(above, belowe) 比較有符號數(shù)大小(greater, less) Jcc指令實際雖然(surn)只有16條,但卻有30個助記符 采用多個助記符,目的是為了方便記憶和使用第19頁/共37頁第十九頁,共37頁。1、單分支(fnzh)結(jié)構(gòu) 條件成立跳轉(zhuǎn),否則順序(shn

12、x)執(zhí)行分支語句體 注意選擇正確的條件轉(zhuǎn)移指令和轉(zhuǎn)移目標地址補充(bchng)例:求絕對值第20頁/共37頁第二十頁,共37頁。計算(j sun)AX中有符號數(shù)的絕對值cmp ax,0jge nonneg;條件滿足(AX0),轉(zhuǎn)移neg ax;條件不滿足,求補nonneg: mov result,ax ;保存(bocn)結(jié)果;不恰當?shù)姆种?fnzh)(fnzh)cmp ax,0cmp ax,0jl yesnegjl yesneg;條件滿足(AXAX0 0),轉(zhuǎn)移jmp nonnegjmp nonnegyesneg:yesneg:neg axneg ax;條件滿足,求補nonneg:nonneg

13、:mov result,axmov result,ax;保存結(jié)果第21頁/共37頁第二十一頁,共37頁。2、雙分支(fnzh)結(jié)構(gòu)條件(tiojin)成立跳轉(zhuǎn)執(zhí)行第2個分支語句體,否則順序執(zhí)行第1個分支語句體注意第1個分支體后一定要有一個JMP指令跳到第2個分支體后補充(bchng)例:顯示BX的最高位第22頁/共37頁第二十二頁,共37頁。顯示(xinsh)BX的最高位shl bx,1;BX最高位移入CF標志jc one;CF1,即最高位為1,轉(zhuǎn)移(zhuny)mov dl,30h;CF0,即最高位為0:DL30H0jmp two;一定要跳過另一個分支體one:mov dl,31h;DL 3

14、1H1two:mov ah,2int 21h;顯示可以(ky)用JNC替換JC第23頁/共37頁第二十三頁,共37頁。顯示(xinsh)BX的最高位(續(xù))shl bx,1;BX最高位移入CF標志(biozh)jnc one;CF0,即最高位為0,轉(zhuǎn)移mov dl,31h;CF1,即最高位為1:DL31H1jmp two;一定要跳過另一個分支體one:mov dl,30h ;DL 30H0two:mov ah,2int 21h;顯示轉(zhuǎn)換(zhunhun)為單分支結(jié)構(gòu)第24頁/共37頁第二十四頁,共37頁。顯示(xinsh)BX的最高位(另解)mov dl,0 ;DL30H0shl bx,1;BX

15、最高位移入CF標志(biozh)jnc two;CF0,即最高位為0,轉(zhuǎn)移mov dl,1;CF1,即最高位為1:DL31H1two:mov ah,2int 21h;顯示 編寫(binxi)分支程序,需留心分支的開始和結(jié)束第25頁/共37頁第二十五頁,共37頁。顯示(xinsh)BX的最高位(無分支)mov dl,0shl bx,1;BX最高位移(wiy)入CF標志adc dl,30h;CF0,DL030h030H0;CF1,DL030h131H1two:mov ah,2int 21h;顯示第26頁/共37頁第二十六頁,共37頁?!纠?.3】求AX累加器和BX寄存器中兩個無符號(fho)數(shù)之差

16、的絕對值,結(jié)果放在內(nèi)存(2800)單元中。(1) 分析題目:AX累加器和BX寄存器中的數(shù)是不知道的。顯然應(yīng)該先解決哪一個值稍大些,然后再用大數(shù)減小數(shù)的方法,才可求得絕對值。(2) 根據(jù)指令系統(tǒng)中的比較指令,編出判斷大小的環(huán)節(jié),即可解決問題,第27頁/共37頁第二十七頁,共37頁。 CLC; 清除(qngch)CFSUBAX,BX; AXAX-BXJCAA ; CF轉(zhuǎn)AA去執(zhí)行(即AXBX時轉(zhuǎn)移)MOVDI,2800H; 結(jié)果指針DI2800H 冗余MOVDI,AX; 結(jié)果送到2800H和2801H單元HLT; 暫停AA:SUBBX,AX; BXBX-AX?MOVDI,2800H ;冗余MOVD

17、I,BXHLT第28頁/共37頁第二十八頁,共37頁。修改(xigi):MOVDI,2800H; 結(jié)果指針DI2800H CLC; 清除CFSUBAX,BX; AXAX-BXJCAA ; CF轉(zhuǎn)AA去執(zhí)行(即AXBX時轉(zhuǎn)移(zhuny)MOVDI,AX; 結(jié)果送到2800H和2801H單元HLT ; 暫停AA:NEG AX ;求補MOVDI,AXHLT第29頁/共37頁第二十九頁,共37頁?!纠?.4】 從外設(shè)71H號中取一個數(shù)M,判斷其值是否在10和20之間,即10M20。如果M20H,則送0FFH給外設(shè)73H;如果M10,則送00H給外設(shè)73H;如果10M20,則送88H給外設(shè)73H。(1

18、) 分析題目(tm):根據(jù)題意,我們可以看出這是一個需要兩次判斷M大小的問題。我們可以先判M是否大于10,再判M是否大于20。(2) 根據(jù)解決問題的思路,我們先畫出程序流程圖,如圖6.6所示。 流程圖來看,兩個分支都要“回歸”原程序。第30頁/共37頁第三十頁,共37頁。流程圖第31頁/共37頁第三十一頁,共37頁。例6.4 程序(chngx)START:INAL,71H; 將71H端口的字節(jié)(z ji)讀入ALCLC ; 清除CFCMPAL,10; 將AL的內(nèi)容和10相比較JCLP1 ; 小于10轉(zhuǎn)LP1CMPAL,20; 將AL的內(nèi)容和20相比較JCLP2 ; 10AL20轉(zhuǎn)LP2MOVB

19、L,0FFH; 將0FFH送入BL寄存器LP3:OUT73H,BL; 將0FFH輸出到73H端口HLT ; 暫停LP1: MOVBL,00 JMPLP3LP2: MOVBL,88H JMPLP3第32頁/共37頁第三十二頁,共37頁。3、多分支(fnzh)結(jié)構(gòu)多分支結(jié)構(gòu)(jigu)是多個條件對應(yīng)各自的分支語句體,哪個條件成立就轉(zhuǎn)入相應(yīng)分支體執(zhí)行AH=0fuction0YNAH=1fuction1YNAH=2fuction2YNcmp ah,0 jz function0cmp ah,1 jz function1cmp ah,2 jz function2第33頁/共37頁第三十三頁,共37頁。小節(jié)

20、(xioji): 程序設(shè)計(chn x sh j)步驟 順序程序設(shè)計(chn x sh j) 分支程序設(shè)計(chn x sh j) (復(fù)習(xí)條件轉(zhuǎn)移指令)下周二下午下周二下午7、8節(jié),節(jié),4班實驗,班實驗,硬件硬件(yn jin)實驗室(實驗室(9-408)請一定帶鞋套!請一定帶鞋套!第34頁/共37頁第三十四頁,共37頁。XLAT指令(zhlng)的功能第35頁/共37頁第三十五頁,共37頁。條件轉(zhuǎn)移(zhuny)指令的含義JZ/JEJump on Zero/EqualJNZ/JNEJump on Not Zero/EqualJSJump on SignJNSJump on Not SignJ

21、P/JPEJump on Parity(奇偶)/Parity Even(偶數(shù)(u sh))JNP/JPOJump on Not Parity/Parity Odd(奇數(shù))JOJump on OverflowJNOJump on Not OverflowJC/JB/JNAEJump on Carry/Below/Not Above or EqualJNC/JNB/JAEJump on Not Carry/Not Below/Above or EqualJBE/JNAJump on Below or Equal/Not AboveJNBE/JAJump on Not Below or Equal/AboveJL/JNGEJump on Less/Not Greater or EqualJNL/JGEJump on Not Less/Greater or EqualJLE/JNGJump on Less or Equal/Not GreaterJNLE/JGJump on Not Less or Equal/Greater第36頁/共37頁第三十六頁,共37頁。感謝您的觀看(gunkn)!第37頁/共37頁第三十七頁,共37頁。

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!