版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章分支结构程序,6.1分支结构程序的引出 6.2转移指令 6.3分支结构程序设计 6.4多分支结构程序设计,6.1分支结构程序的引出,用计算机处理问题过程中,总是要求计算机能做出各种逻辑判断,并根据判断的结果,做相应的处理。 例如,火车站用计算机计算托运行李的托运费,当旅客行李重量小于或等于20kg时,收费0.2元/kg,当行李重量超过20kg时,20kg以内部分0.2元/kg,超出部分,收费0.3元/kg。这个处理过程,可归纳为下面数学表达式: 0.2w(w20kg) 0.2*20+0.3*(w-20)(w20kg),P=,6.2转移指令,6.2.1无条件转移指令 6.2.2条件转移指令
2、,6.2.1无条件转移指令,指令汇编格式:JMP targ 操作:段内转移:IP目标的偏移地址 段间转移:IP目标的偏移地址 CS目标所处代码段的基址 受影响的状态标志位:无 说明:指令中的targ可以是直接标号、寄存器间接或存储器间接寻址形式。,6.2.1无条件转移指令,(1)段内转移(NEAR) 1)段内直接转移 JMP LABEL_N ;LABEL_N在当前代码段 JMP SHORT LABEL_N ;LABEL_N在当前代码段,且在-128127范围内; 例:,6.2.1无条件转移指令,CSEGSEGMENT ASSUMECS:CSEG START:JMPL1 JMPSHORT L2
3、JMPL2 JMPSTART L2:NOP ORGL2+100H L1:NOP CSEGENDS END,6.2.1无条件转移指令,0000CSEGSEGMENT ASSUME CS:CSEG 0000 E9010ARSTART:JMPL1 0003 EB05 JMPSHORTL2 0005 EB0390JMPL2 0008 EBF6JMPSTART 000A 90L2:NOP 010AORGL2+100H 010A 90L1:NOP 010BCSEGENDS END,6.2.1无条件转移指令,(1)段内转移(NEAR) 2)段内寄存器间接转移 JMP AX 3)段内存储器间接转移 JMP S
4、I JMP WORD PTRBX+DI+1000H,6.2.1无条件转移指令,(2)段间转移(FAR) 1)段内直接转移 JMP LABELF 2)短内存储器直接转移 LABEL_D DD 12345678H JMP LABEL_D JMPDWORD PTR BX ,6.2.2条件转移指令,条件转移指令是根据CPU中状态标志位的状态决定程序执行的流程,既可能产生程序转移,也可能不产生程序转移。条件转移指令是以对不同的状态标志的测试为条件。如果 条件成立,则控制转移到指令中所给出的转移目标。条件不成立,程序将顺序执行。所有的条件转移指令均为短(short)转移。,6.2.2条件转移指令,1.根据
5、单标志转移的指令,Even,Odd,6.2.2条件转移指令,2.根据两数(A,B)的大小关系转移的指令 (1)使用该指令前用过比较(CMP A,B)、减法(SUB A,B、SBB A,B)指令。 (2)A与B的关系共有6种: AB A (3)比较转移时分无符号数和带符号数。例如: A=11111111B B=00000001B,6.2.2条件转移指令,Below Above Less Great Equal,6.2.2条件转移指令,JNAE JNA JNBE JNB JNGE JNG JNLE JNL,6.2.2条件转移指令,CMPA,B JLXXX SFOF=1(SF=1*EXAM6.1*
6、2:SSEGSEGMENTSTACK 3:STKDB50DUP(0) 4:SSEGENDS 5:DSEG SEGMENT 6:ARGXDB-5 7:RLTDB? 8:DSEG ENDS 9:CSEGSEGMENT 10:ASSUMECS:CSEG,DS:DSEG 11:ASSUMESS:SSEG 12:BEGIN:MOVAX,DSEG 13:MOVDS,AX 14:MOVAX,SSEG 15:MOVSS,AX 16:MOVSP,SIZESTK,17:MOVAL,ARGX;取X值 18:ANDAL,AL;置标志位 19:JSABSL;X0转 20:JZMOVE;X=0转 21:CMPAL,8;X
7、8? 22:JLEONE;是,转 23:CMPAL,15;X15? 24:JGEMOVE;是,转 25:SALAL,1;计算5X-2 26:SALAL,1 27:ADDAL,ARGX 28:SUBAL,2 29:JMPMOVE 30:ONE:ADDAL,10;X8,计算X+10 31:JMPMOVE 32:ABSL:NEGAL;取补 33:MOVE:MOVRLT,AL;保存结果 34:MOVAH,4CH 35:INT21H 36:CSEGENDS 37:ENDBEGIN,6.3分支结构程序设计-例6.1,6.3分支结构程序设计-例6.2,例6.2设内存中有三个互不相等的无符号字数据,分别存放在
8、ARG开始的字单元,编制程序将其中最大值存入MAX单元。,6.3分支结构程序设计-例6.2,1:;*EXAM6.2* 2:SSEGSEGMENTSTACK 3:STKDB20DUP(0) 4:SSEGENDS 5:DSEGSEGMENT 6:ARGDW7138H,84A6H,29EH 7:MAXDW? 8:DSEGENDS 9:CSEGSEGMENT 10:ASSUMECS:CSEG,DS:DSEG 11:ASSUMESS:SSEG 12:FMAX:MOVAX,DSEG 13:MOVDS,AX 14:MOVAX,SSEG 15:MOVSS,AX 16:MOVSP,SIZESTK,17: LEA
9、 SI,ARG;取数据首址 18: MOV AX,SI;取第1个数 19: MOV BX,SI+2;取第2个数 20: CMP AX,BX;两数比较 21: JAE FMAX1;AX中的数大 22: MOV AX,BX;大数送AX 23:FMAX1:CMP AX,SI+4;大数与第3个数比较 24: JAE FMAX2;AX中的数大 25: MOV AX,SI+4;第3个数大大值 26:FMAX2:MOV MAX,AX;保存最大值 27: MOV AH,4CH 28: INT 21H 29:CSEG ENDS 30: ENDF MAX,6.3分支结构程序设计-例6.2,6.3分支结构程序设计-
10、例6.3,例6.3内存由ADR单元开始存放两个带符号字数据,编制程序,若两数同号将FLAG单元置0,否则置全1。 判断两数是否同号,即判断两个数的最高位是否相同,若相同即为同号。判断的方法有两种:第一种方法:先取出一个数,判断符号是否为正,若为正,再判断另一个数的符号是否为正,也为正,则两数同号,否则为异号;若第一个数的符号为负判断另一个数的符号是否为负,也为负,则两数同号,否则为异号。,6.3分支结构程序设计-例6.3,1:;*EXAM6.3.1* 2:SSEG SEGMENTSTACK 3:STK DB20 DUP(0) 4:SSEG ENDS 5:DSEG SEGMENT 6:ADR D
11、W73A5H,924BH 7:FLAG DB? 8:DSEG ENDS 9:CSEG SEGMENT 10: ASSUMECS:CSEG,DS:DSEG 11: ASSUMESS:SSEG 12:START: MOVAX,DSEG 13: MOVDS,AX 14: MOVAX,SSEG 15: MOVSS,AX 16: MOVSP,SIZESTK,6.3分支结构程序设计-例6.3,17: MOVAX,ADR 18: ANDAX,AX ;置标志 19: JNSPLUS ;正转 20: MOVAX,ADR+2 21: ANDAX,AX ;第二个数置标志 22: JSSAME ;同为负 23:UNS
12、AME:MOVAL,0FFH;异号标志 24:JMPLOAD 25:PLUS:TESTADR+2,8000H;第二个数置标志 26:JSUNSAME ;异号 27:SAME:XORAL,AL ;同号标志 28:LOAD:MOVFLAG,AL ;存标志 29:MOVAH,4CH 30:INT21H 31:CSEGENDS 32:ENDSTART,1001 0010 0100 1011 1000 0000 0000 0000,6.3分支结构程序设计-例6.3,0111 0011 1010 0101 1001 0010 0100 1011,1110 0001 1110 1110,换个算法:,1:;*
13、EXAM6.3.1* 2:SSEG SEGMENTSTACK 3:STK DB20 DUP(0) 4:SSEG ENDS 5:DSEG SEGMENT 6:ADR DW73A5H,924BH 7:FLAG DB? 8:DSEG ENDS 9:CSEG SEGMENT 10: ASSUMECS:CSEG,DS:DSEG 11: ASSUMESS:SSEG 12:START: MOVAX,DSEG 13: MOVDS,AX 14: MOVAX,SSEG 15: MOVSS,AX 16: MOVSP,SIZE STK,6.3分支结构程序设计-例6.3,6.3分支结构程序设计-例6.3,17: MOV
14、AX,ARG 18:XORAX,ARG+2 ;两数异或 19:MOVAL,0 ;同号标志 20:JNSLOAD ;同号 21:DECAL ;异号标志 22: LOAD:MOVFLAG,AL ;存标志 23:MOVAH,4CH 24:INT21H 25: CSEGENDS 26:ENDSTART,6.3 分支结构程序设计-例6.4,例6.4 设ASC单元存放两个字符的ASCII码,编制程序检查其奇偶性,并将它们配制成奇校验存入原单元。 字符的ASCII码是用七位二进制表示的,当用一个字节单元 (8位) 保存一个字符的ASCII码时,字节单元的第7位空闲,不同的计算机存放ASCII码时,系统软件对
15、该位有不同的定义: 1) 第7 位总是0; 2) 第7 位总是1;3) 做为奇偶校验位; 4) 第7 位为1,扩充128 种特殊字符或图形代码(在西文状态下); 5) 做为汉字代码的标志位(在中文状态下)。,6.3 分支结构程序设计-例6.4,1: ;*EXAM 6.4 * 2: SSEGSEGMENTSTACK 3: STKDB20 DUP(0) 4: SSEGENDS 5: DSEGSEGMENT 6: ASCDBAC 7: DSEGENDS 8: CSEGSEGMENT 9:ASSUMECS:CSEG,DS:DSEG 10:ASSUMESS:SSEG 11: MKODD:MOVAX,DS
16、EG 12:MOVDS,AX 13:MOVAX,SSEG 14:MOVSS,AX 15:MOVSP,LENGTH STK,16: MOVAX,WORD PTR ASC;取两字符 17: ANDAL,AL ;置奇偶标志 18: JPONEXT ;奇转 19: ORAL,80H ;配为奇性 20:NEXT:ANDAH,AH ;置奇偶标志 21: JPOLOAD ;奇转 22: ORAH,80H ;配为奇性 23:LOAD:MOVWORD PTR ASC,AX 24: MOVAH,4CH 25: INT21H 26:CSEG ENDS 27: ENDMKODD,6.3 分支结构程序设计-例6.4,6
17、.4 多分支结构程序设计,利用计算机解决实际问题时,常遇到这样的情况: 处理某个问题时有多种选择方案,根据实际情况选择其中一种。每种处理方案由一段程序完成,每一段程序可以看作一个分支,程序在执行过程中根据当前的状况,决定下一步应执行哪一个分支,这就构成了多个分支的程序。 如用计算机控制一台电动机,该电动机有正转、逆转,在每种转动方式下又有几种转速的档次控制,这些控制可以通过键盘09的数字键进行选择,进入某种档次选择后,执行相应分支程序,使电机以最佳方式由一个状态进入所选状态。假设程序的十个分支的起始地址分别为ADR0,ADR1,.ADR9。,1: ;*EXAM 6.5.1* 2: SSEGSE
18、GMENTSTACK 3: STKDB20 DUP(0) 4: SSEGENDS 5: DSEGSEGMENT 6: DSEGENDS 7: CSEGSEGMENT 8: ASSUMECS:CSEG,DS:DSEG 9: ASSUMESS:SSEG 10: MOTOR:MOVAX,DSEG 11: MOVDS,AX 12: MOVAX,SSEG 13: MOVSS,AX 14: MOVSP,SIZE STK 15: MOVAH,01 16: INT21H 17: CMPAL,0 18: JZADR0 19: CMPAL,1 20: JZADR1 21: : 22: CMPAL,8 23: JZADR8 24:ADR9: 25: : ADR0: : : ADR1: : : : ADR8: : : CSEGENDS : ENDMOTOR,6.4 多分支结构程序设计,6.4 多分支结构程序设计,地址常数表法 所谓地址常数表法,就是把多个分支中的每个分支程序段的起始地址顺序存放在一个存储区中,这个存储区称地址表存储区。根据键值,将相应处理程序的入口地址取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- MT/T 1231-2025钻孔煤心煤样采取方法
- 办公楼开荒保洁及物业管理项目(绿化管理方案)
- 压疮的护理本土化
- 环境心理学与室内设计教材
- 2026年浙江省宁波市鄞州区董玉娣中学初三“四模”(5月)英语试题试卷含解析
- 2026年山西省太原大同晋城运城临汾地区公立校学业水平考试英语试题模拟卷(一)含解析
- 河北省石家庄市辛集市达标名校2026年初三下学期“一诊模拟”考试(二)英语试题含解析
- 四川省广元市四中学2025-2026学年初三下学期物理试题期中测试卷含解析
- 哈尔滨市松北区市级名校2026年初三教学质量调研(四模)考试英语试题含解析
- 呼吸困难急救
- 护肩板水泥混凝土滑模摊铺施工工法
- 定量药理学的发展及其在新药研制与临床合理用药中的课件
- 公务摄影拍摄技巧分享课件
- 第八章左拉优质获奖课件
- GB/T 7233.1-2023铸钢件超声检测第1部分:一般用途铸钢件
- 华为智慧化工园区解决方案-
- 刑法学(上册)马工程课件 第6章 犯罪客观方面
- 洁净厂房监理实施细则
- 静脉输液(最终版)课件
- 河北单招考试三类练习题及答案
- 中铁二十四局集团有限公司施工现场从业人员安全风险告知书
评论
0/150
提交评论