循环和分支程序设计ppt培训课件

上传人:aa****6 文档编号:54580892 上传时间:2018-09-15 格式:PPT 页数:62 大小:119.50KB
返回 下载 相关 举报
循环和分支程序设计ppt培训课件_第1页
第1页 / 共62页
循环和分支程序设计ppt培训课件_第2页
第2页 / 共62页
循环和分支程序设计ppt培训课件_第3页
第3页 / 共62页
循环和分支程序设计ppt培训课件_第4页
第4页 / 共62页
循环和分支程序设计ppt培训课件_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《循环和分支程序设计ppt培训课件》由会员分享,可在线阅读,更多相关《循环和分支程序设计ppt培训课件(62页珍藏版)》请在金锄头文库上搜索。

1、第五章 循环和分支程序设计,ASSEMBLY LANGUAGE,软件开发按照软件工程的方法进行,主要包括: 系统分析:对用户的需求进行分析并最终对问题 做出明确的定义。 系统设计:根据对问题的定义,用能容易转变成 程序的方式对任务做出描述。 程序编码:系统设计的实施。用计算机能够直接 理解或能进行翻译的形式编写程序。 代码调试:验证程序设计的正确性。 系统维护:对系统进行日常维护、做必要的改进 等。 以上各步必须认真检查,发现错误应及时纠正, 绝不可以拖延至下一阶段。,由于汇编语言的固有特点,当把系统划分成多个模块后,模块的详细设计可以采用流程图的方法,这种方法比较直观、层次清晰、便于发现错误

2、,细化后的流程图更易于汇编语言的代码实现。可以采用结构程序设计的方法设计程序。即程序的每一部分由若干个单元组成,而每个单元包含一个有限结构集,每个结构有一个入口和一个出口。这种结构便于查错及调试。结构程序有三种基本结构:顺序结构、分支结构和循环结构。相应的程序叫做简单程序、分支程序和循环程序。,第五章 程序基本结构及其程序设计,5.1 顺序结构及简单程序设计 5.2 分支结构及程序实现 5.3 循环结构及程序实现,5.1 顺序结构及简单程序设计,程序设计中最基本的结构是如图所示的顺序结构,它只有一个起始框、一个结束框和一至多个执行模块。具有顺序结构的程序叫做简单程序。,顺序结构中的执行模块可以

3、是一个指令、一条语句或完成某一功能的程序。简单程序执行的特点是其中的指令或语句是按顺序执行的,没有分支或循环。,例. 设置光标到屏幕左上角。SET_CUR PROCMOV AH,2MOV BH,0MOV DX,0INT 10HRETSET_CUR ENDP 这个程序是顺序执行的,一条指令执行后顺序执行紧接其后的另一条指令。实际上许多程序片段都具有顺序结构。,5.2 分支结构及程序实现,许多实际问题很复杂,有时需要根据不同条件进行不同的处理,此时就需要用分支程序设计。,一、分支结构两种分支结构如图所示。IF_THEN_ELSE结构是先测试条件,若符合条件则转向另一分支,否则顺序执行。CASE结构

4、表示可能的条件有n种,但每次只能有一个条件符合。菜单程序是CASE结构的典型应用。,二、分支程序设计具有分支结构的程序叫做分支程序。设计分支程序时最好先用流程图画出程序流向,这样思路清晰,也利于编码实现,实现分支时要用到转移指令。,1.IF_THEN_ELSE结构程序设计例1.实现符号函数Y的功能。其中:-128X+127程序5.1是该例的编码实现。,1当X0时Y 0当X0时-1当X0时,程序5.1 X DB ? ;被测数据 Y DB ? ;函数值单元MOV AL,0CMP X,ALJG BIGJZ SAVMOV AL,0FFH ;小于0JMP SHORT SAV BIG: MOV AL,1

5、;大于0 SAV: MOV Y,AL ;保存结果,例2在有序表中用折半查找法查找指定元素。采用折半查找法可以提高对有序表的查表效率。表中元素为可显示字符的ASCII值,要查找的元素等待从键盘输入。查找算法是:先初始化区间上下限。然后把要找的数与边界元素(表中最小数和最大数)比较,若匹配则表示找到,显示查找0次。若不是边界元素,则在表中折半查找该值,若未找到则显示NO FOUND信息。若找到,在屏幕上显示找到的字符,并显示查找次数。所显示的第一位是输入的字符,第二位是找到的字符,第三和第四位是查找次数。编码见程序5.2。,程序5.2 STACKSG SEGMENT STACK SDW 64 DU

6、P(ST) STACKSG ENDS DATA SEGMENT BUF DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H ;有序表 COUNT EQU $-BUF ;表项数 CHAR DB ? ;要查找的数 MARK DW 0 ;查找次数 PROMPT DB NO FOUND$ ;没找到提示信息 DATA ENDS,CODE SEGMENT ASSUME CS:CODE,DW:DATA,SS:STACKSG MAIN PROC FARMOV AX,DATAMOV DS,AXMOV AH,1 ;输入要查找数的字符INT

7、21HMOV CHAR,AL ;保存要找的数LEA SI,BUF ;表起始地址,初始;化区间下限(左)MOV CX,COUNT MOV DX,SI ADD DX,CX ;最后数的地址加1MOV DI,DX ;初始化区间上限(右)MOV DX,0,CMP AL,SI ;判边界元素 mov bx,si JB NOFID ;小于表中最小数转未找到 JE FOUND ;是表中最小数转找到 CMP AL,DI-1;判边界元素 mov bx, di; dec bx JA NOFID ;大于表中最大数转未找到 JE FOUND ;是表中最大数转找到 MOV DX,1 ;初始化查找次数 MOV AL,CHAR

