资源描述:
《基本结构程序设计方法.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、第五节基本结构程序设计方法一、顺序程序设计二、分支程序设计三、循环程序设计四、子程序设计1概述汇编语言程序设计的一般步骤流程图2汇编语言程序设计的一般步骤汇编语言程序设计一般有以下几个步骤:1.分析问题,确定算法2.绘制流程图3.根据流程图编制程序4.调试程序3流程图1.流程图的概念流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特点。2.流程图符号表示(1)起止框:表示程序的开始和结束。起止框4(2)判断框(3)处理框(4)调
2、用框5(5)指向线(6)连接框6一、顺序程序设计顺序结构顺序结构的程序一般是简单程序,其特点是程序顺序执行,无分支,无循环与转移。例4.4内存中TABLE开始存放0~9的平方值,通过人机对话,对任意给定的数(0~9),查表得的平方值,将其放在AL中。datasegmenttabledb0,1,4,9,16,25,36,49,64,81dufdb’pleaseinputontnumber(0~9):’0dh,0ah,’$’dataendsstacksegmentparastack’stack’stapadb100d
3、up(?)codesegmentassumecs:code,ds:data,ss:stack7start:pushaxmovax,datamovds,axmovax,stackmovss,axmovsp,topmovbx,offsettablenext:movdx,offsetbuf;9号功能调用,显示字符串,提示输入一个数movah,9int21h8movah,1;1号功能调入,等待键入一个数且送ALint21hmovah,0;查表得键入数的平方值andal,0fh;屏蔽高4位addbx,axmoval,[bx
4、]movah,4chint21hcodeendsendstart9二、分支结构一个大的程序完全顺序结构实际上并不可能,经常会遇到有分支的情况,分支结构程序通常采用条件转移或转移表来实现。典型的分支结构如教材图4.3所示。下面举例说明分支结构:例4.5给符号函数建立标志。=1当>0符号函数y=0当=0=-1当<0要实现符号函数,只要把从内存中取出来,执行一次“与”或“或”操作,就可以把的数值特征反映在标志上,再根据标志来转移。程序框图如教材图4.4所示。10源程序如下:datasegmentxdw15ydw?dat
5、aendsstacksegmentstack’stack’db100dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stack11start:pushaxmovax,datamovds,axmovax,xandax,axjzxerojnszeromovbx,offffhjmpdone12zero:movbx,0jmpdoneplus:movbx,1done:movy,bxmovah,4chint21hcodeendsendstart13三、循环结构循环结构是程
6、序设计中最常用的结构。凡需要重复做的工作,在计算机中都可以用循环结构程序来实现。循环程序有两种结构形式,一种是“先执行,后判断”,另一种为“先判断,后执行”。这后一种结构实现上允许0次循环,因而对有些程序更有效,它适合于循环次数不固定的程序。14循环程序的常见结构形式15无论哪种循环结构,都包括以下四个部分:(1)初始化:为循环作准备,设置循环计数值,设置变量初值。(2)循环体:循环部分的核心,包括循环的全部指令。(3)修改参数:修改操作数地址,为下次循环作准备。(4)循环控制:修改计数器值,判断循环控制条件,决
7、定是否跳出循环。对“先执行,后判断”结构,进入循环后至少要执行一次循环体,再判判断循环是否结束。对“先判断,后执行”结构,进入循环后,先判断循环结构条件,再决定是否执行循环体,可能循环体一次也不执行,即循环次数为0。16例4.6若将内存2000H:0100H开始的256个字节的数据块移动到内存2000H:0200Hmovax,2000h;初始化,为循环工作准备movds,axmovsi,0100h;设置源数据块地址指针movdi,0200h;设置目的地址指针movcx,100h;设置循环次数next:moval,
8、[si];循环体mov[di],alincsi;修改参数incdiloopnext;循环控制movah,4chint21h17例4.7BX寄存器中有一个16位二进制数,编程统计该数中1的个数,将其结果放到CL寄存器中。xorcl,cl;初始化,为循环作准备lopl:andbx,bx;循环控制jzstopshlbx,1:循环体jnclop1inccljmplop1stop: