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

上传人:re****.1 文档编号:433169134 上传时间:2023-11-23 格式:DOC 页数:23 大小:706.50KB
返回 下载 相关 举报
东北大学汇编语言第06章分支结构程序_第1页
第1页 / 共23页
东北大学汇编语言第06章分支结构程序_第2页
第2页 / 共23页
东北大学汇编语言第06章分支结构程序_第3页
第3页 / 共23页
东北大学汇编语言第06章分支结构程序_第4页
第4页 / 共23页
东北大学汇编语言第06章分支结构程序_第5页
第5页 / 共23页
点击查看更多>>
资源描述

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

1、第六章分支结构程序6.1分支结构程序的引出用计算机处理问题过程中,总是要求计算机能做出 各种逻辑判断,并根据判断的结果,做相应的处理。例如,火车站用计算机计算托运行李的托运费, 当旅客行李重量小于或等于20kg nt,收费0.2元/kg,当 行李重量超过20kg时,20kg以内部分0.2元/kg,超出部 分,收费0.3元/kg。这个处理过程,可归纳为下面数学 表达式:0.2w(w20kg)6.2转移指令621无条件转移指令622条件转移指令621无条件转移指令指令汇编格式:JMP targ操作:段内转移:IP 一目标的偏移地址段间转移:IP目标的偏移地址CS-目标所处代码段的基址受影响的状态标

2、志位:无说明:指令中的t化可以是直接标号、寄存器 间接或存储器间接寻址形式。621无条件转移指令段内转移(NEAR)1) 段内直接转移JMP LABEL_N ;LABEL_N在当前代码段JMP SHORT LABEL_N ;LABEL_N在当前 代码段,且在-128-127范Si内;例:621无条件转移指令CSEGSEGMENTASSUMECS:CSEGSTART:JMPLIJMPSHORTL2JMPL2JMPSTARTL2:NOPORGL2+100HL1:NOPCSEGENDSEND00000000E9010ARCSEGSEGMENTSTART:ASSUME CS:CSEGJMPLl0003

3、EB05JMPSHORTL20005EB0390JMPL20008EBF6JMPSTART000A90L2:NOP010AORGL2+100H010A90LI:NOP01 OBCSEGENDSEND621无条件转移指令(1) 段内转移(NEAR)2) 段内寄存器间接转移JMP AX3) 段内存储器间接转移JMP SIJMP WORD PTRBX+DI+1000H段间转移(FAR)1)段内直接转移JMPLABELF2)短内存储器直接转移12345678HLABEL_DDWORD PTR BX|LABEL_D DDJMPJMP622条件转移指令条件转移指令是根据CPU中状态标志位的状态 决定程序执

4、行的流程,既可能产生程序转移,也 可能不产生程序转移。条件转移指令是以对不 同的状态标志的测试为条件。如果条件成立,则控制转移到指令中所给出的转移 目标。条件不成立,程序将顺序执行。所有的 条件转移指令均为短(short)转移。622条件转移指令1 根据单标志转移的指令CFJClabCF=1JNClabCF-0ZFJZlabZF=1JNZlabZF=0SFJSlabSF=1JNSlabSF=0OFJOlabOF=:1JNOlabOF=0PFJP/JPElabPF=1JNP/JPOlabPF=EvenOdd622条件转移指令2根据两数(A,B)的大小关系转移的指令(1)使用该指令前用过比较(CM

5、P A,B)、减法(SUB A,B、SBB A,B)扌旨令。(2) A与B的关系共有6种:ABABABA=BAB(3) 比较转移时分无符号数和带符号数。例如:A=11111111B B=00000001B无符号数带符号数ABJACF=0&ZF=0JG(SFAOF)IIZF=0AMBJAECF=OJGE(SFAOF)=0A=BJE (ZF=1)AHBJNE (ZF=O)Below Above Less Great Equal622条件转移指令无符号数带符号数ABJACF=0&ZF=OJG(SFAOF)IIZF=0AMBJAECF=0JGE(SFAOF)=0A=BJE (ZF=1)AHBJNE (

6、ZF=0)JNAE JNA JNBE JNB JNGE JNG JNLE JNL6.3分支结构程序设计例6.1X+10 (0X8)5X-2 (8X15) -X (X0)6.3分支结构程序设计例6.12:SSEGSEGMENTSTACK3:STKDB50DUP(0)4:SSEGENDS5:DSEGSEGMENT6:ARGXDB57:RLTDB98:DSEGENDS9:CSEGSEGMENT10:ASSUMECS:CSEG.DS:DSE11:ASSUMESS:SSEG12:BEGIN:MOV AX,DSEG13:MOV DS,AX14:MOV AXSSEG15:MOV SS,AX16:MOV SR

