欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第5章程序控制结构及其程序设计PPT讲稿.ppt

    • 资源ID:43656542       资源大小:3.65MB        全文页数:173页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第5章程序控制结构及其程序设计PPT讲稿.ppt

    第第5章章程序控制结构程序控制结构及其程序设计及其程序设计第1页,共173页,编辑于2022年,星期一5.1 5.1 汇编语言程序设计概述汇编语言程序设计概述 5.1.1汇编语言程序设计的基本步骤汇编语言程序设计的基本步骤编制汇编语言程序的基本步骤如下:编制汇编语言程序的基本步骤如下:(1)分分析析问问题题,抽抽象象出出描描述述问问题题的的数数学学模模型型。遇遇到到一一个个题题目目,特特别别是是一一个个较较为为复复杂杂的的题题目目,先先要要对对其其进进行行全全面面的的分分析析,看看它它给给出出了了什什么么条条件件,有有什什么么特特点点,找找出出规规律律,归归纳纳出出数数学学模模型型。当当然然,也也可可能能有有些些问问题题不用写出数学模型或写不出数学模型。不用写出数学模型或写不出数学模型。第2页,共173页,编辑于2022年,星期一 (2)确确定定算算法法。有有了了数数学学模模型型,或或虽虽然然没没有有数数学学模模型型但但已已把把题题目目分分析析清清楚楚了了,就就选选择择一一个个合合适适的的算算法法和和适适当当的的数数据据结结构构。如如果果没没有有可可供供选选用用的的现现成成的的算算法法和和结构,就需要针对具体问题设计一个算法或结构。结构,就需要针对具体问题设计一个算法或结构。(3)绘绘制制流流程程图图。流流程程图图就就是是用用图图形形的的方方式式把把解解决决问问题题的的算算法法直直观观地地描描述述出出来来。对对于于一一个个比比较较复复杂杂的的问问题题,画画出出流流程程图图,这这有有助助于于对对问问题题的的理理解解以以及及有有助助于于编编写写出出正正确确的的程程序序。当当然然,如如果果算算法法比比较较简简单单,也也可可不画流程图。不画流程图。第3页,共173页,编辑于2022年,星期一 (4)分分配配存存储储空空间间和和工工作作单单元元。用用汇汇编编语语言言编编写写程程序序时时,需需要要给给程程序序中中的的变变量量指指定定内内存存单单元元地地址址或或指指定定寄存器。寄存器。(5)编编写写程程序序。要要把把题题目目中中需需要要处处理理的的数数据据合合理理地地根根据据(2)、(3)、(4)步步的的工工作作,选选用用适适合合的的指指令令,并并按按一定的语法规则编写相应的程序。一定的语法规则编写相应的程序。(6)静静态态检检查查。静静态态检检查查就就是是用用人人工工的的方方式式检检查查程程序序是是否否有有错错误误,包包括括算算法法错错误误和和语语法法错错误误等等,如如果果有有错错误误,及及时时改改正正过过来来。处处理理得得好好,静静态态检检查查能能够够发发现现和改正程序中的大部分错误。和改正程序中的大部分错误。第4页,共173页,编辑于2022年,星期一 (7)上上机机调调试试运运行行。任任何何程程序序必必须须经经过过调调试试,才才能能检检查查出出解解题题目目的的是是否否正正确确以以及及程程序序是是否否符符合合设设计计思思想想。在在调调试试程程序序的的过过程程中中,应应该该善善于于利利用用机机器器提提供供的的调调试试工工具具(如如DEBUG)和和有有效效的的其其他他工工具具软软件件来来进进行行工工作作,经经过过反反复复的的“运运行行发发现现错错误误改改正正错错误误运运行行”,才才能能得得到到正正确确的的程程序序。这这一一点点对对初初学学者者特特别别重重要要,它它将给汇编语言编程提供很大的帮助。将给汇编语言编程提供很大的帮助。程程序序的的编编写写和和调调试试运运行行是是学学好好汇汇编编语语言言的的重重要要手手段段。只只有有多多编编写写程程序序和和多多调调试试运运行行程程序序,才才能能有有效效地地提高编写和阅读程序的能力。提高编写和阅读程序的能力。第5页,共173页,编辑于2022年,星期一 5.1.2程序流程图程序流程图表表示示一一个个算算法法,可可以以用用不不同同的的方方法法。常常用用的的有有自自然然语语言言、传传统统流流程程图图、结构化流程图、伪代码和结构化流程图、伪代码和PAD图图等。等。1.用自然语言表示算法用自然语言表示算法很多算法是用自然语言表示的,自然语言是指人们日常使用很多算法是用自然语言表示的,自然语言是指人们日常使用的语言。用自然语言表示算法通俗易懂,但文字冗长,容易出现的语言。用自然语言表示算法通俗易懂,但文字冗长,容易出现“歧义性歧义性”。自然语言表示的含义往往不大严格,要根据上下文才。自然语言表示的含义往往不大严格,要根据上下文才能判断其正确的含义。假如有这样一句话:能判断其正确的含义。假如有这样一句话:“王先生对刘先生说孩王先生对刘先生说孩子考上了大学。子考上了大学。”是王是王先生的孩子考上大学呢,还是刘先生的孩子考先生的孩子考上大学呢,还是刘先生的孩子考上大学呢上大学呢?光从这句话本身难以判断。此外,用自然语言描述包含分支光从这句话本身难以判断。此外,用自然语言描述包含分支和循环的算法很不方便。因此,除了很简单的问题以外,一般程序设计和循环的算法很不方便。因此,除了很简单的问题以外,一般程序设计不用自然语言描述算法。不用自然语言描述算法。第6页,共173页,编辑于2022年,星期一 2.流程图的组成流程图的组成流流程程图图是是用用一一些些图图框框表表示示各各种种操操作作。用用图图形形表表示示算算法法,直直观观形形象象,易易于于理理解解。美美国国国国家家标标准准化化协协会会ANSI(AmericanNationalStandardInstitute)规规定定了了一一些些常常用用的的流流程程图图图图元元(见见图图5.1),已已被被世世界界各各国国程程序序工作者普遍采用。工作者普遍采用。借借助助于于流流程程图图可可以以清清晰晰地地把把程程序序思思路路表表达达出出来来,有有助助于于编编写写正正确确的的程程序序。流流程程图图对对于于程程序序设设计计人人员员,特特别是初学者是一种非常有用的工具。别是初学者是一种非常有用的工具。流程图一般由流程图一般由6种成分组成,如图种成分组成,如图5.1所示。所示。第7页,共173页,编辑于2022年,星期一图5.1 流程图的组成成分图第8页,共173页,编辑于2022年,星期一 1)执行框执行框(矩形框矩形框)图图5.1中中的的方方框框,其其作作用用是是表表示示一一段段程程序序或或一一个个模模块块的的功功能能,对对于于结结构构化化程程序序,一一个个执执行行框框只只有有一一个个入入口和一个出口。口和一个出口。2)判别框判别框(菱形框菱形框)图图5.1中的菱形框,其作用是对一个给定的条件进中的菱形框,其作用是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其行判断,根据给定的条件是否成立来决定如何执行其后的操作。它有一个入口,两个出口,如图后的操作。它有一个入口,两个出口,如图5.2所示。所示。第9页,共173页,编辑于2022年,星期一图5.2 流程图的绘制示意 第10页,共173页,编辑于2022年,星期一 3)开始框和终止框开始框和终止框图图5.1中的圆头方框表示程序的起始和终止。中的圆头方框表示程序的起始和终止。4)指向线指向线指向线表示程序执行的顺序。指向线表示程序执行的顺序。5)连接点连接点图图5.1中中小小圆圆圈圈是是连连接接点点,用用于于将将画画在在不不同同地地方方的的流流程程线线连连接接起起来来。如如图图5.2中中有有两两个个以以为为标标志志的的连连接接点点,它它表表示示这这两两个个点点是是互互相相连连接接在在一一起起的的。实实际际上上它它们们是是同同一一个个点点,只只是是当当在在纸纸张张上上画画不不下下时时才才分分开开来来画画。用用连连接接点点,可可以以避避免免流流程程线线的的交交叉叉或或过过长长,使使流流程程图图清晰。清晰。第11页,共173页,编辑于2022年,星期一 流流程程图图是是表表示示算算法法的的较较好好工工具具。一一个个流流程程图图包包括括以下几部分:以下几部分:(1)表示相应操作的框;表示相应操作的框;(2)带箭头的流程线;带箭头的流程线;(3)框内外必要的文字说明。框内外必要的文字说明。绘绘制制流流程程线线不不要要忘忘记记画画箭箭头头,因因为为它它是是反反映映流流程程执执行行的的先先后后次次序序的的,如如不不画画出出箭箭头头就就难难以以判判定定各各框框的的执行次序了。执行次序了。第12页,共173页,编辑于2022年,星期一 用用流流程程图图表表示示算算法法直直观观、形形象象,能能比比较较清清楚楚地地显显示示出出各各个个框框之之间间的的逻逻辑辑关关系系。前前一一时时期期国国内内外外计计算算机机书书刊刊都都广广泛泛使使用用这这种种流流程程图图表表示示算算法法,但但是是,这这种种流流程程图图占占用用篇篇幅幅较较多多,尤尤其其当当算算法法比比较较复复杂杂时时,画画流流程程图图既既费费时时又又不不方方便便,在在结结构构化化程程序序设设计计方方法法推推广广之之后后,许许多多书书刊刊已已用用N-S结结构构化化流流程程图图代代替替这这种种传传统统的的流流程程图图。但但是是每每一一个个程程序序编编制制人人员员都都应应当当熟熟练练掌掌握握传传统统流流程程图图,做到会看会画。做到会看会画。第13页,共173页,编辑于2022年,星期一 3.三种基本结构和改进的流程图三种基本结构和改进的流程图1)传统流程图的弊端传统流程图的弊端传传统统的的流流程程图图用用流流程程线线指指出出各各框框的的执执行行顺顺序序,对对流流程程线线的的使使用用没没有有严严格格限限制制。因因此此,使使用用者者可可以以不不受受限限制制地地使使流流程程随随意意地地转转来来转转去去,使使流流程程图图变变得得毫毫无无规规律律。阅阅读读者者要要花花很很大大精精力力去去追追踪踪流流程程,使使人人难难以以理理解解算算法法的的逻逻辑辑。这这种种情情况况如如图图5.3所所示示。这这种种如如同同乱乱麻麻一一样样的的算算法法称称为为BS型型算算法法,意意为为就就像像一一碗碗面面条条(ABowlofSpaghetti),乱无头绪。,乱无头绪。第14页,共173页,编辑于2022年,星期一图5.3 杂乱流程示意第15页,共173页,编辑于2022年,星期一 这这种种算算法法不不好好,难难以以阅阅读读,也也难难以以修修改改,可可靠靠性性和和可可维维护护性性难难以以保保证证。如如果果我我们们写写出出的的算算法法能能限限制制流流程程的的无无规规律律任任意意转转向向,如如同同一一本本书书那那样样,由由各各章章各各节节顺顺序序组组成成,那那样样,阅阅读读起起来来就就很很方方便便,从从头头到到尾尾顺顺序序地地看看下下去去即即可可。而而如如果果一一本本书书不不是是由由各各章章节节顺顺序序组组成成,各章节内各节毫无规律地乱排,阅读这种书就很困难。各章节内各节毫无规律地乱排,阅读这种书就很困难。第16页,共173页,编辑于2022年,星期一 为为了了提提高高算算法法的的质质量量,使使算算法法的的设设计计和和阅阅读读更更方方便便,必必须须限限制制滥滥用用箭箭头头,即即不不允允许许无无规规律律地地使使流流程程随随意意转转向向,只只能能顺顺序序地地进进行行下下去去。但但是是,算算法法上上难难免免会会包包含含一一些些分分支支和和循循环环,而而不不可可能能全全部部由由一一个个一一个个框框顺顺序序组组成成。为为了了解解决决这这个个问问题题,人人们们设设想想,规规定定出出几几种种基基本本结结构构,然然后后由由这这些些基基本本结结构构按按一一定定规规律律组组成成一一个个算算法法结结构构(如如同同用用一一些些基基本本预预制制构构件件来来搭搭成成房房屋屋一一样样),整整个个算算法法的的结结构构是是由由上上而而下下地地将将各各个个基基本本结结构构顺顺序序排排列列起起来来的的。如如果果能能做做到到这这一一点点,算算法法的的质质量量就就能能得得到保证和提高。到保证和提高。第17页,共173页,编辑于2022年,星期一 2)三种基本结构三种基本结构1966年年,BOHRA和和JACOPINI提提出出了了以以下下三三种种基基本本结结构构,用用这这三三种种基基本本结结构构作作为为表表示示一一个个良良好好算算法法的的基本单元。基本单元。(1)顺顺序序结结构构。如如图图5.4所所示示,虚虚线线框框内内是是一一个个顺顺序序结结构构。其其中中A和和B两两个个框框是是顺顺序序执执行行的的。即即在在执执行行完完A框框所所指指定定的的操操作作后后,必必然然接接着着执执行行B框框所所指指定定的的操操作作。顺序结构是最简单的一种基本结构。顺序结构是最简单的一种基本结构。第18页,共173页,编辑于2022年,星期一图5.4 顺序结构图 第19页,共173页,编辑于2022年,星期一 (2)选选择择结结构构(也也称称选选取取结结构构或或分分支支结结构构)。如如图图5.5所所示示,虚虚线线框框内内是是一一个个选选择择结结构构。此此结结构构中中必必包包含含一一个个判判断断框框。根根据据给给定定的的条条件件P是是否否成成立立而而选选择择执执行行A框框或或B框框。请请注注意意,无无论论P条条件件是是否否成成立立,只只能能执执行行A框框或或B框框之之一一,不不可可能能既既执执行行A框框又又执执行行B框框。无无论论走走哪哪一一条条路路径径,在在执执行行完完A或或B之之后后,都都经经过过b点点,然然后后脱脱离离本本选选择择结结构构。A或或B两两个个框框中中可可以以有有一一个个是是空空的的,即不执行任何操作。即不执行任何操作。(3)循循环环结结构构(又又称称重重复复结结构构)。循循环环结结构构指指反反复复执执行行某某一一部部分分的的操操作作,有有当当型型(WHILE型型)循循环环、直直到到型型(UNTIL型型)循环和计数型循环和计数型(FOR-NEXT)循环。循环。第20页,共173页,编辑于2022年,星期一图5.5 选择结构图 第21页,共173页,编辑于2022年,星期一 4.结构化程序设计的特点结构化程序设计的特点三种基本循环结构的共同特点如下:三种基本循环结构的共同特点如下:(1)只有一个入口。只有一个入口。(2)只只有有一一个个出出口口。尽尽管管一一个个菱菱形形判判断断框框有有两两个个出出口口,但但由由它它构构成成的的一一个个选选择择结结构构仍仍只只有有一一个个出出口口。不不要将菱形框的出口和选择结构的出口混淆。要将菱形框的出口和选择结构的出口混淆。(3)各各功功能能框框均均可可执执行行。结结构构内内的的每每一一部部分分都都有有机机会会被被执执行行到到,也也就就是是说说,对对每每一一个个框框而而言言,都都应应当当有有一条从入口到出口的路径通过它。一条从入口到出口的路径通过它。第22页,共173页,编辑于2022年,星期一 (4)结构中无死循环。结构中无死循环。实实践践证证明明,由由以以上上三三种种基基本本结结构构顺顺序序组组成成的的算算法法结结构构,可可以以解解决决任任何何复复杂杂的的问问题题。由由基基本本结结构构所所构构成成的的算算法法属属于于“结结构构化化”的的算算法法,它它不不存存在在无无规规律律的的转转向向,只只在在本本结结构构内内才才允允许许存存在在分分支支、向向前前或或向向后后的的跳跳转。转。基基本本结结构构不不一一定定只只限限于于上上面面三三种种,只只要要具具有有上上述述四四个个特特点点的的都都可可以以作作为为基基本本结结构构。人人们们可可以以自自己己定定义义基本结构,并由这些基本结构组成结构化程序。基本结构,并由这些基本结构组成结构化程序。第23页,共173页,编辑于2022年,星期一5.2 5.2 顺序程序设计顺序程序设计 在在顺顺序序程程序序结结构构中中,完完全全按按顺顺序序逐逐条条执执行行指指令令序序列列,这这种种情情况况在在程程序序中中大大量量存存在在,但但仅仅由由顺顺序序结结构构构构成成的的作作为为完完整整的的程程序序则则很很少少见见。顺顺序序结结构构的的程程序序是是最最简单的程序。简单的程序。第24页,共173页,编辑于2022年,星期一 【例【例5-1】将两个字节数据相加,并存放到一个结将两个字节数据相加,并存放到一个结果单元中。果单元中。DATASEGMENTAD1DB4CH;定义第;定义第1个加数个加数AD2DB25H;定义第;定义第2个加数个加数SUM DB?;定义结果单元;定义结果单元DATAENDSCODESEGMENT第25页,共173页,编辑于2022年,星期一ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,AD1;取出第;取出第1个加数个加数ADDAL,AD2;和第;和第2个加数相加个加数相加MOVSUM,AL;存放结果;存放结果MOVAH,4CHINT21H;返回;返回DOSCODEENDSENDSTART第26页,共173页,编辑于2022年,星期一【例【例5-2】两个两个32位数的乘法程序。位数的乘法程序。.386DATA SEGMENTNUM1DD12345678H;定义第;定义第1个乘数个乘数NUM2DD5A4BEF06H;定义第;定义第2个乘数个乘数RESULTDD2DUP(?);定定义义结结果果单元单元DATAENDSCODESEGMENT第27页,共173页,编辑于2022年,星期一ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVEAX,NUM1;取出第;取出第1个乘数个乘数MULNUM2;和第;和第2个乘数相乘个乘数相乘第28页,共173页,编辑于2022年,星期一MOV RESULT,EAX;存放结果的低;存放结果的低4字节部分字节部分MOV RESULT+4,EDX;存放结果的高;存放结果的高4字节部分字节部分MOV AH,4CH;INT21H;返回;返回DOSCODEENDSENDSTART第29页,共173页,编辑于2022年,星期一 【例例5-3】将将一一个个字字节节压压缩缩BCD码码转转换换为为两两个个ASCII码。码。分分析析:一一个个字字节节的的压压缩缩BCD码码就就是是用用一一个个字字节节的的二二进进制制数数表表示示两两位位十十进进制制数数,如如十十进进制制数数96表表示示成成压压缩缩BCD码码就就是是96H,转转换换成成ASCII码码就就是是把把压压缩缩BCD码码表表示示的的十十进进制制数数的的高高位位和和低低位位分分开开,并并以以ASCII码码表表示示,即转换成即转换成39H和和36H。第30页,共173页,编辑于2022年,星期一DATASEGMENTBCDBUFDB96H;定义;定义1个字节的压缩个字节的压缩BCD码码ASCBUFDB2DUP(?);定义;定义2个字节的结果单元个字节的结果单元DATA ENDSCODESEGMENT ASSUME CS:CODE,DS:DATA第31页,共173页,编辑于2022年,星期一START:MOVAX,DATAMOVDS,AXMOVAL,BCDBUF;取出;取出BCD码码MOVBL,AL;送;送BL暂存暂存MOVCL,4SHRAL,CL;高;高4位变成低位变成低4位,高位,高4位补位补0(96H09H)ADDAL,30H;变成;变成ASCII码码(39H)第32页,共173页,编辑于2022年,星期一MOVASCBUF,AL;存储第;存储第1个个ASCII码码ANDBL,0FH;屏蔽掉高;屏蔽掉高4位,只保留低位,只保留低4位位(96H06H)ADDBL,30H;变成;变成BCD码码(36H)MOVASCBUF+1,BL;存储第;存储第2个码个码MOVAH,4CHINT21HCODEENDSENDSTART第33页,共173页,编辑于2022年,星期一 【例例5-4】利利用用直直接接查查表表法法完完成成将将键键盘盘输输入入的的一一位位10进进制制数数(09)转转换换成成对对应应的的平平方方值值并并存存放放在在SQRBUF单元中。(用单元中。(用P单步调试)单步调试)分分析析:09的的平平方方值值分分别别为为0、1、4、9、16、25、36、49、64、81。把把平平方方值值放放在在一一起起形形成成一一个个平平方方值值表表,根根据据输输入入的的值值和和对对应应平平方方值值所所在在单单元元地地址址之之间间的的关系关系(表首地址加上输入的值表首地址加上输入的值),查出相应的平方值。,查出相应的平方值。第34页,共173页,编辑于2022年,星期一DATASEGMENTSQUTABDB0,1,4,9,16,25,36,49,64,81SQUBUFDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA第35页,共173页,编辑于2022年,星期一MOV DS,AXMOV BX,OFFSETSQUTAB;平方表首地址;平方表首地址MOV AH,1INT21H;由键盘输入;由键盘输入个数,得到其个数,得到其ASCII码码SUBAL,30H;由;由ASCII码得到相应的数码得到相应的数XLAT;查表;查表MOV SQUBUF,AL;存储结果;存储结果第36页,共173页,编辑于2022年,星期一MOVAH,4CHINT21HCODEENDSENDSTART第37页,共173页,编辑于2022年,星期一5.3 5.3 分支程序设计分支程序设计 5.3.1分支程序的结构形式分支程序的结构形式分支程序结构可以有两种形式,如图分支程序结构可以有两种形式,如图5.6所示。所示。不不论论哪哪一一种种形形式式,它它们们的的共共同同特特点点是是:运运行行方方向向是是向向前前的的,在在某某一一种种特特定定条条件件下下,只只能能执执行行多多个个分分支支中中的一个分支。的一个分支。第38页,共173页,编辑于2022年,星期一图5.6 分支程序的结构形式SKIP第39页,共173页,编辑于2022年,星期一 5.3.2分支程序设计方法分支程序设计方法程程序序的的分分支支一一般般用用条条件件转转移移指指令令来来产产生生,利利用用条条件件转转移移指指令令不不影影响响条条件件码码的的特特性性,可可以以连连续续使使用用条条件件转移指令使程序产生多个不同的分支如下例。转移指令使程序产生多个不同的分支如下例。【例例5-5】在在附附加加段段中中,有有一一个个按按从从小小到到大大顺顺序序排排列列的的无无符符号号数数数数组组,其其首首地地址址存存放放在在DI寄寄存存器器中中,数数组组中中的的第第一一个个单单元元存存放放着着数数组组长长度度,在在AX中中有有一一个个无无符符号号数数,要要求求在在数数组组中中查查找找(AX)。如如找找到到,则则使使CF=0,并并在在SI中中给给出出该该元元素素在在数数组组中中的的偏偏移移地地址址;如如未未找找到,则使到,则使CF=1。第40页,共173页,编辑于2022年,星期一 上上述述章章节节遇遇到到的的过过多多个个表表格格查查找找的的例例子子,大大都都使使用用顺顺序序查查找找的的方方法法。本本例例是是一一个个已已经经排排序序的的数数组组,可可以采用折半查找法以提高查找效率。以采用折半查找法以提高查找效率。折折半半查查找找法法先先取取有有序序数数组组的的中中间间元元素素与与查查找找值值相相比比较较。如如相相等等则则查查找找成成功功;如如查查找找值值大大于于中中间间元元素素,则则再再取取高高半半部部的的中中间间元元素素与与查查找找值值相相比比较较。如如查查找找值值小小于于中中间间元元素素,则则再再取取低低半半部部的的中中间间元元素素与与查查找找值值相相比较。如此重复直到查找成功或最终未找到该数为止。比较。如此重复直到查找成功或最终未找到该数为止。第41页,共173页,编辑于2022年,星期一 折折半半查查找找法法的的效效率率高高于于顺顺序序查查找找法法,对对于于长长度度为为N的的表表格格,顺顺序序查查找找法法平平均均要要作作N2次次比比较较,而而折折半半查查找找法法的的平平均均比比较较次次数数为为lbN。所所以以,如如果果数数组组长长度度为为100,则则顺顺序序查查找找法法平平均均要要作作50次次比比较较,而而折折半半查查找找法法平均作平均作7次比较就可以了。次比较就可以了。在在一一个个长长度度为为N的的有有序序数数组组R中中,查查找找元元素素K的的折折半查找算法可描述如下:半查找算法可描述如下:第42页,共173页,编辑于2022年,星期一 (1)初初始始化化被被查查找找数数组组的的首首尾尾下下标标,LOWL,HIGHN。(2)若若LOWHIGH,则则查查找找失失败败,置置CF1,退退出出程序。否则,计算中点:程序。否则,计算中点:MID(LOW+HIGH)2。(3)K与与中中点点元元素素RMID比比较较。若若K=RMID则则查查找找成成功功,程程序序结结束束;若若KRMID,则转步骤,则转步骤(5)。(4)低低半半部部分分查查找找(Lower),HIGHMID-1,返返回回步骤步骤(2),继续查找。,继续查找。第43页,共173页,编辑于2022年,星期一 (5)高高半半部部分分查查找找(Higher),LOWMID+1,返返回步骤回步骤(2),继续查找。,继续查找。图图5.7表表示示了了折折半半查查找找算算法法的的程程序序框框图图。给给出出的的程程序序首首先先把把查查找找值值与与数数组组的的第第一一个个元元素素和和最最后后一一个个元元素素相相比比较较,如如果果找找到到该该数数小小于于第第一一个个元元素素或或大大于于最最后后一一个个元元素素则则结结束束查查找找,否否则则从从SEARCH开开始始折折半半查查找找。SEARCH以以前前的的工工作作在在图图5.7中中未未表表示示出出来来。折折半半查查找找算法的程序实现如程序清单所示。算法的程序实现如程序清单所示。第44页,共173页,编辑于2022年,星期一图5.7 折半查找算法的程序框图第45页,共173页,编辑于2022年,星期一例例5-5折半查找算法程序。折半查找算法程序。DSEGSEGMENTLOW_IDW?HIGH_IDW?DSEGENDSCSEGSEGMENTASSUME CS:CSEG,DS:DSEG,ES:DSEG第46页,共173页,编辑于2022年,星期一B_SRCHPROCNEARPUSH DSPUSH AXMOVAX,DSEGMOVDS,AXMOVES,AXPOPAXCMPAX,ES:DI+2JACHK_LAST第47页,共173页,编辑于2022年,星期一 LEASI,ES:DI+2JEEXITSTCJMPEXITCHK_LAST:MOVSI,ES:DISHLSI,1ADDSI,DICMP AX,ES:SIJBSEARCHJEEXIT第48页,共173页,编辑于2022年,星期一 STCJMPEXITSEARCH:MOV LOW_I,1MOVBX,ES:DIMOVHIGH_I,BXMOVBX,DIMID:MOV CX,LOW_IMOVDX,HIGH_ICMPCX,DXJANO_MATCH第49页,共173页,编辑于2022年,星期一 ADDCX,DXSHRCX,1MOV SI,CXSHLSI,1COMPARE:CMP AX,ES:BX+SIJEEXITJAHIGHERDECCXMOVHIGH_I,CXJMPMID第50页,共173页,编辑于2022年,星期一HIGHER:INCCXMOVLOW_I,CXJMP MIDNO_MATCH:STCEXIT:POP DSRETB_SRCHENDPCSEG ENDSENDBSRCH第51页,共173页,编辑于2022年,星期一 若数组元素如下:若数组元素如下:LISTDW12,11,22,33,44,55,66,77,88,99,111,222,333如如果果要要查查找找的的数数为为(AX)=55。数数组组长长度度为为12,第第一一次次比比较较的的是是数数组组的的第第六六个个元元素素。因因5533,所所以以第第三三次次用用高高半半部部折折半半查查找找,比比较较的的是是第第四四个个元元素素44。因因5544,所所以以第第四四次次用用高高半半部部折折半半查查找找,比比较较的的是是第第五五个个元元素素55。这这样样经经过过四四次次比比较较后后,因因查查找找成成功而退出程序。功而退出程序。第52页,共173页,编辑于2022年,星期一 如如果果要要查查找找的的数数为为(AX)=57,则则第第一一次次比比较较的的仍仍是是第第六六个个元元素素66。因因5733,所所以以第第三三次次用用高高半半部部折折半半查查找找,比比较较的的是是第第四四个个元元素素44。因因5744,所所以以第第四四次次用用高高半半部部折折半半查查找找,比比较较的的是是第第五五个个元元素素55,因因 5755,再再 用用 高高 半半 部部 折折 半半 查查 找找 时时,因因LOWHIGH而以查找失败退出程序。而以查找失败退出程序。第53页,共173页,编辑于2022年,星期一 可可以以看看出出,在在这这个个例例子子中中,同同样样用用CMP指指令令以以及及条条件件转转移移指指令令产产生生两两个个或或多多个个程程序序分分支支。当当然然,由由于于多多数数运运算算型型指指令令置置条条件件码码,所所以以在在条条件件转转移移指指令令之之前前并并不不一一定定要要使使用用CMP或或TEST指指令令,只只要要保保证证使使用用条条件件转转移移指指令令时时的的条条件件码码符符合合要要求求就就可可以以了了。以以上上多多个个例例子子都都是是既既有有分分支支结结构构又又包包括括循循环环结结构构,实实际际上上,多多数数程程序序都都是是各各种种程程序序结结构构的的组组合合。而而且且,循循环环结结构构可可以以看看作作分分支支结结构构的的一一种种特特例例,它它只只是是多多次次走走一一个个分分支支,只在满足循环结束条件时,走另一个分支罢了。只在满足循环结束条件时,走另一个分支罢了。第54页,共173页,编辑于2022年,星期一 5.3.3跳跃表法跳跃表法分分支支程程序序的的两两种种结结构构形形式式都都可可以以用用上上面面所所述述的的方方法法来来实实现现。此此外外,在在实实现现CASE结结构构时时,还还可可以以使使用用跳跳跃跃表表法法,使使程程序序能能根根据据不不同同的的条条件件转转移移到到多多个个程程序序分分支中去。下面举例说明。支中去。下面举例说明。【例例5-6】试试根根据据AL寄寄存存器器中中哪哪一一位位为为1(从从低低位位到到高位高位)就把程序转移到就把程序转移到8个不同的程序分支中去。个不同的程序分支中去。第55页,共173页,编辑于2022年,星期一 下下面面列列出出了了用用变变址址寻寻址址方方式式实实现现跳跳跃跃表表法法的的程程序序,还还可可以以使使用用寄寄存存器器间间接接和和基基址址变变址址寻寻址址方方式式来来达达到到同同一一目目的的,这这三三种种方方法法并并无无实实质质的的区区别别,只只是是其其中中关关键键的的JMP指令所用的寻址方式不同而已。指令所用的寻址方式不同而已。跳跳跃跃表表法法是是一一种种很很有有用用的的分分支支程程序序设设计计方方法法,应应当通过例子掌握要领,灵活使用。当通过例子掌握要领,灵活使用。用变址寻址方式实现跳跃表法的程序:用变址寻址方式实现跳跃表法的程序:第56页,共173页,编辑于2022年,星期一DATASEGMENTDATATABDWROUTINE_1DWROUTINE_2DWROUTINE_3DWROUTINE_4DWROUTINE_5DWROUTINE_6DWROUTINE_7DWROUTINE_8第57页,共173页,编辑于2022年,星期一 DATA ENDSCODE SEGMENTMAIN PROCFARASSUMECS:CODE,DS:DATASTART:PUSH DSSUBBX,BXPUSHBXMOV BX,DATAMOV DS,BXCMPAL,0 第58页,共173页,编辑于2022年,星期一 JECONTMOV SI,0LP:SHR AL,1JNBNOT_YETJMP DATATABSINOT_YET:ADD SI,TYPEDATATABJMP LPCONT:ROUTINE_1:ROUTINE_2:第59页,共173页,编辑于2022年,星期一RETMAINENDPCODEENDSENDSTART第60页,共173页,编辑于2022年,星期一【例例5-7】用间接寻址方式实现跳跃表法的程序:用间接寻址方式实现跳跃表法的程序:CMP AL,0JECONTINUE_MAIN_LINELEABX,DATATABLP:SHRAL,1JNBNOT_YETJMPWORDPTRBXNOT_YET:ADDBX,TYPEDATATABJMPLPCONTINUE_MAIN_LINE:第61页,共173页,编辑于2022年,星期一5.4 5.4 循环程序设计循环程序设计 5.4.1循环程序结构循环程序结构循循环环程程序序结结构构可可以以总总结结为为两两种种结结构构形形式式,如如图图5.8所所 示示。一一 种种 是是 DO_WHILE结结 构构 形形 式式,另另 一一 种种 是是DO_UNTIL结构形式。结构形式。第62页,共173页,编辑于2022年,星期一图5.8 循环程序的结构形式第63页,共173页,编辑于2022年,星期一 1.DO_WHILE结构结构DO_WHILE结结构构把把对对循循环环控控制制条条件件的的判判断断放放在在循循环环的的入入口口,先先判判断断条条件件,满满足足条条件件就就执执行行循循环环体体,否否则就退出循环。则就退出循环。2.DO_UNTIL结构结构DO_UNTIL结结构构则则先先执执行行循循环环体体,然然后后再再判判断断控控制制条条件件,不不满满足足条条件件则则继继续续执执行行循循环环操操作作,一一旦旦满满足足条件则退出循环。条件则退出循环。第64页,共173页,编辑于2022年,星期一 这这两两种种结结构构可可以以根根据据具具体体情情况况选选择择使使用用。如如果果允允许许循循环环次次数数等等于于0的的情情况况,应应选选择择DO_WHILE结结构构,否否则则使使用用DO_UNTIL结结构构。不不论论哪哪一一种种结结构构形形式式,循循环程序都可由如下三部分组成:环程序都可由如下三部分组成:(1)循循环环的的初初始始状状态态。设设置置循循环环次次数数的的计计数数值值,为为使循环体正常工作而建立的初始状态等。使循环体正常工作而建立的初始状态等。(2)循循环环体体。这这是是循循环环工工作作的的主主体体,由由循循环环的的工工作作部部分分和和修修改改部部分分组组成成。循循环环的的工工作作部部分分是是为为完完成成程程序序功功能能而而设设计计的的主主要要程程序序段段;循循环环的的修修改改部部分分则则是是为为保保证证每每一一次次重重复复(循循环环)时时,参参加加执执行行的的信信息息能能发发生生有有规规律的变化而建立的程序段。律的变化而建立的程序段。第65页,共173页,编辑于2022年,星期一 (3)循循环环控控制制部部分分。循循环环控控制制本本来来应应该该属属于于循循环环体体的的一一部部分分,由由于于它它是是循循环环程程序序设设计计的的关关键键,所所以以要要对对它它作作专专门门的的讨讨论论。每每个个循循环环程程序序必必须须选选择择一一个个循循环环控控制制条条件件来来控控制制循循环环的的运运行行和和结结束束,而而合合理理地地选选择择该该控控制条件就成为循环程序设计的关键问题。制条件就成为循环程序设计的关键问题。第66页,共173页,编辑于2022年,星期一 有有时时,循循环环次次数数是是已已知知的的,此此时时可可以以用用循循环环次次数数作作为为循循环环的的控控制制条条件件,LOOP指指令令使使这这种种循循环环程程序序设设计计能能很很容容易易地地实实现现。有有时时循循环环次次数数是是已已知知的的,但但有有可可能能使使用用其其他他特特征征或或条条件件来来使使循循环环提提前前结结束束,LOOPZ和和LOOPNZ指令又是设计这种循环程序的工具。指令又是设计这种循环程序的工具。然然而而,有有时时循循环环次次数数是是未未知知的的,那那

    注意事项

    本文(第5章程序控制结构及其程序设计PPT讲稿.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开