第6章-1分支结构设计探究.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章分支结构程序 控制转移类指令 1 无条件转移指令 2 条件转移指令 3 循环控制指令 4 子程序调用指令 1 无条件转移指令 JMP STAT(段内直接转移) JMP BX (段内间接转移) JMP FAR PRT ADD2(段间直接转移) JMP DWOD PTR[BX+ADDR3](段间间接转移) 2 条件转移指令 (1)简单条件转移指令 (2)无符号数条件转移指令 (3) 有符号数条件转移指令 它们都有通用的语句格式和功能。 语句格式:[ 标号:] 操作符 短标号 功能: 如果条件满足,则(IP)+位移量→IP。 (1)简单条件转移指令 (2)无符号数条件转移指令 (3) 有符号数条件转移指令 6.1 比较/测试分支结构程序设计 例6.3 设X为单字节带符号整数,且存于ARGX单元,计算结果Y存入RLT单元。 例6.4设内存中有三个互不相等的无符号字数据,分别存放在ARG开始的字单元,编制程序将其中最大值存入MAX单元。 6.2 多分支结构程序设计 利用计算机解决实际问题时,常遇到这样的情况: 处理某个问题时有多种选择方案,根据实际情况选择其中一种。每种处理方案由一段程序完成,每一段程序可以看作一个分支,程序在执行过程中根据当前的状况,决定下一步应执行哪一个分支,这就构成了多个分支的程序。 如用计算机控制一台电动机,该电动机有正转、逆转,在每种转动方式下又有几种转速的档次控制,这些控制可以通过键盘0~9的数字键进行选择,进入某种档次选择后,执行相应分支程序,使电机以最佳方式由一个状态进入所选状态。假设程序的十个分支的起始地址分别为ADR0,ADR1,...ADR9。 单击此处编辑母版标题样式 单击此处编辑母版副标题样式 * 汇编语言 程序设计 分支程序常用的有两种结构形式: 6.1 比较/测试分支结构 6.2 跳转表多路分支结构 P= { 先要对处理的问题进行比较、测试或者进行算术运算、逻辑运算,以产生有效的状态标志。然后选择条件转移指令产生分支转移。通常一条条件转移指令只能产生两路分支。若要实现多路分支,必须使用多条转移指令。n条条件转移指令可以产生n+l路分支。 图6.1 比较/测试分支结构的两种程序流程 (a)相当于高级语言中的IF—THEN—ELSE语句,根据条件成立与否,分两种情况分别处理。(b)相当于高级语言中的IF—THEN语句,仅当某种条件成立才执行一段程序,否则跳过它。 例6.1 内存ADR单元开始存放两个带符号字数据,编制程序,若两数同号将FLAG单元置0,否则置全1。 问题分析: 判断两数是否同号,即判断两个数的最高位是否相同,若相同即为同号。判断的方法有两种: 第一种方法:先取出一个数,判断符号是否为正,若为正,再判断另一个数的符号是否正,也为正,则两数同号,否则为异号;若第一个数的符号为负,判断另一个数的符号是否为负,也为负,则两数同号,否则为异号。 图6.2 测试两数符号程序流程图 DSEG SEGMENT ADR DW 73A5H,924BH FLAG DB ? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX, DSEG MOV DS,AX MOV AX,ADR AND AX,AX ;置标志 JNS PLUS ;正转 MOV AX,ADR+2 AND AX,AX ;第二个数置标志 JS SAME ;同为负 UNSAME:MOV AL,0FFH ;异号标志 JMP LOAD PLUS: TEST ADR+2,8000H ;第二个数置标志 JS UNSAME ;异号 SAME: XOR AL,AL ;同号标志 LOAD: MOV FLAC,A

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档