資源描述:
《循環(huán)程序設(shè)計 分支程序設(shè)計.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在PPT專區(qū)-天天文庫。
1、?循環(huán)程序設(shè)計?分支程序設(shè)計第5章循環(huán)與分支程序設(shè)計分支結(jié)構(gòu)子程序結(jié)構(gòu)程序結(jié)構(gòu):復(fù)合結(jié)構(gòu):多種程序結(jié)構(gòu)的組合…順序結(jié)構(gòu)循環(huán)結(jié)構(gòu)編制匯編語言程序的步驟:(1)分析題意,確定算法(2)根據(jù)算法畫出程序框圖(3)根據(jù)框圖編寫程序(4)上機(jī)調(diào)試程序1.循環(huán)程序設(shè)計DO-WHILE結(jié)構(gòu)DO-UNTIL結(jié)構(gòu)控制條件初始化循環(huán)體YN控制條件初始化循環(huán)體YN初始化:設(shè)置循環(huán)的初始狀態(tài)循環(huán)體:循環(huán)的工作部分及修改部分控制條件:計數(shù)控制特征值控制地址邊界控制BX1234例:把BX中的二進(jìn)制數(shù)以十六進(jìn)制的形式顯示在屏幕上……movch,4rot
2、ate:movcl,4rolbx,clmoval,blandal,0fhaddal,30h;’0’~’9’ASCII30H~39Hcmpal,3ahjlprintitaddal,7h;’A’~’F’ASCII41H~46Hprintit:movdl,almovah,2int21hdecchjnzrotate…………movbx,0newchar:movah,1;鍵盤輸入int21hsubal,30hjlexit;<0退出cmpal,9jgexit;>9退出cbwxchgax,bxmovcx,10mulcxxchgax,bxa
3、ddbx,axjmpnewcharexit:……例:從鍵盤接收十進(jìn)制數(shù)并存入BX((0×10)+1)×10+2)×10+5125313235……movbx,0newchar:movah,1;鍵盤輸入int21hsubal,30hjlexit;<0退出cmpal,10jladd_tosubal,27h;‘a(chǎn)’~‘f’cmpal,0ahjlexit;<‘a(chǎn)’退出cmpal,10hjgeexit;>’f’退出add_to:movcl,4shlbx,clmovah,0addbx,axjmpnewcharexit:……例:從鍵盤接收
4、十六進(jìn)制數(shù)并存入BX1af316166((0×16)+1)×16+0a)×16+0fxdw?array_headdw3,5,15,23,37,49,52,65,78,99array_enddw105ndw32例:將正數(shù)n插入一個已整序的正數(shù)字?jǐn)?shù)組……movax,nmovarray_head-2,0ffffhmovsi,0compare:cmparray_end[si],axjleinsertmovbx,array_end[si]movarray_end[si+2],bxsubsi,2jmpshortcompareinser
5、t:movarray_end[si+2],ax……35152337495265789910532-1array_head?array_end?n?x?例:將首地址為A的字?jǐn)?shù)組從小到大排序(氣泡算法,多重循環(huán))32,85,16,15,8序號地址數(shù)比較遍數(shù)12341A322A+2853A+4164A+6155A+88321615885161583285158163285815163285movcx,5;元素個數(shù)deccx;比較遍數(shù)loop1:movdi,cx;比較次數(shù)movbx,0loop2:movax,A[bx];相鄰兩數(shù)c
6、mpax,A[bx+2];比較jlecontinuexchgax,A[bx+2];交換位置movA[bx],axcontinue:addbx,2looploop2movcx,dilooploop12.分支程序設(shè)計…case1case2casen??case1case2casenCASE結(jié)構(gòu)IF-THEN-ELSE結(jié)構(gòu)(1)邏輯尺控制(2)條件控制(3)地址跳躍表(值與地址有對應(yīng)關(guān)系的表)例:有數(shù)組x(x1,x2,……,x10)和y(y1,y2,……,y10),編程計算z(z1,z2,……,z10)z1=x1+y1z2=x2
7、+y2z3=x3-y3z4=x4-y4z5=x5-y5z6=x6+y6z7=x7-y7z8=x8-y8z9=x9+y9z10=x10+y10邏輯尺:00110111001減法0加法xdwx1,x2,x3,x4,x5,x6,x7,x8,x9,x10ydwy1,y2,y3,y4,y5,y6,y7,y8,y9,y10zdwz1,z2,z3,z4,z5,z6,z7,z8,z9,z10logic_ruledw00dch;0000,0000,1101,1100……movbx,0movcx,10movdx,logic_rulenext:
8、movax,x[bx]shrdx,1jcsubtractaddax,y[bx]jmpshortresult;向前引用subtract:subax,y[bx]result:movz[bx],axaddbx,2loopnext……datasegmentarraydw12,11,22,33,44,55,66,