《基本程序设计》PPT课件.ppt
《《基本程序设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本程序设计》PPT课件.ppt(184页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5 5章章 基本程序设计基本程序设计第第5 5章章 基本程序设计基本程序设计 5.1顺序程序设计顺序程序设计5.2分支程序设计分支程序设计5.3循环程序设计循环程序设计5.4子程序设计子程序设计5.5具有模块结构的程序设计具有模块结构的程序设计第第5 5章章 基本程序设计基本程序设计5.1顺序程序设计顺序程序设计8086的汇编语言程序设计比较复杂,掌握它有一定的困难,故必须先掌握8086的指令系统及汇编语言的基本约定。从本章起,我们可以集中力量来解决程序设计的方法问题,并将编写的源程序进行汇编和连接,生成对应的可执行的程序文件,在MSDOS环境下运行这些程序,这将大大加快学习汇编语言的进程
2、,深入掌握汇编语言程序设计的方法。第第5 5章章 基本程序设计基本程序设计任何一种程序设计语言编写的程序,其结构都是由顺序程序、分支程序和循环程序这三种基本结构组成的。程序结构设计方法简介。程序结构设计是把算法转化为程序的准备阶段。对于算法比较复杂的问题,应绘制程序结构图或程序流程图。结构图可描述各模块间的参数传送及相互调用的关系,程序流程图则能较好地描述程序执行的过程。第第5 5章章 基本程序设计基本程序设计1.结构图(structurechart)结构图是描述程序结构和程序模块间的关系的一种设计方法,它的基本部分是长方形框,每个框表示1个模块,如图所示。方框内用字符串表示(标记)模块的名字
3、,方框之间的带方向的箭头连线表示模块间的调用关系。调用模块或外层模块通常画在上面,箭头指向的框表示被调用的模块或内层模块,图5.1(a)中,A框为调模块,B框为被调用模块。第第5 5章章 基本程序设计基本程序设计若可以选择性地调用,主模块以射线的形式表示,如图5.1(b)中,调用模块A可有选择地调用B,C及D模块。图5.1(c)则描述了在一个循环层中调用B,C,D模块的方式。图5.1(d),描述当两个模块间有信息交换时的情况,此时可用带标注的箭头来表示信息内容.第第5 5章章 基本程序设计基本程序设计图5.1结构图法示例第第5 5章章 基本程序设计基本程序设计2.流程图法(flowchart)
4、流程图是最早被使用的一种方法,也是最直观的方法。流程图由逻辑框和流程线组成。逻辑框是指示程序的操作功能的符号,流程线是指示操作顺序的符号。流程图常用符号如图所示。第第5 5章章 基本程序设计基本程序设计图5.2流程图中的符号第第5 5章章 基本程序设计基本程序设计(1)端点框端点框表示程序的两端起点和终点。框内可以写上合适的文字,例如“开始(start)”,“结束(end)”或者程序名,起始地址等。(2)过程框或处理框用于表示一种处理功能或过程的程序段,框内可用文字标注扼要的功能或过程说明。该框可以简单到只包含一条指令,复杂到描述一个程序模块(或子程序即过程)。第第5 5章章 基本程序设计基本
5、程序设计(3)判断框用于表示1个程序中判定点,程序将从这一点开始分支,框内用文字符号注明检测条件,而检测的结果分别注明于各分支流程线上。(4)连接框它表示1段程序在此处被人为中止,框内标有符号,以便与带有同样符号的另一个框相联系。对于一个大的流程图或由于篇幅不够、或由于避免出现交叉而不得不被打断的情况下,用连接框表示程序流程图从何处被中止,又从何处重新开始。第第5 5章章 基本程序设计基本程序设计(5)流程线带有箭头的流程线用于指出程序执行的流向。一个程序按其功能可分为若干部分,每部分可用一个逻辑框来表示,各个逻辑框通过流程线有机地联系起来,构成了总的程序流程图。流程图可以清楚地反映设计思想和
6、程序结构是否合理。流程图是程序设计中使用得最早,最易为人们接受和应用的一种有效的工具。第第5 5章章 基本程序设计基本程序设计3.NS图(NASSISHCINDERMAN)NS图又称为方块图,是结构化程序设计中的算法描述工具。用NS图得到的程序一定是结构化程序。非结构化的程序,用NS图是无法表示的。它有三种基本逻辑,五种类型,如图所示。三种基本逻辑即顺序逻辑、选择逻辑和循环逻辑。选择逻辑可分为单分支和多分支两类。循环逻辑又分为当型循环(dowhile)和直到型循环(dountilp)两类。第第5 5章章 基本程序设计基本程序设计图5.3NS图表示法第第5 5章章 基本程序设计基本程序设计4.伪
7、码流程图伪码流程图是通过形式语言描述程序结构的一种方法。它可以直接把流程图或方块图(NS图)以伪码流程图的形式表示出来,并能很方便地转化为程序。例如:选择结构可以表示如下:IFPTAELSEBENDIF第第5 5章章 基本程序设计基本程序设计对于多分支的选择结构可用伪码流程图表示如下:DOCASECASEP1ACASEP2BCASEPNSENDCASE第第5 5章章 基本程序设计基本程序设计5.1.1简单算术运算及逻辑运算顺序程序1.单字节压缩BCD数加法运算例5.1将存储单元A1和A2中的两个BCD数相加,结果送至A3单元中。相加后的进位送至A31单元。分析:为了得到十进制的结果,应在两个字
8、节相加后再用加法十进制调整指令DAA进行调整。对于A1、A2、A3这三个存储器变量的存取方法,希能通过实例掌握。第第5 5章章 基本程序设计基本程序设计源程序如下:NAMEEX051DATASEGMENTA1DB48HA2DB53HA3DB2DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA第第5 5章章 基本程序设计基本程序设计START:MOVAX,DATAMOVDS,AXMOVAL,A1ADDAL,A2DAAMOVA3,ALLAHFANDAH,01HMOVA31,AHMOVAH,4CHINT21HCODEENDSENDSTART第第5 5章章 基
9、本程序设计基本程序设计2.二进制字加法及乘法运算例5.2首先将FIRST字变量与SECOND字变量相加,结果存至THIRD存储字中,然后将FIRST与SECOND两个字变量相乘,结果存至THIRD1开始的两个字中。分析:8088的指令既可进行字节运算,也可进行字运算,只要变量类型定义正确,本程序即很容易编写。第第5 5章章 基本程序设计基本程序设计源程序如下:;NAMEEX052DATASEGMENTFIRSTDW7684SECONDDW23569THIRDDW?THIRD1DW2DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA第第5 5章章 基本程
10、序设计基本程序设计START:MOVAX,DATAMOVDS,AXMOVAX,FIRSTADDAX,SECONDMOVTHIRD,AX;保存加法结果MOVAX,FIRSTMULSECONDMOVTHIRD1,AXMOVTHIRD12,DX;保存乘法结果MOVAH,4CHINT21H第第5 5章章 基本程序设计基本程序设计CODEENDSENDSTART其中MULSECOND实现16位乘法,即(AX)*存储器字,存储器变量给指令功能的灵活性发挥了很大的作用,使程序设计变得更加简单省事。第第5 5章章 基本程序设计基本程序设计3.取数的反码和补码例5.3将字变量A1转换为反码和补码,分别存入字变量
11、A2和A3中。分析:此处的取反码和取补码,是指取一个数的相反数的反码和补码。取反码要求原数按位求反,可由NOT指令实现,补码可由反码加1得到。也可以由NEG指令获取相反数的补码,由补码减1得到反码值。所以可用两种方法来实现。第第5 5章章 基本程序设计基本程序设计(1)先取反,再取补的程序段:MOVAX,A1NOTAX;取反码MOVA2,AXINCAX;形成补码MOVA3,AX第第5 5章章 基本程序设计基本程序设计(2)先取补再取反的程序段:MOVAX,A1NEGAX;取补码MOVA3,AXDECAX;形成反码MOVA2,AX第第5 5章章 基本程序设计基本程序设计5.1.2字符处理和代码转
12、换程序1.屏蔽和组合例5.4将字类型变量A的高4位和低4位置0,其余各位保持不变。分析:要让一个数的某几位置0,则只要与一个数相与。对应位为0,则相与结果即为0;对应位为1,则相与结果即保持不变。此处应与数0FF0H相与,0FF0H被称为屏蔽字。对应的程序段如下:第第5 5章章 基本程序设计基本程序设计MOVAX,AANDAX,0FF0HMOVA,AX也可用1条8086指令实现:ANDA,0FF0H;可见8086指令灵活、功能强大第第5 5章章 基本程序设计基本程序设计2.拆字例5.5将存储单元A中2个压缩BCD数拆成2个非压缩的BCD码,低位BCD数存入C中,高位BCD数存于B中,并将对应的
13、ASCII码存入C1及B1中。分析:将1个字节中的两位BCD码分开,可采用屏蔽高4位、保留低4位的方法,得到低位BCD码;由未组合的BCD码转为ASCII码,只要高4位加或或30H;若将高4位BCD码分离,可以采用逻辑右移4位的方法,左边移入4个0,即可达到目的。程序段如下:第第5 5章章 基本程序设计基本程序设计程序段如下:NAMEEX055DATASEGMENTADB37HBDB?CDB?B1DB?C1DB?DATAENDSCODESEGMENT第第5 5章章 基本程序设计基本程序设计ASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PU
14、SHAX;保存返回地址MOVAX,DATAMOVDS,AXMOVAL,AMOVCL,4SHRAL,CLMOVB,AL第第5 5章章 基本程序设计基本程序设计ORAL,30HMOVB1,ALMOVAL,AANDAL,0FHMOVC,ALORAL,30HMOVC1,ALRET;返回DOSMAINENDPCODEENDSENDSTART第第5 5章章 基本程序设计基本程序设计3.查表将1个09的BCD数转换成格雷码格雷码又称循环码,循环码的特点是任意两个相邻的数之间只有1位状态改变。即任意一个BCD数与它相邻的数之间只有1位(二进制位)的状态不同。满足这种要求的编码状态很多,表仅给出一种。第第5 5
15、章章 基本程序设计基本程序设计表5.1格雷码与BCD数之间的对应关系第第5 5章章 基本程序设计基本程序设计例5.6将变量A中的两位BCD码转换为格雷码。高位格雷码存于C中,低位的格雷码存于B中。分析:查表指令XLAT是实现转换的关键,该指令要求从(DS):(BX)(AL)中取得结果。源程序如下:NAMEEX056DATASEGMENTGRAYDB00H,01H,03H,02H,06HDB0EH,0AH,08H,0CH,04H第第5 5章章 基本程序设计基本程序设计ADB25HBDB?CDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX
16、,DATAMOVDS,AXMOVAL,AMOVCL,4SHRAL,CL第第5 5章章 基本程序设计基本程序设计MOVBX,OFFSETGRAYXLATMOVC,ALMOVAL,AANDAL,0FHXLATMOVB,ALMOVAH,4CHINT21HCODEENDSENDSTART第第5 5章章 基本程序设计基本程序设计5.2分支程序设计分支程序设计5.2.1简单分支结构程序单重分支程序的结构可用图表示。图中的T(true)表示条件为真(成立),F(false)表示条件为假(不成立)。在8088汇编中,条件判断和转移操作通常用比较指令和条件转移指令实现。比较指令根据比较结果置标志位,转移指令根据
17、标志位决定分支的走向。第第5 5章章 基本程序设计基本程序设计图5.4单重分支结构程序第第5 5章章 基本程序设计基本程序设计例5.7变量X的符号函数可用下式表示:Y的取值是由X的符号决定的。为了判别X的符号,可以让X直接与0比较,也可以用一条能影响标志位的指令来进行。例如用与或或操作,就把X的符号和是否为0反映到SF与ZF标志上。流程图如图5.5所示。第第5 5章章 基本程序设计基本程序设计图5.5符号函数的程序流程图第第5 5章章 基本程序设计基本程序设计源程序如下:NAMEEX057CODESEGMENTASSUMECS:CODE,DS:CODESIGEF:PUSHCSPOPDS;将CO
18、DE值赋给DSMOVAX,X;取变量X值ORAX,AX;置标志JEZERO;X为0转ZERO第第5 5章章 基本程序设计基本程序设计JNSPLUS;X不为负,转PLUSMOVBL,0FFH;X为负,将0FFH(即-1)(BL)JMPCONTI;ZERO:MOVBL,0;X为0,将0(BL)JMPCONTIPLUS:MOVBL,1;X为正,将1(BL)CONTI:MOVRESULT,BL;保存结果至RESULTMOVAH,4CH;返回DOSINT21H第第5 5章章 基本程序设计基本程序设计XDW7086HRESULTDB?CODEENDSENDSIGEF该程序中,DS与CS都对应同一个逻辑段C
19、ODE,由于CODE由系统自动装入CS中,故用PUSHCS,先将CS值压入堆栈,然后再用POPDS指令,将CODE值装入DS。在CODE中除了指令代码外,还含有X和RESULT这样的数据变量。第第5 5章章 基本程序设计基本程序设计例5.8比较两个带符号数的大小,若AB,则显示出AB,否则显示BA。程序流程图如图所示。图5.6例5.8程序流程图第第5 5章章 基本程序设计基本程序设计源程序如下:NAMEEX058CODESEGMENTASSUMECS:CODE,DS:CODESTART:PUSHCSPOPDSMOVAL,ACMPB,ALJGEBGA;BA转BGAMOVDL,A;准备显示AB第第
20、5 5章章 基本程序设计基本程序设计MOVAL,BJMPCOMBGA:MOVDL,B;准备显示BAMOVAL,ACOM:MOVAH,2;利用系统调用2,显示1个字符INT21HMOVDL,INT21HMOVDL,ALINT21H第第5 5章章 基本程序设计基本程序设计MOVAH,4CH;返回DOSINT21HADBBDBCODEENDSENDSTART此处利用系统调用2,显示比较的结果,要求将调用号2送入AH,显示的字符ASCII码送DL,用INT21H进行调用。第第5 5章章 基本程序设计基本程序设计5.2.2多分支结构程序在程序设计中,有时要求对多个条件同时进行判断,根据判断的结果,可能有
21、多个分支要进行处理,就象伪码流程图法中的DOCASE语句及NS图表示法中的多分支逻辑结构。然而在汇编语言中,每一条条件转移指令只有两个出口,因此,在遇到多分支结构的程序时,只能用多条条件转移指令来实现。例5.9根据源块地址与目标块地址有无重叠分别用不同的方式进行数据块传送的指令。第第5 5章章 基本程序设计基本程序设计例如在A地址有50个单元的数据块,要求传到B地址处的50个单元的存储区中,A和B两个区域的位置关系,可有三种情况,如图所示。图5.7(a)为两个数据块之间没有重叠的情况,而图5.7(b)和(c),为两个数据块之间存在部分重叠的情况。对于图5.7(b),若由A块传送至B块,可采用由
22、低地址端先传送,按增址方向实现字符串的自动传送。但不能采用由高地址端先传送,按减址方向实现字符串的自动传送。第第5 5章章 基本程序设计基本程序设计图5.7两数据块关系图第第5 5章章 基本程序设计基本程序设计对于图5.7(c),由A块传送至B块,则应采用从高地址端先传送,按减址方向重复字符串的传送,而不应由低地址端先传送,按增址方向重复字符串的传送。不注意以上的情况,并采取不同的传送方法,就可能在传送中破坏重叠区的原来数据。图5.8,就是能区别A、B两块间的位置关系,正确传送块的流程图。对应的源程序如下:第第5 5章章 基本程序设计基本程序设计图第第5 5章章 基本程序设计基本程序设计对应的
23、源程序如下:NAMEEX-05-9DATASEGMENTBLOCKDB100DUP(X)DB100DUP(Y);定义了200个字节的存储区AEQUBLOCK20BEQUBLOCK60;A,B关系属图的(c)LEQU50第第5 5章章 基本程序设计基本程序设计DATAENDSSTACKSEGMENTPARASTACKSTACKDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTARTPROCFARBEGIN:PUSHDS第第5 5章章 基本程序设计基本程序设计MOVAX,0PUSHAXMOVAX,DATAM
24、OVDS,AXMOVES,AXMOVSI,OFFSETAMOVDI,OFFSETBCMPSI,DIJADOA;A为大地址,转DOA第第5 5章章 基本程序设计基本程序设计ADDSI,L1;取A尾址CMPSI,DI;A尾址B首址(无重叠?)JBDOA;A尾址小,无重叠STD;重叠,减量数据串传送ADDDI,L1;指向B串尾址JMPBMVDOA:CLDBMV:REPMOVSBRETSTARTENDSENDBEGIN第第5 5章章 基本程序设计基本程序设计5.3循环程序设计循环程序设计5.3.1循环程序的两种基本结构循环程序一般由以下三个部分组成:(1)循环体就是要求重复执行的程序段部分,又可以再细
25、分为循环工作部分和循环控制部分。循环工作部分为要求被重复执行的程序段,它完成有关处理操作。循环控制部分在每次循环时都要检查一次循环的结束条件。当满足条件时就结束循环,继续往下执行其它程序段。第第5 5章章 基本程序设计基本程序设计(2)循环结束部分完成循环结束后的处理,如数据的分析、结果的存放等。(3)循环初始部分完成进行循环所作的准备工作,例如设置循环程序工作部分的有关地址指针、寄存器的初值、控制循环的条件或循环计数器的初始值设置以及有关标志值等。第第5 5章章 基本程序设计基本程序设计图与图分别为两种循环程序的基本结构。前者是先处理后判断的循环程序结构,其特点是循环体至少被执行一次;后者是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本程序设计 基本 程序设计 PPT 课件
限制150内