资源描述:
《第5章8086汇编语言程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章分支与循环程序设计本章主要内容顺序程序设计1分支程序设计2循环程序设计3汇编语言程序设计概述8086汇编语言程序采用模块化结构,通常由一个主程序模块和多个子程序(过程)模块构成。对于简单程序,只有主程序模块,没有子程序模块。汇编语言程序有3种基本结构:顺序结构分支结构循环结构程序的质量标准衡量程序的质量通常有以下几个标准:程序正确、完整;程序易读性强;程序的执行速度快;程序占内存小,程序代码的行数少。汇编语言程序设计的基本步骤①分析问题,抽象出描述问题的数学模型;②确定解决问题的算法或算法思想
2、;③程序模块划分——在解决复杂实际问题时,往往需要把它分成若干功能模块,在进行功能模块划分后,必须确定各功能模块间的通信问题;④绘制各功能模块流程图或结构图;⑤分配存储空间、寄存器等工作单元;汇编语言程序设计的基本步骤(续)⑥根据流程图,编写程序;⑦静态检查,纠正错误;⑧上机运行调试,纠正错误,直至测试通过;⑨整理资料,建立完整的文档。5.1顺序结构程序设计顺序结构程序又称简单程序。采用这种结构的程序,按照指令书写的顺序逐条执行,程序的执行路径没有分支和循环。顺序结构程序设计举例【例5-2】编程将内
3、存数据段字节单元INDAT存放的一个数n(假设0≤n≤9),以十进制形式在屏幕上显示出来。例如,若INSTR单元存放的是数8,则在屏幕上显示:8D。【例5-2】程序代码DATASEGMENT;数据段定义INDATDB8DATAENDSCODESEGMENT;代码段定义ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;初始化DS【例5-2】程序代码(续)MOVDL,INDATORDL,30HMOVAH2INT21HMOVDL,'D'MOVAH,2INT21HM
4、OVAH,4CHINT21HCODEENDSENDSTART5.2分支结构程序设计分支结构程序利用条件转移指令或跳转表,使程序执行完某条指令后,根据指令执行后状态标志的情况选择要执行哪个程序段。分支结构程序的指令执行顺序与指令的存储顺序不一致。转移指令JMP和Jcc可以实现分支结构。分支结构的三种形式单分支结构程序设计举例【例5-3】编写程序段,求AX中存放的带符号数的绝对值,结果存RES单元。…CMPAX,0JGEISPOSITIVENEGAXISPOSITIVE:MOVRES,AX…本例采用的是
5、单分支结构。特点是:条件成立时程序跳转;否则,顺序执行。双分支结构程序设计举例【例5-4】编程判断DAT单元存放的带符号数的正负。如该数为负数,则显示“DATisanegativenumber!”;否则显示“DATisanonnegativenumber!”。【例5-4】(续)DATASEGMENT;数据段定义NDB'DATisanegativenumber!','$'NNDB'DATisanonnegativenumber!$'DATAENDSCODESEGMENT;代码段定义ASSUMECS:C
6、ODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;设置DS【例5-4】(续)MOVAX,-3CMPAX,0JGEISNNLEADX,NMOVAH,9INT21HJMPFINISH【例5-4】(续)ISNN:LEADX,NNMOVAH,9INT21HFINISH:MOVAH,4CHINT21HCODEENDSENDSTART【例5-4】(续)【例5-4】采用的是双分支结构。采用这种结构时,特别要注意第一个分支后要利用JMP指令(程序第16行)使程序跳转到第二个分支的后面。总结:首
7、先除第一分支外,第二分支和出口位置用标号标名第一分支结束时后要加JMP指令使程序跳转到出口位置多分支结构程序设计举例【例5-5】编程求分段函数Y的值。已知变量X为16位带符号数,分段函数的值要求保存到字单元Y中。函数定义如下:【例5-5】(续)DATASEGMENT;数据段定义XDW-128YDW?DATAENDSCODESEGMENT;代码段定义ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX【例5-5】(续)MOVAX,XCMPAX,0JGISPNJZI
8、SZNMOVY,-1JMPFINISHISPN:MOVY,1JMPFINISHISZN:MOVY,0【例5-5】(续)FINISH:MOVAH,4CHINT21HCODEENDSENDSTART本例实现的是多分支结构。设计多分支结构程序时,应注意:要为每个分支安排出口;各分支的公共部分尽量集中,以减少程序代码;无条件转移没有范围的限制,但条件转移指令只能在-128~+127字节范围内转移;调试程序时,要对每个分支进行调试。总结:首先除第一分支外,其它的每个分支和出口位