欢迎来到天天文库
浏览记录
ID:42996994
大小:1.12 MB
页数:38页
时间:2019-09-27
《程序篇-循环与分支程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章程序篇-循环与分支程序设计循环程序的结构形式程序有顺序、循环、分支和子程序四种结构,本章说明循环与分支程序结构。有二种结构形式:(见下页)循环初始状态do_WHILE结构(循环次数可能为0)循环控y制条件循环体N先判条件,满足条件则执行循环体,否则退出。循环初始状态循环体循环控制条件NYdo-UNTIL结构先执行循环体,后判断条件,满足条件,则循环,否则退出。不论哪种结构形式,循环程序可由如下三部分组成:1)设置循环的初始状态。如设置循环计算值等。2)循环体。循环工作的主体,它由循环的工作部分及修改部分组成。3)循环控制部分:合理地选择循环控制条件是循环程序设计的关键。循环程序设计方法
2、编程步骤如下:1、分析题意,确定算法。(仔细分析和理解题意,找出合理的算法及适当的数据结构)2、根据算法画出程序框图。3、依框图编写程序.4、上机调试程序----检查你的设计思想是否正确以及你的程序是否符合你设计思想。0~9,A~F30~39H,41~46H例1:编制一个程序把BX寄存器的二进制数用十六进制数在屏幕上显示出来。步骤:1、分析提意,选择算法。分析:二进制数(十六进制数)16进制数的ASC‖码屏幕显示出正确的十六进制数算法:1)将BX内的十六进制数分成4组,(即4个十六进制数)。2)从最高位组开始进行转换,若>9(即3aH),则将该组值加上37H,并将结果显示出来,然后再转换次高
3、位组,依次循环4次。3)最高位组移到AL中的低四位,以使计算用循环左移形成。MOVCL,4ROLBX,CLMOVAL,BL2、画框图:12(续下页)开始初始化MOVCH,4BX循环左移将最右边的转换成ASCII码ASCII的A-F?加7显示一个字符调用DOS的02号功能循环计算数=0结束(续上页)12yNNy3、写出源程序Programsegmentassumecs:programStart:movbx,468ahmovch,4rotate:movc1,4rolbx,c1mova1,b1anda1,0fhadda1,30hcmpa1,3ahjlprintaddal,7hPrint:movdl
4、,almovah,2int21hdecchjnzrotatemovah,4chint21hProgramendsendstart注意:1、该程序中,未用LOOP指令,而是用DECCH和JNZrotate来完成的。2、本例为do-until结构。例2:在ES段中有一个首地址为LIST和未经过排序的字数组,在数组的第一个字中存放着该数组的长度,数组的首地址已放入DI寄存器中,AX中存放着一个数。要求编一个程序:在数组中查找该数,如果找到此数则把它从数组中删除。分析:先找是否有(AX)在数组中,若无则结束程序。用串处理指令REPNZSCASW,若找到,则应将数组中找出的元素的后面所有的字(即高于该
5、元素地址的字)前移(向低地址方向)一个字的位置。用循环结构完成。开始用串处理指令查找(AX)找到AX是末元素YN前移一个字数组结束否修改数组长度结束NYYN画框图写程序:del-ulprocfarcldpushdimovcx,es:[di]adddi,2repnescaswjedeletepopdijmpshortexitDelete:jcxzdec_cntnext_el:movbx,es:[di]moves:[di-2],bxadddi,2loopnext_eldec_cnt:popdidecwordptres:[di]exit:retdel_ulendp注意:1)设置DF=0,CLD2)
6、保存首地址以便修改数组的个数3)next-el:将高地址里的内容覆盖删除部分下面介绍在循环程序设计中设立标志位的方法,这种标志位是为了正确执行所做操作面设立的,其中有一种常用的方法称为逻辑方法例3设数组X和Y,X数组中有x1,…,x10Y=(y1,…,y10)编程计算Z1=x1+y1,Z2=x2+y2,Z3=x3-y3Z4=x4-y4,Z5=x5-y5,Z6=x6+y6Z7=x7-y7,Z8=x8-y8,Z9=X9-Y9Z10=x10+y10结果存入Z数组解:尽管每个算式不相同,也可用循环结构来完成:循环数值为10,所做的操作有二种——加法,减法。为了区别每次操作是加还是减,我们设置标志位:
7、如果标志位为0加法如果标志位为1减法本题有10次操作,则应该设10个标志位,故用二个字节来表示(16位,最高6位无意义——设为0)。并将它存入存储单元中,该存储单元称为逻辑尺——单元名设为LOGIC-RULE其内容为:0000000111011100=01dcH开始初始化CX=10i=1测逻辑尺第i位xi+yixi-yiZi结果iI+1CX=0?结果=0=1画框图写程序datareasegmentxdwx1,
此文档下载收益归作者所有