东北大学汇编语言分支结构程序

上传人:ji****72 文档编号:51269452 上传时间:2018-08-13 格式:PPT 页数:36 大小:325KB
返回 下载 相关 举报
东北大学汇编语言分支结构程序_第1页
第1页 / 共36页
东北大学汇编语言分支结构程序_第2页
第2页 / 共36页
东北大学汇编语言分支结构程序_第3页
第3页 / 共36页
东北大学汇编语言分支结构程序_第4页
第4页 / 共36页
东北大学汇编语言分支结构程序_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《东北大学汇编语言分支结构程序》由会员分享,可在线阅读,更多相关《东北大学汇编语言分支结构程序(36页珍藏版)》请在金锄头文库上搜索。

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条件转移指令6.

2、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 JMPSHORTL2 JMPL2 JM

3、PSTART L2:NOP ORGL2+100H L1:NOP CSEGENDS END6.2.1无条件转移指令 0000CSEGSEGMENT ASSUME CS:CSEG 0000E9010ARSTART:JMP L1 0003EB05 JMP SHORTL2 0005EB0390JMP L2 0008EBF6JMP START 000A90L2:NOP 010AORG L2+100H 010A90L1:NOP 010BCSEGENDS END6.2.1无条件转移指令(1)段内转移(NEAR) 2)段内寄存器间接转移 JMP AX 3)段内存储器间接转移 JMP SI JMP WORD P

4、TRBX+DI+1000H6.2.1无条件转移指令(2)段间转移(FAR) 1)段内直接转移JMP LABELF 2)短内存储器直接转移 LABEL_D DD 12345678HJMP LABEL_DJMPDWORD PTR BX 6.2.2条件转移指令条件转移指令是根据CPU中状态标志位的状态 决定程序执行的流程,既可能产生程序转移,也 可能不产生程序转移。条件转移指令是以对不 同的状态标志的测试为条件。如果 条件成立,则控制转移到指令中所给出的转移 目标。条件不成立,程序将顺序执行。所有的 条件转移指令均为短(short)转移。6.2.2条件转移指令1.根据单标志转移的指令EvenOdd6

5、.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=00000001B6.2.2条件转移指令Below Above Less Great Equal6.2.2条件转移指令JNAE JNA JNBE JNB JNGE JNG JNLE JNL6.2.2条件转移指令CMPA,B JLXXX SFOF=1(SF=1*EXAM6.1* 2:SSEGSEGMENTSTACK 3:STKDB

6、50DUP(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,SIZESTK17:MOVAL,ARGX;取 X 值 18:ANDAL,AL;置标志位 19:JSABSL;X0转 20:OVE;X=0转 21:CMPAL,8;X8? 22:JLEONE;是,转 23:CMPAL,15

7、;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:CSEG ENDS 37:ENDBEGIN6.3分支结构程序设计-例6.16.3分支结构程序设计-例6.2例6.2设内存中有三个互不相等的无符号 字数据,分别存放在ARG开始的字单元,编 制程序将其中最大值存入MAX单元

8、。A,B,C大大6.3分支结构程序设计-例6.21:;*EXAM6.2* 2:SSEG SEGMENTSTACK 3:STKDB20DUP(0) 4:SSEG ENDS 5:DSEG SEGMENT 6:ARG DW7138H,84A6H,29EH 7:MAXDW? 8:DSEG ENDS 9:CSEG SEGMENT 10:ASSUMECS:CSEG,DS:DSEG 11:ASSUMESS:SSEG 12:FMAX:MOVAX,DSEG 13:MOVDS,AX 14:MOVAX,SSEG 15:MOVSS,AX 16:MOVSP,SIZESTK17: LEA SI,ARG;取数据首址 18:

9、 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 MAX6.3分支结构程序设计-例6.26.3分支结构程序设计-例6.3例6.3内存由ADR单元开始存

10、放两个带符号字数 据,编制程序,若两数同号将FLAG单元置0,否则置 全1。 判断两数是否同号,即判断两个数的最高位是否相 同,若相同即为同号。判断的方法有两种:第一种 方法:先取出一个数,判断符号是否为正,若为正,再 判断另一个数的符号是否为正,也为正,则两数同 号,否则为异号;若第一个数的符号为负判断另一 个数的符号是否为负,也为负,则两数同号,否则为 异号。6.3分支结构程序设计-例6.31:;*EXAM6.3.1* 2:SSEG SEGMENTSTACK 3:STK DB20 DUP(0) 4:SSEG ENDS 5:DSEG SEGMENT 6:ADR DW73A5H,924BH 7

11、: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,SIZESTK6.3分支结构程序设计-例6.317: MOVAX,ADR 18: ANDAX,AX ;置标志 19: JNSPLUS ;正转 20: MOVAX,ADR+2 21: ANDAX,AX ;第二个数置标志 22: JSSAME ;同为负 23:UNSAME:MOVAL,0FFH;异

12、号标志 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:ENDSTART1001 0010 0100 1011 1000 0000 0000 00006.3分支结构程序设计-例6.30111 0011 1010 0101 1001 0010 0100 10111110 0001 1110 1110换个算法:1:;*EXAM6.3.1* 2:SSEG SEGM

13、ENTSTACK 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 STK6.3分支结构程序设计-例6.36.3分支结构程序设计-例6.317: MOV AX,ARG 18:XORAX,ARG+2 ;两

14、数异或 19:MOV AL,0 ;同号标志 20:JNSLOAD ;同号 21:DECAL ;异号标志 22: LOAD:MOV FLAG,AL ;存标志 23:MOV AH,4CH 24:INT21H 25: CSEGENDS 26:ENDSTART6.3 分支结构程序设计-例6.4例6.4 设ASC单元存放两个字符的ASCII码,编制程 序检查其奇偶性,并将它们配制成奇校验存入原单元。 字符的ASCII码是用七位二进制表示的,当用一 个字节单元 (8位) 保存一个字符的ASCII码时,字节 单元的第7位空闲,不同的计算机存放ASCII码时,系 统软件对该位有不同的定义: 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,D

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号