ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:280.88KB ,
资源ID:20583724      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20583724.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(分支程序设计文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

分支程序设计文档格式.docx

1、X为负数,则1送BX JMPCONT1 ZERO:MOVBX,0 PLUS:MOVBX,1 CONT1: 例2利用表实现分支。根据AL中各位被置位情况,控制转移到8个子程序P1P8之一中去。转移表的结构如表1所示。对于这种程序关键要找出每种情况的转移地址,从图中可见表地址=表基地址+偏移量,而偏移量可由AL各位所在位置*2求得。表1子程序R1R8的入口地址表 P1子程序R1的入口偏移地址 P2子程序R2的入口偏移地址 P3子程序R3的入口偏移地址 P7子程序R7的入口偏移地址 P8子程序R8的入口偏移地址 DATASEGMENT BASEDWSR0,SR1,SR2,SR3,SR4,SR5,SR

2、6,SR7 DATAENDS CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA BEGIN:PUSHDS XORAX,AX PUSHAX MOVAX,DATAMOVDS,AXLEABX,BASE;表头送BX INAL,PORTGETBIT:RCRAL,1;右移一位 JCGETAD;移出位是1?INCBX INCBX;修改指针 JMPGETBIGETAD:JMPWORDPTRBX;实现散转 CODEENDSENDBEGIN 例3将内存中某一区域的原数据块传送到另一区域中。这种程序若源数据块与目的数据块之间地址没有重叠,则可直接用传送或串操作实现;若地址重叠,则要先

3、判断源地址+数据块长度是否小于目的地址,若是,则可按增量方式进行,否则要修改指针指向数据块底部,采用减量方式传送。程序如下:STRDB1000DUP(?) STR1EQUSTR+7 STR2EQUSTR+25 STRCOUNTEQU50 STACKSEGMENTPARASTACKSTACK STAPNDB100DUP(?STACKENDS CODESEGMENT DATA,SS:STACK GOOPROC SUBAX,AX PUSHAX MOVAX,DATA MOVDS,AX MOVES,AX MOVAX,STACK MOVSS,AX MOVCX,STRCOUNT MOVSI,STR1 MOV

4、DI,STR2 CLD PUSHSI ADDSI,STRCOUNT-1 CMPSI,DI POPSI JLOK STD ADDDI,STRCOUNT-1 OK:REPMOVSB RET GOOENDP CODEENDS ENDGOOcsegsegment mainprocnear assumecs:cseg,ds:data start:movax,dseg movds,ax exit:movax,4c00h int21h mainendp csegends endstart 例4试根据AL寄存器中哪一位为1(从低位到高位)把程序转移到8个不同的程序分支中去。branch_addressesse

5、gment;定义数据段 branch_tabledwroutine_1 dwroutine_2 dwroutine_3 dwroutine_4 dwroutine_5 dwroutine_6 dwroutine_7 dwroutine_8 branch_addressesends procedure_selectsegment;定义代码段 mainprocfar;定义主程序main procedure_select,ds:branch_addresses pushds subbx,bx pushbx movbx,branch_addresses movds,bx ;程序的主要部分(寄存器相对寻

6、址) cmpal,0;(al)=0?jecontinue;(al)为0则转到continue_main_line movsi,0 l:shral,1;把al逻辑右移1位 jncnot_yet;CF=0转到not_yet jmpbranch_tablesi;CF=1转到相应程序分支 not_yet:addsi,typebranch_table;修改地址addsi,2 jmpl;无条件跳到l continue:;其它程序段 routine_1:;程序段1 routine_2:程序段2 ret mainendp;主程序main结束 procedure_selectends endstart 用寄存器

7、间接寻址方式实现跳跃表法的程序如下(仅给出修改后的程序的主要部分): cmpal,0 jecontinue leabx,branch_table;branch_table的偏移地址送bx l:shral,1 jncnot_yet;jmpwordptrbx;addbx,typebranch_table;修改地址 jmpl;无条件跳到l 用基址变址寻址方式实现跳跃表法的程序如下(仅给出修改后的程序的主要部分),与前两种寻址方式的主要区别是这里使用了逻辑左移指令,即从al的高位向低位判断,而前两段程序是从al的低位向高位判断。jecontinue leabx,branch_table movsi,7

8、*typebranch_table;14送si movcx,8;循环次数8送cx shlal,1;把al逻辑左移1位 jnbnot_yet;jmpwordptrbxsi;subsi,typebranch_table;loopl;循环 以上多个例子都是既有分支结构又有循环结构,实际上,多数程序都是各种程序结构的组合。而且,循环结构可以看作分支结构的一种特例,它只是多次走一个分支,只在满足循环结束条件时,走另一个分支罢了。算法和循环控制条件的选择对程序的工作效率有很大的影响,而循环控制条件的选择又是很灵活的,应该根据具体情况来确定。考虑算法时必须把可能出现的边界情况考虑在内。设置逻辑尺是循环控制中

9、很常用的一种方法。除了静态地预置外,还可以在程序中动态地修改标志位的值,以达到控制的目的。循环可以有多层结构。多重循环程序设计的基本方法和单重循环程序设计是一致的,应分别考虑各重循环的控制条件及其程序实现,相互之间不能混淆。另外,应该注意在每次通过外层循环再次进入内层循环时,初始条件必须重新设置。起泡排序算法是多重循环程序设计中的一种常用方法。分支程序结构可以有两种形式。分别相当于高级语言中的IF_THEN_ELSE语句和CASE语句,适用于要求根据不同条件作不同处理的情况。IF_THEN_ELSE语句可以引出两个分支,CASE语句则可以引出多个分支,不论哪一种形式,它们的共同特点是:数组排序算法中可以采用折半查找法来提高查找效率。CASE结构可以使用跳跃表法实现,使程序能根据不同的条件转移到多个程序分支中去。跳跃表法;是一种很有用的分支程序设计方法。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1