《程序设计方法》PPT课件.ppt
《《程序设计方法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程序设计方法》PPT课件.ppt(89页珍藏版)》请在三一办公上搜索。
1、第5章 程序设计方法,教学目的及要求:精确掌握各种转移指令的功能、使用限制、标志位使用、在程序设计中的通常用法等2.能够实际应用所学到的转移指令,在编写完整程序的基础上使用分支、循环等复杂的流程结构教学重点与难点:1.在理解各标志位含义的基础上,着重理解各条件转移指令对标志位的解释、条件判断原理2.结合实例,理解转移指令在分支程序设计中的通常用途3.结合实例,理解条件转移指令的使用限制,理解并逐步建立由框图到程序的设计思路,并由此建立使用条件转移指令所需的良好习惯,开 始,第5章 程序设计方法,5.1 概述5.2 顺序程序设计5.3 分支程序设计5.4 循环程序设计5.5 子程序设计,开 始,
2、5.1 概述,5.1.1 汇编语言程序设计的一般步骤5.1.2 流程图5.1.3 三种基本结构,返回本章首页,5.1.1 汇编语言程序设计的一般步骤,汇编语言程序设计一般有以下几个步骤:1分析问题,确定算法2绘制流程图3根据流程图编写程序4调试程序,返回本节,5.1.2 流程图,1流程图的概念流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特点。,2流程图符号表示(1)起止框:表示程序的开始和结束。,起止框,(2)判断框,(3)处理框,(4)调用框,(5)指向线,(6)连接框,返回本节,5.1.3 三种基本结
3、构,(1)顺序结构,A,B,C,(2)分支结构,测试条件,A,B,Y,N,(3)循环结构,测试条件,A,N,Y,5.2 顺序程序设计,下面举例说明顺序程序的设计。【例4.1】试编写一程序计算以下表达式的值。=(v-(*+-540)/x式中x、v均为有符号字数据。设、的值存放在字变量、V中,结果存放在双字变量之中,程序的流程图如图4.1所示。,返回本章首页,图4.1 顺序运算程序流程图,源程序如下:DATASEGMENT XDW200 YDW100 ZDW3000 VDW10000 WDW2 DUP(?)DATAENDSCODESEGMENTASSUME DS:DATA,CS:CODE,STAR
4、T:MOVAX,DATA MOVDS,AX;DATADS MOVAX,X IMULY;(X)*(Y)DX:AX MOVCX,AX MOVBX,DX;(DX:AX)(BX:CX)MOVAX,Z CWD;(Z)符号扩展 ADDCX,AX ADCBX,DX;(BX:CX)+(DX:AX)(BX:CX)SUBCX,540 SBBBX,0;(BX:CX)-540(BX:CX)MOVAX,V,CWD;(V)符号扩展SUB AX,CXSBB DX,BX;(DX:AX)-(BX:CX)(DX:AX)IDIV X;(DX:AX)/XMOV W,AX;商WMOV W+2,DX;余数DXW+2MOV AH,4CHI
5、NT 21HCODEENDS;退出DOS 状态END START,【例4.2】,【例4.2】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NUM中,查表结果放在变量ENGLISH中。编写程序如下:,STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATASEGMENTTAB DB 80,85,86,71,79,96 DB 83,56,32,66,78。84NUM DB 10ENGLISH DB?DATA ENDSCODE SEGMENT,ASSUME DS:DATA,SS:STACK,CS:CODEBEGIN
6、:MOVAX,DATA MOVDS,AX LEABX,TAB MOVAL,NUM DECAL XLAT TAB MOVENGLISH,AL MOVAH,4CH INT21HCODEENDS ENDBEGIN,5.3 分支程序设计,5.3.1 用条件转移指令实现程序分支5.3.2 用跳转表实现多路分支,返回本章首页,5.3.1 用条件转移指令实现程序分支,【例4.3】编写计算下面函数值的程序:1X0Y=0X=0-1X0设输入数据为X、输出数据Y,且皆为字节变量。程序如下:,DATASEGMENTX DB-10Y DB?DATAENDSSTACK SEGMENT STACK DB 200 DUP(
7、0)STACK ENDSCODESEGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATA,MOVDS,AX CMPX,0;与0进行比较 JGEA1;X0转A1 MOVY,-1;X 0时,-1Y JMPEXITA1:JGA2;X0转A2 MOVY,0;X=0时,0Y JMPEXITA2:MOVY,1;X0,1Y EXIT:MOVAH,4CH INT21H CODE ENDS ENDSTART,图4.2 分支运算程序流程图,【例4.4】,【例4.4】试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。设三个带符号数分别在三个字
8、变量X、Y、Z中存储。程序流程图如图4.3所示,图4.3例4.4程序流程图,程序如下:STACK SEGMENT STACK DB 200 DUP(0)STACK ENDSDATA SEGMENTX DW 00ABHY DW 5Z DW 200MAX DW?DATA ENDSCODE SEGMENT,ASSUME DS:DATA,SS:STACK,CS:CODE START:MOVAX,DATA MOVDS,AX MOVAX,X CMPAX,Y;XY?JGL1 MOVAX,Y;YZ?CMPAX,Z JGEXITL2:MOVAX,Z JMPEXIT,L1:CMPAX,Z;XZ?JLEL2EXIT
9、:MOVMAX,AX MOVAH,4CH INT21HCODEENDS ENDSTART,返回本节,5.3.2 用跳转表实现多路分支,【例4.5】设某程序有8路分支,试根据给定的N值(18),将程序的执行转移到其中的一路分支。程序流程如图4.4所示。,程序如下:DATASEGMENTTABDW P1,P2,P3,P4,P5,P6,P7,P8N DB 5DATAENDSSTACK SEGMENT DB 200 DUP(0)STACK ENDSCODESEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE,START:MOV AX,DATAMOVDS,AXMOVAL,NDE
10、CALADDAL,ALMOVBL,ALMOVBH,0JMPTABBX,P1:JMP EXITP2:JMP EXITP2:JMP EXITP3:,JMPEXITP8:EXIT:MOVAH,4CH INT21HCODEENDS ENDSTART上述程序中的无条件转移指令的转移地址采用的是变址寻址。同理,转移地址也可以用寄存器间接寻址或基址加变址寻址,读者可自行考虑。,返回本节,5.4 循环程序设计,5.4.1 循环程序的结构5.4.2 单重循环程序设计5.4.3 多重循环程序设计,返回本章首页,5.4.1 循环程序的结构,1初始化部分2循环体部分3循环控制部分,循环程序的常见结构形式如图4.5(a
11、)、(b)所示。,返回本节,5.4.2 单重循环程序设计,1计数控制2条件控制,1计数控制,【例4.7】已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数。显然,每个元素为一个8位有符号二进制数,统计其中正元素的个数可用循环程序实现。其程序流程图如图4.6所示。,源程序如下:DATA SEGMENT BUF DB 10,12,-3,6,-7,8,10 LENGTH EQU$-BUF NUM DW?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA BX,BUF;初始化部分
12、MOV CX,LENGTH MOV AX,0,LOP:CMP BYTE PTR BX,0;循环体部分 JBE NEXT INC AXNEXT:INC BX LOOP LOP;控制部分 MOV NUM,AX;保存结果 MOV AH,4CH INT 21HCODE ENDS END START,【例4.8】,【例4.8】试编写一程序,要求比较两个字符串STR1和STR所含字符是否相同,若相同则显示MATCH!,若不相同则显示NO MATCH!。(程序略)其流程图如图4.7所示。,图4.7 程序流程图,【例4.9】试编一个程序将字单元BUF中所含1的个数存入COUNT单元中。要测出BUF字单元所含1
13、的个数,首先将BUF中的数送给寄存器AX,然后将AX寄存器逻辑左移一次,如果CF=1,则表明AX中的最高位为1,则计数器CL计数1次,如果CF=0,表明AX最高位为0,这样依次将最高位移入CF中去测试。移位之后,判断AX的值是否为0,如果为0则结束循环,不为0,则继续循环。其流程图如图4.8所示。,2条件控制,程序如下:STACK SEGMENT STACK DB 200 DUP(0)STACK ENDSDATASEGMENTCOUNT DB?DATAENDSCODESEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK,START:MOVAX,DATAMOVDS,AX
14、MOVAX,BUFMOVCL,0;计数器为0LOPA:ANDAX,AXJEEXIT;(AX)=0,结束循环SHLAX,1 JNCLOPA INCCL;产生进位,(CL)+1CLJMPLOPAEXIT:MOVCOUNT,CLMOVAH,4CH;源程序结束INT21HCODEENDSENDSTART,返回本节,5.4.3 多重循环程序设计,多重循环程序设计的原则与单重循环类似,但也有其特殊性。在多重循环程序设计中,要注意内层循环和外层循环之间的参数协调。当考虑外层参数时,要兼顾内层循环的需要,当修改内层循环参数时,也要注意对外层循环的影响。尤其注意,从外层循环程序再次进入内层循环时,初始条件必须重
15、新设置。【例4.10】在以BUFFER为首址的存储区中存放有10个单字节无符号整数,现需将它们按小到大的顺序排列在BUFFER存储区中,试编写其程序。为了方便说明二重循环,这里采用“简单选择”法进行排序。,“简单选择”法进行排序的总体思路:对含有n个数的无序数列按照从小到大的顺序排序。在每一趟排序过程中,从n-i+1(i=1,2,n-1)个数中选出最小的数,并把它放在第i个位置上.,程序如下:;数据段DSEG SEGMENTBUFFER DB 23,12,45,127,3,58N EQU$-BUFFERDSEG ENDS;代码段CSEG SEGMENT ASSUME CS:CSEG,DS:DS
16、EG,START:MOVAX,DSEG MOVDS,AX MOVBX,OFFSET BUFFER DEC BX MOV SI,1;I=1FORI:MOVDI,SI INC DI;J=I+1 MOVAL,BX+SIFORJ:CMPAL,BX+DI;AI与AJ比较 JBENEXTJ;AI小于等于AJ转 XCHGAL,BX+DI;AI与AJ交换 MOVBX+SI,AL,NEXTJ:INC DI;J=J+1 CMP DI,N JBE FORJ;J=N时转NEXTI:INC SI;I=I+1 CMP SI,N-1 JBE FORI;I=N-1时转 MOV AH,4CH INT 21HCSEG ENDSE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计方法 程序设计 方法 PPT 课件
链接地址:https://www.31ppt.com/p-5564371.html