




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 分支与循环程序设计5.1. 概述设计步骤:描述问题à确定算法à绘制流程图à分配存储空间和工作单元à编写程序à上机调试5.2. 分支程序设计5.2.1 分支程序结构条件?。条件? 二路分支结构 多路分支结构5.2.2 二路分支程序设计方法例-128x127DATA SEGMENTXX1 DB 10; X=给定一个值YY1 DB ? ; YDATAENDSCODESEGMENTASSUME CS:CODE, DS:DATASTART:MOV AX, DSMOV DS, AXMOV AL,XX1CMP AL, 0JZAA1;=0JNSAA2M
2、OV AL,0FFH;=-1JMPAA1AA2:MOV AL,1;=1 AA1:MOVYY1,AL; MOV AH,4CHINT 21HCODEENDSEND START5.2.3 多路分支程序设计方法逻辑分解法;地址表法; 段内转移表法;1. 逻辑分解法CODESEGMENTASSUME CS:CODESTART:MOV AH,1INT 21H;键入值CMP AL,31HJZWORK1CMP AL,32HJZWORK2CMP AL,33HJZWORK3CMP AL,34HJZWORK4CMP AL,35HJZWORK5JMPWORK0WORK1:(jmp work0)WORK2: (jmp
3、work0)WORK3: (jmp work0)WORK4: (jmp work0)WORK5: (jmp work0)WORK0:MOV AH,4CHINT21HCODEENDSENDSTART2. 地址表法把模块的地址保存在一个表中,通过查表跳到相应模块。表地址 = 表首地址 + (键号-1)2DATASEGMENTTABLEDWWORK1,WORK2,WORK3,WORK4,WORK5DATA ENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEABX,TABLE;表首地址MOV AH,1INT21HANDAL,
4、0FHDEC AL;键号-1ADDAL,AL;(键号-1)*2SUBAH,AHADDBX,AX;表地址 = 表首地址 + (键号-1)2JMPWORD PTRBXWORK1:(jmp work0)WORK2: (jmp work0)WORK3: (jmp work0)WORK4: (jmp work0)WORK5: (jmp work0)WORK0:MOV AH,4CH INT21HCODEENDSENDSTART3. 段内转移表法段内短转移:(jmp disp8为2字节指令)转移表地址=转移表首地址+(键号-1)2段内近转移:(jmp disp16为3字节指令)转移表地址=转移表首地址+(键
5、号-1)3段间远转移:(jmp disp32为4字节指令)转移表地址=转移表首地址+(键号-1)4CODESEGMENTASSUME CS:CODESTART:LEA BX,WORKMOV AH,1INT 21HAND0FHDECALMOV AH,ALADDAL,ALADDAL,AH;x3SUBAH,AHADDBX,AXJMPBX;转移表WORK:JMPNEAR PTR WORK1JMPNEAR PTR WORK2JMPNEAR PTR WORK3JMPNEAR PTR WORK4JMPNEAR PTR WORK5;工作模块WORK1:(jmp work0)WORK2: (jmp work0)
6、WORK3: (jmp work0)WORK4: (jmp work0)WORK5: (jmp work0)WORK0:MOV AH,4CHINT21HCODEENDSENDSTART 5.3. 循环程序设计5.3.1 循环程序的结构形式5.3.2 循环程序的设计方法方法:计数控制循环;条件控制循环;变量控制循环1. 计数控制循环(循环次数已知)例:, 把1,2,3 255加起来。(1)先执行后判断(计数控制)DATASEGMENTORG 1000HNUMBER1DB 1,2,3,255SUM1 DW ?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART
7、:MOV AX,DATAMOV DS, AXLEA BX, NUMBER1MOV AX, 0MOV DH, 0MOV CL, 255AA1:MOV DL, BXADD AX, DXINC BXSUB CL,1 ; DEC CLJNZ AA1MOV SUM1, AXMOV AH,4CHINT 21HCODEENDSEND START(2)先判断后执行(计数控制)DATASEGMENTORG 1000HNUMBER1DB 1,2,3,255SUM1 DW ?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS, AXLEA
8、BX, NUMBER1-1MOV AX, 0MOV DH, 0MOV CL, 0 ; 初值256AA1:INC BXSUB CL,1JZ AA2MOV DL, BXADD AX, DXJMP AA1AA2:MOV SUM1, AXMOV AH,4CHINT 21HCODEENDSEND START2. 条件控制循环(结束条件已知)(1)先执行后判断(条件控制)DATASEGMENTORG 1000HNUMBER1DB 1,2,3,255SUM1 DW ?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS, AXLEA
9、BX, NUMBER1MOV AX, 0MOV DH, 0 AA1:MOV DL, BXADD AX, DXINC BXCMP DL,255JNZ AA1MOV SUM1, AXMOV AH,4CHINT 21HCODEENDSEND START(2)先判断后执行(条件控制) DATASEGMENTORG 1000HNUMBER1DB 1,2,3,255SUM1 DW ?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS, AXLEA BX, NUMBER1-1 ;*MOV AX, 255 ; 初值为255,原因如下说
10、明MOV DH, 0 AA1:INC BXMOV DL, BXCMP DL,255 ; DL=255时,循环结束JZ AA2ADD AX, DXJMP AA1 AA2:MOV SUM1, AXMOV AH,4CHINT 21HCODEENDSEND START3. 变量控制循环(结束条件已知)数据255的地址为10Feh,做为变量控制的结束条件(1)先执行后判断(变量控制)DATASEGMENT地址10FEhORG 1000HNUMBER1DB 1,2,3,255SUM1 DW ?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA
11、MOV DS, AXLEA BX, NUMBER1MOV AX, 0MOV DH, 0 AA1:MOV DL, BXADD AX, DXINC BXCMP BX, 10FFHJNZ AA1MOV SUM, AXMOV AH,4CHINT 21HCODEENDSEND START(2)先判断后执行(变量控制) DATASEGMENTORG 1000HNUMBER1DB 1,2,3,255SUM1 DW ?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS, AXLEA BX, NUMBER1-1 ;*MOV AX, 0
12、; MOV DH, 0 AA1:INC BXCMP BX,10FFH ;255的地址为10FEH JZ AA2 MOV DL, BXADD AX, DXJMP AA1 AA2:MOV SUM1, AXMOV AH,4CHINT 21HCODEENDSEND START5.3.3 单重循环例 求无符号整数的平方根的整数部分,DATASEGMENT NUMBER1DW 25ROOT1 DW ?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS, AXMOV AX, NUMBER1MOV CX, 0; MOV BX, 1 A
13、A1:SUB AX, BX INC CXADD BX, 2 JNCAA1DECCXMOV ROOT1, CX MOV AH,4CHINT 21HCODEENDSEND START例在CRT上显示“中”字的源程序DATASEGMENT NUMBER1DB 0AH, 0DHDB A , 0AH, 0DHDB AAAAAAA, 0AH, 0DHDB A A A, 0AH, 0DHDB A A A, 0AH, 0DHDB AAAAAAA, 0AH, 0DHDB A , 0AH, 0DHDB A , 0AH, 0DH DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTA
14、RT:MOV AX,DATAMOV DS, AXLEA, BX, NUMBER1MOV CX, 65AA1:MOV DL, BXMOVAH, 2INT21HINCBXLOOPAA1 MOV AH,4CHINT 21HCODEENDSEND START例 在CRT上显示16位十进制数8988998899989899DATASEGMENT DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS, AXMOV BX, RULER1MOV CX, 16AA1:MOV DL, 38HSHLBX, 1JNCAA2INC DL ; MO
15、V DL, 39HAA2:MOV AH, 2 INT21HLOOPAA1 MOV AH,4CHINT 21HCODEENDSEND START5.3.4 多重循环例用逻辑尺法,在CRT上显示“中”空格-0表示A-1表示00010000à10h11111110à0Feh10010010à92h10010010à92h11111110à0Feh00010000à10h00010000à10hDATASEGMENT RULER1DB 10h, 0Feh, 92h, 92h, 0Feh, 10h, 10h DATAENDSCODES
16、EGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS, AXLEA SI, RULER1MOV CX, 7 ; 外循环计数次数AA1:MOV DH, 8 ;内循环计数次数MOVDL, 0AH MOV AH, 2 INT21HMOVDL, 0DH MOV AH, 2 INT21HMOVBL, SIAA2:MOVDL, 20HSHLBL, 1JNCAA3ADDDL, 21H ; MOV DL, 41H; AAA3:MOV AH, 2 INT21H DECDHJNZAA2 ;内循环控制MOVDL, 0AH MOV AH, 2 INT21HMOVDL,
17、0DH MOV AH, 2 INT21HINCSILOOPAA1 ; 外循环控制 MOV AH,4CHINT 21HCODEENDSEND START例 五个学生参加4门课的考试,成绩以压缩BCB码方式存放在COURSE1数组中,计算每个学生的总分。DATASEGMENT COURSE1DB 70H, 88H, 92H, 90H, 99H ; 第一门课成绩 DB 67H, 77H, 88H, 76H, 69H ; 第二门课成绩DB 74H, 87H, 77H, 74H, 70H ; 第三门课成绩DB 99H, 97H, 94H, 98H, 96H ; 第四门课成绩NUM1DW 5 DUP(0)
18、 ;5个学生的总成绩结果单元DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS, AXLEA SI, COURSE1LEADI, NUM1MOV CL, 5 ; 外循环计数次数AA1:MOV BX, SIMOV AX, 0 ; 放累加结果MOV CH, 4 ;内循环计数次数AA2:ADD AL, BXDAAADC AH, 0ADDBX, 5DEC CHJNZAA2; 内循环控制MOVDI, AX ; 存一个学生的总分成绩INC SIADDDI, 2DEC CLJNZAA1 ; 外循环控制 MOV AH,4CHINT 2
19、1HCODEENDSEND START例 键入39间的数字,输出一个用“组成的三角形。例如键入5,输出如下: CODESEGMENTASSUMECS:CODE START:MOV AH, 1INT 21HCMPAL, 33HJCSTART; JB startCMPAL,3AHJNCSTART ;界限为39 ,JAE startANDAL, 0FHMOV BL, AL;保存键入的值,作为外循环的次数MOVBH, 1;内循环次数, 它是可变的,但不大于BL AA1:MOVDL, 0AH MOV AH, 2 INT21HMOVDL, 0DH MOV AH, 2 INT21H MOV CL, BHAA
20、2:MOV DL, *MOV AH, 2 INT21HDEC CLJNZAA2 ;内循环控制, 显示一行的”*”,个数由BH定INC BHCMPBL, BHJNC AA1 ; 外循环控制 JBE AA1MOV AH,4CHINT 21HCODEENDSEND START例 冒泡法排序算法:图1234.N大小1)(N-1)*(N-1)次比较法l 第一次内循环比较N-1次,第二次循环比较N-1次,,最后一次(N-1次)循环比较N-1次。DATASEGMENTNUMBER1DB100,3,90,80,99,77,44,66,50N_1EQU$-NUMBER1 1DATA ENDSCODESEGMEN
21、TASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOV DS, AXMOVDX, N_1 ;外循环计数次数AA1:LEABX, NUMBER1MOV CX, N_1;内循环计数次数AA2:MOVAL, BXCMPAL, BX+1JNCAA3;JGEAA3XCHGAL, BX+1MOVBX, AL;交换AA3:INC BXLOOPAA2DECDXJNZAA1MOV AH, 4CHINT 21HCODEENDSENDSTARTS2)(N-1)!次比较法l 第一次内循环比较N-1次,第二次循环比较N-2次,,最后一次(N-1次)循环比较1次。DATASEGMENTNUMBER1DB100,3,90,80,99,77,44,66,50N_1EQU$-NUMBER1 1DATA ENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOV DS, AXMOVDX, N_1 ;外循环计数次数AA1:LEABX, NUMBER1MOV CX, D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多元主体参与机制对产教融合的促进作用
- 浙江省湖州市2024-2025学年八年级物理第一学期期末经典试题含解析
- 四川省营山县联考2024-2025学年八年级物理第一学期期末教学质量检测试题含解析
- 四川省阆中学2024年物理八上期末综合测试模拟试题含解析
- 知名连锁餐厅加盟合作协议书
- 电影制作公司财务管理全流程解析
- 物流行业:物流运输安全与质量管理小组的职责及优化策略
- 2025至2030防静电PVC板行业发展趋势分析与未来投资战略咨询研究报告
- 医药实验室安全保卫制度和措施
- 小学四年级S版语文上册教案编写计划
- 2024年安徽省合肥市北城片区七年级数学第一学期期末学业水平测试试题含解析
- 2025至2030中国铜冶炼行业发展现状及应用需求现状分析报告
- 农业保险培训课件
- 20250617国金证券机器人行业研究垂直领域具身智能机器人的野望416mb
- 物理●湖北卷丨2024年湖北省普通高中学业水平选择性考试物理试卷及答案
- GB/T 5193-2007钛及钛合金加工产品超声波探伤方法
- GB/T 1041-2008塑料压缩性能的测定
- GA/T 1555-2019法庭科学人身损害受伤人员后续诊疗项目评定技术规程
- 酶学(高级生化课件)
- 新人教版七年级上册初中生物全册课时练(课后作业设计)
- 一诺LZYN质量流量计使用说明书-2009版
评论
0/150
提交评论