7、SIZESTK1:;*EXAM6.1*C)图6.1计算表达式程净流程图6.3分支结构程序设计例6.117:18:MOVAL.ARGXAND AL,AL19:JS20:JZ21:CMP22:JLECMP JGE25:26:27:ADD2&SUB29:JMP3OONE:ADD31:JMP32:ABSL:NEG33:MOVE:MOV34:MOV35:INT36:CSEGENDS37:ENDABSL MOVEAL.8ONEAL J 5 MOVEAL J AL JAL.ARGXAL. 2 MOVEAL JO MOVEAL RLT,AL AH.4CH21HBEGIN:取X值;置标志位;XvO 转:X=0

8、转;X15?;是,转;计算5X2;XS&计算 X+10;取补;保存结果设赴堆找招针i保仔鬲果|1 计算表达式程序流程图6.3分支结构程序设计例6.2例62设内存中有三个互不相等的无符号 字数据,分别存放在ARG开始的字单元,编 制程序将其中最大值存入MAX单元。A,B,C6.3分支结构程序设计-例6.2:*EXAM62*2:SSEG SEGMENT3:STK DB4:SSEG ENDS 5:DSEG SEGMENT 6:ARG DW 7:MAXDW8:DSEG ENDS9:CSEG SEGMENT 10:ASSUME11:ASSUME12:FMAX:MOV13:MOV14:MOV15:MOV1

9、6:MOVCS:CSEG,DS:DSEGSS:SSEGAXQSEGDS,AXAX,SSEGSS,AXSRSIZESTKSTACK20 DUP(O)7138H,84A6H、29EH ?设sama地殂两个救换忆放AX-BXAXHX JAN与另个致比较丙二负三个枚为嚴大銓(MAXX-AX6.3分支结构程序设计-例6.2迎卫堆冬冈地斤fl*堆悝ift针17:LEA SLARG18:MOV AX, SI19:MOV BX. LSI+220:CMP AX、BX21:JAE FMAX122:MOV AX,BX23:FMAX1:CMP AX, SI+4 24:JAE FMAX225:MOV AX, SI+42

10、6:FMAX2:MOV MAX,AX;取数据首址;取第1个数;取第2个数;两数比较;AX中的数大;大数送AX;人数与第3个数比较;AX中的数大;第3个数大大值;保存最人值恳匚鄭一个数和两人垃撫比较 i AX-HXA XBX27:MOV AH4CH28:INT 21H29:CSEG ENDS30:ENDF MAXAK与另一个数比刃AX J酊二丁欣AX中数为廉大畫 (MAX-AX4:I(M)求大值程序流趕096.3分支结构程序设计例6.3例63内存由ADR单元开始存放两个带符号字数 据,编制程序,若两数同号将FLAG单元置0,否则置 全1。判断两数是否同号,即判断两个数的最高位是否相 同,若相同即

11、为同号。判断的方法有两种:第一种 方法:先取出一个数,判断符号是否为正,若为正,再 判断另一个数的符号是否为正,也为正,则两数同. 号,否则为异号;若第一个数的符号为负判断另一 个数的符号是否为负,也为负,则两数同号,否则为 异号。6.3分支结构程序设计-例6.3CSS)1:;*EXAM6.3.1*2:SSEG SEGMENT STACK3:STK DB20 DUP(O)4:SSEG ENDS5:DSEG SEGMENT6:ADR DW7: FLAG DB73A5H.924BH9& DSEGENDS9:CSEGSEGMENT10:ASSUMECS:CSEG,DS:DSEG11:ASSUMESS:SSEG12:START: MOVAXQSEG13:MOVDS,AXtar?堆栈指钊| 心二鼓据I AX J釵徭14:MOVAX.SSEG15:MOVSS,AX16:MOVSRSIZESTKY 1 Y(Fr-AO0图63测试两数符号程序流程图6.3分支结构程序设计-例6.317:1&19:20:21:22:MOVANDJNSMOVANDJS23:UNSAM E24:25:PLUS:26:27:SAME:28:LOAD:29:30:31:CSEG32:MOV JMP TEST JS XOR MOV MOV I

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

当前位置:首页 > 办公文档 > 工作计划

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