8、 ;要查找的数 C1: MOV BX,SI ;循环入口 ADD BX,DI SHR BX,1 ;折半 CMP AL,BX ;比较 JZ FOUND ;找到转 PUSHF,CMP BX,SI ;指针下限吗?JZ NOFID ;若等于表示未找到,转POPFJL LESS ;可能在左半区转MOV SI,BX ;可能在右半区,调整下限JMP SHORT NEXT LESS: MOV DI,BX ;调整上限 NEXT: INC DX ;查找次数加1JMP C1 NOFID: LEA DX,PROMPT ;显示未找到提示信息MOV AH,9 INT 21H JMP SHORT EXIT,FOUND: MO

9、V MARK,DX ;保存查找次数PUSH DXMOV AH,2 ;显示找到的数MOV DL,BXINT 21HMOV CL,10 POP AXDIV CL ;把查找次数转换成十进制数OR AX,3030H ;转换成ASCII码MOV DL,ALPUSH AX,MOV AH,2 ;显示查找次数的高位INT 21HPOP AXMOV DL,AHMOV AH,2 ;显示查找次数的低位INT 21H EXIT: MOV AX,4C00HINT 21H MAIN ENDP CODE ENDSEND MAIN,2CASE结构程序设计在处理实际问题时,对于分支比较少的情况用IF_THEN_ELSE结构是简

10、便可行,但对于分支很多的情况,例如INT 21H有上百种系统功能,系统有256种中断等,要正确地实现它们的分支转移,如何设计主控程序?最好的办法是使用CASE结构程序设计。可以用跳跃表法实现CASE结构,实现的关键是先要构成跳转表,然后用无条件间接转移指令实现跳转。,例3.编制一个管理文件的菜单程序。该程序应该能够实现建立文件、修改文件、删除文件、显示文件和退出应用程序返回操作系统的主控功能。要求在屏幕上显示5种功能,然后从键盘上选择15即可转入相应的功能,而输入其它字符则提示输入非法并允许重新输入。若选择退出功能,则能正确返回;若选择其它功能,应能返回到菜单,提供继续选择的机会。设菜单程序及

11、5个子功能在同一个模块。, 分析要能够转移到不同的分支,必须提供各个分支的入口地址。因为已经假设菜单程序及5个子功能在同一模块中,所以只需知道各入口的偏移量即可。设想把各分支入口地址集中在一起构成一个地址表,把这个地址表称为跳转表。,设计跳转表 JMP_TAB DW 建立文件分支入口标号DW 修改文件分支入口标号DW 删除文件分支入口标号DW 显示文件分支入口标号DW 退出分支入口标号 如果主控程序及5个子功能分别在不同的段或模块中,只需要把数据定义语句助记符的DW换成DD即可。,用无条件间接转移指令实现CASE转移。如果跳转表是用DW定义的,则用段内间接转移指令。若是用DD定义的,则用段间间

12、接转移指令。下边给出段内间接转移的几种格式: JMP JMP_TABSI ;SI中为位移量 LEA BX,JMP_TAB JMP WORD PTR BXSI ;SI中为位移量 LEA BX,JMP_TABADD BX,位移量JMP WORD PTR BX,说明:位移量是跳转表中所选项与表基址的距离。我们把所有功能号连续排列,设选择了K号功能,则:索引号K起始功能号(例如功能号为1,2,3N,则索引号K1)位移量索引号每项入口地址占用的字 节数。对于用DW定义的跳转表,每项占用 的字节数为2,对于用DD定义的则为4。推而广之,只要功能号是有规律可循的,即可以构造出位移量的算法模型。表项地址表基址

13、位移量。一旦得到了表项地址,就可以使用无条件间接转移指令实现转移。,流程图 根据分析,实现管理文件的菜单程序流程图为:, 编程根据流程图书写的程序见程序5.3。本例用上述的段内间接转移的第种格式实现转移。,程序5.3 stacksg segment stack stkdw 32 dup(s) stacksg ends data segment MSG1 DB 1CREATE,0DH,0AH ;菜单DB 2UPDATE,0DH,0AHDB 3DELETE,0DH,0AHDB 4PRINT,0DH,0AHDB 5QUIT,0DH,0AH,$ MSG2 DB INPUT SELECT:,0DH,0A

14、H,$ ;选择提示 JMP_TAB DW CREATE ;地址表(跳转表)DW UPDATEDW DELETEDW PRINTDW QUIT data ends,code segment main proc farassume cs:code,ds:datapush dsxor ax,axpush axmov ax,datamov ds,ax REPEAT: MOV AX,0600H ;清屏MOV CX,0MOV DX,184FHMOV BH,07INT 10H,CURSOR: MOV AH,02 ;设置光标MOV BH,0MOV DX,0400HINT 10HLEA DX,MSG1 ;显示菜单MOV AH,9INT 21HLEA DX,MSG2 ;显示选择提示MOV AH,9INT 21H,RDKB: MOV AH,1 ;等待输入选择号INT 21HCMP AL,31H ;选择合法性检查JB BEEP ;若非法则转移CMP AL,35HJA BEEPAND AL,0FH ;ASCII码转换为非压缩BCD码XOR AH,AHDEC AX ;得到索引值ADD AX,AX ;i项位移量LEA BX,JMP_TAB ;装入表首址ADD BX,AX ;得到表项地址JMP BX ;按表项地址转移,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号