1 / 86
文档名称:

第七章分支与转移程序.ppt

格式:ppt   大小:3,024KB   页数:86页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第七章分支与转移程序.ppt

上传人:文库新人 2022/2/13 文件大小:2.95 MB

下载得到文件列表

第七章分支与转移程序.ppt

相关文档

文档介绍

文档介绍:第七章分支与转移程序
第1页,本讲稿共86页
目的和要求
主要掌握各种转移指令或者循环指令的使用方法,能够在程序中使用各种程序结构。

掌握汇编语言程序设计的完整步骤,要求能够上机调试程序。
第2 两种转移指令的功能都不可忽视,在程序中都是经常使用的。
第11页,本讲稿共86页
(一)无条件转移指令
指令格式:JMP 目标地址
功能:无条件的修改IP或者CS、IP中的内容,改变下一条将要执行的指令地址。即跳转到目标地址继续执行程序。
标志位影响:无
第12页,本讲稿共86页
JMP L1
MOV AX,0

L1: MOV AX,0FFFFH

按照正常的执行流程,执行完JMP L1指令以后,应该执行MOV AX,0指令,但是由于程序执行流程已经改变到L1标号指明的地址,所以下一条将要执行的指令变成了MOV AX,0FFFFH指令。
第13页,本讲稿共86页
JMP指令的转移类型分为两种:段内转移和段间转移。
(1)段内转移
JMP指令本身和目标地址在同一个代码段内,这种转移只需要修改IP的内容,而不需要改变CS的内容。
1)段内直接转移
格式:JMP 标号
机器指令的格式 由两部分构成,OPCODE和DISP,OPCODE是操作码,DISP是一个8位或16位的补码
DISP表示的含义是标号地址相对于JMP指令的字节距离。
第14页,本讲稿共86页
DISP = 标号偏移量 – JMP指令偏移量
上面这个表达式的计算是汇编程序在汇编过程中完成的。如果没有汇编语言,直接使用机器指令编程,那么DISP的计算就必须由程序员来完成。
标号地址 > JMP指令地址:DISP > 0
标号地址 < JMP指令地址:DISP < 0
功能:IP <= (IP)+ DISP
第15页,本讲稿共86页
(IP)+DISP
注意这个加法,这是两个补码的加法。DISP可以是正数,也可以是负数,但是(IP)总是理解为正数。
把第16位(超出字的范围)理解为符号位,(IP)的第16位总是理解为0,DISP的第16位由它自己的符号位决定。
第16页,本讲稿共86页
举例:
(IP)=1100101001101011
DISP = 11100110
(IP)+DISP:
0 11001010 01101011
+ 1 11111111 11100110
0 11001010 01010001
注意,相加的结果总是一个正数,补码加法完毕以后应当重新把(IP)看作无符号数。
第17页,本讲稿共86页
段内直接转移在机器指令中又可以分为短跳转和长跳转两种情况。
指令中的DISP字段是由汇编程序在汇编过程中计算并生成的。
如果汇编程序计算出的DISP在-128—127范围内,那么生成的DISP只有一个字节。这种情况称为短跳转。
如果DISP超过了-128—127这个范围,那么生成的DISP字段将在指令中占用一个字。这种情况称为长跳转,转移范围为-32768——32767。段的最大空间就是65536字节,长跳转已经可以在整个代码段中任意的实现转移。
第18页,本讲稿共86页
2)段内间接转移
JMP指令针对的目标偏移量存放在16位的通用寄存器或字内存单元中。
指令格式:JMP 通用寄存器名称
JMP 字内存单元
功能:IP <= (通用寄存器)
IP <= (EA)
第19页,本讲稿共86页
例子:
JMP BX
功能:IP <=(BX)
JMP WORD PTR [SI]
功能:IP <= (DS:SI)
第20页,本讲稿共86页
注意直接段内转移和间接段内转移的区别。
直接段内转移:由机器指令的DISP字段给出目标地址相对于JMP指令的带符号字节距离,完成的功能是:IP <=(IP)+ DISP。
间接段内转移:由16位通用寄存器或字内存单元直接给出IP寄存器新的内容。
第21页,本讲稿共86页
格 式
举 例
注 释
JMP
通用寄存器
JMP BX
16位转向地址在BX中
JMP
内存单元
16位转向地址在VAR字型内存变量中
16位转向地址在BX所指向的内存变量中
段内间接寻址方式